36 #define INITIALTEXTSIZE 1024
43 static std::deque< CCopasiMessage > mMessageDeque;
53 if (mMessageDeque.empty())
57 return mMessageDeque.front();
62 if (mMessageDeque.empty())
66 return mMessageDeque.back();
71 if (mMessageDeque.empty())
76 mMessageDeque.pop_front();
83 if (mMessageDeque.empty())
88 mMessageDeque.pop_back();
95 std::string Text =
"";
98 while (!mMessageDeque.empty())
100 if (Text !=
"") Text +=
"\n";
102 Text += getMessage().
getText();
110 mMessageDeque.clear();
116 return mMessageDeque.size();
122 std::deque< CCopasiMessage >::const_iterator it = mMessageDeque.begin();
123 std::deque< CCopasiMessage >::const_iterator end = mMessageDeque.end();
125 for (; it != end; ++it)
126 if (it->getType() > HighestSeverity) HighestSeverity = it->getType();
128 return HighestSeverity;
133 std::deque< CCopasiMessage >::const_iterator it = mMessageDeque.begin();
134 std::deque< CCopasiMessage >::const_iterator end = mMessageDeque.end();
136 for (; it != end; ++it)
137 if (it->getNumber() == number)
return true;
161 const char *format, ...)
167 Text =
new char[TextSize + 1];
170 va_start(Arguments, format);
171 Printed = vsnprintf(Text, TextSize, format, Arguments);
174 while (Printed < 0 || TextSize < Printed)
178 (Printed < 0) ? TextSize *= 2 : TextSize = Printed;
179 Text =
new char[TextSize + 1];
182 va_start(Arguments, format);
183 Printed = vsnprintf(Text, TextSize, format, Arguments);
210 Text =
new char[TextSize + 1];
213 va_start(Arguments, number);
214 Printed = vsnprintf(Text, TextSize,
Messages[i].Text, Arguments);
217 while (Printed < 0 || TextSize < Printed)
221 (Printed < 0) ? TextSize *= 2 : TextSize = Printed;
222 Text =
new char[TextSize + 1];
225 va_start(Arguments, number);
226 Printed = vsnprintf(Text, TextSize,
Messages[i].Text, Arguments);
241 std::string Text =
mText;
282 mText =
">EXCEPTION ";
288 mText =
">RAW(filtered) ";
294 mText =
">TRACE(filtered) ";
300 mText =
">COMMANDLINE(filtered) ";
306 mText =
">WARNING(filtered) ";
312 mText =
">ERROR(filtered) ";
318 mText =
">EXCEPTION(filtered) ";
329 if (mMessageDeque.size() == 1 &&
333 mMessageDeque.push_back(*
this);
339 std::cerr <<
mText << std::endl;
341 #ifdef COPASI_DEBUG_TRACE
342 DebugFile <<
mText << std::endl;
343 #endif // COPASI_DEBUG_TRACE
366 std::string Search(
"\n");
367 std::string Replace(
"\n ");
368 std::string::size_type pos = 0;
372 pos =
mText.find(Search, pos);
374 if (pos == std::string::npos)
377 mText.replace(pos, Search.length(), Replace);
379 pos += Replace.length();
std::string LocalTimeStamp()
static const CCopasiMessage & peekLastMessage()
const std::string & getText() const
static std::string getAllMessageText(const bool &chronological=true)
const size_t & getNumber() const
static CCopasiMessage getFirstMessage()
static void setIsGUI(const bool &isGUI)
CCopasiMessage::Type mType
void handler(const bool &_throw=false)
static std::deque< CCopasiMessage > mMessageDeque
static const CCopasiMessage & peekFirstMessage()
static bool compareValue(const std::string &name, const CType &value)
const CCopasiMessage::Type & getType() const
CCopasiMessage & operator=(const CCopasiMessage &RHS)
static bool checkForMessage(const size_t &number)
static CCopasiMessage getLastMessage()
const MESSAGES Messages[]
static CCopasiMessage::Type getHighestSeverity()