Salome HOME
Issue #1843: Set parameters to message on request of the message string
[modules/shaper.git] / src / Events / Events_InfoMessage.cpp
1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
2
3 // File:        Events_InfoMessage.cpp
4 // Created:     16 June 2016
5 // Author:      Vitaly SMETANNIKOV
6
7 #include "Events_InfoMessage.h"
8
9 #ifdef WIN32
10 #pragma warning(disable : 4996) // for sprintf
11 #endif
12
13 void Events_InfoMessage::addParameter(double theParam) 
14
15   char aBuf[50];
16   int n = sprintf(aBuf, "%g", theParam);
17   std::string aStr(aBuf);
18   myParameters.push_back(aStr); 
19 }
20
21 void Events_InfoMessage::addParameter(int theParam) 
22
23   char aBuf[50];
24   int n = sprintf(aBuf, "%d", theParam);
25   std::string aStr(aBuf);
26   myParameters.push_back(aStr); 
27 }
28
29 void Events_InfoMessage::send() 
30
31   std::shared_ptr<Events_Message> aMsg(new Events_InfoMessage(*this));
32   Events_Loop::loop()->send(aMsg); 
33 }
34
35
36 std::string insertParameters(const std::string& theString, const std::list<std::string>& theParams)
37 {
38   std::string aResult = theString;
39   std::list<std::string>::const_iterator aIt;
40   int i;
41   char aBuf[20];
42   std::string aParam;
43   for (i=1, aIt = theParams.cbegin(); aIt != theParams.cend(); aIt++, i++) {
44     aParam = (*aIt);
45     sprintf(aBuf, "%d", i);
46     std::string aCode = std::string("%") + std::string(aBuf);
47     size_t aPos = aResult.find(aCode);
48     if (aPos != std::string::npos) {
49       std::string aFirst = aResult.substr(0, aPos);
50       std::string aLast = aResult.substr(aPos + aCode.length(), std::string::npos);
51       aResult = aFirst + aParam + aLast;
52     }
53   }
54   return aResult;
55 }
56
57 std::string Events_InfoMessage::messageString() const 
58
59   return insertParameters(myMessage, myParameters); 
60 }