Ipopt Documentation  
IpJournalist.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2009 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
6 
7 #ifndef __IPJOURNALIST_HPP__
8 #define __IPJOURNALIST_HPP__
9 
10 #include "IpoptConfig.h"
11 #include "IpTypes.hpp"
12 #include "IpReferenced.hpp"
13 #include "IpSmartPtr.hpp"
14 
15 #include <cstdarg>
16 #include <cstdio>
17 #include <string>
18 #include <vector>
19 #include <ostream>
20 
21 namespace Ipopt
22 {
23 
24 // forward declarations
25 class Journal;
26 class FileJournal;
27 
29 
32 {
34  J_NONE = 0,
48 };
49 
52 {
53  J_DBG = 0,
86 };
88 
117 {
118 public:
120 
123 
125  virtual ~Journalist();
127 
132 
134 #ifdef __GNUC__
135  __attribute__((format(printf, 4, 5)))
136 #endif
137  virtual void Printf(
138  EJournalLevel level,
139  EJournalCategory category,
140  const char* format,
141  ...
142  ) const;
143 
153  virtual void PrintStringOverLines(
154  EJournalLevel level,
155  EJournalCategory category,
156  Index indent_spaces,
157  Index max_length,
158  const std::string& line
159  ) const;
160 
162 #ifdef __GNUC__
163  __attribute__((format(printf, 5, 6)))
164 #endif
165  virtual void PrintfIndented(
166  EJournalLevel level,
167  EJournalCategory category,
168  Index indent_level,
169  const char* format,
170  ...
171  ) const;
172 
174  virtual void VPrintf(
175  EJournalLevel level,
176  EJournalCategory category,
177  const char* pformat,
178  va_list ap
179  ) const;
180 
182  virtual void VPrintfIndented(
183  EJournalLevel level,
184  EJournalCategory category,
185  Index indent_level,
186  const char* pformat,
187  va_list ap
188  ) const;
189 
197  virtual bool ProduceOutput(
198  EJournalLevel level,
199  EJournalCategory category
200  ) const;
201 
208  virtual void FlushBuffer() const;
210 
221 
223  virtual bool AddJournal(
224  const SmartPtr<Journal> jrnl
225  );
226 
232  const std::string& location_name,
233  const std::string& fname,
234  EJournalLevel default_level = J_WARNING
235  );
236 
242  const std::string& location_name
243  );
244 
246  virtual void DeleteAllJournals();
248 
249 private:
259 
262  const Journalist&
263  );
264 
266  void operator=(
267  const Journalist&
268  );
270 
271  //** Private Data Members. */
273  std::vector<SmartPtr<Journal> > journals_;
275 };
276 
283 {
284 public:
287  const std::string& name,
288  EJournalLevel default_level
289  );
290 
292  virtual ~Journal();
293 
295  virtual std::string Name();
296 
298  virtual void SetPrintLevel(
299  EJournalCategory category,
300  EJournalLevel level
301  );
302 
304  virtual void SetAllPrintLevels(
305  EJournalLevel level
306  );
307 
317 
319  virtual bool IsAccepted(
320  EJournalCategory category,
321  EJournalLevel level
322  ) const;
323 
325  virtual void Print(
326  EJournalCategory category,
327  EJournalLevel level,
328  const char* str
329  )
330  {
331  PrintImpl(category, level, str);
332  }
333 
335  virtual void Printf(
336  EJournalCategory category,
337  EJournalLevel level,
338  const char* pformat,
339  va_list ap
340  )
341  {
342  PrintfImpl(category, level, pformat, ap);
343  }
344 
346  virtual void FlushBuffer()
347  {
348  FlushBufferImpl();
349  }
351 
352 protected:
357 
359  virtual void PrintImpl(
360  EJournalCategory category,
361  EJournalLevel level,
362  const char* str
363  ) = 0;
364 
366  virtual void PrintfImpl(
367  EJournalCategory category,
368  EJournalLevel level,
369  const char* pformat,
370  va_list ap
371  ) = 0;
372 
374  virtual void FlushBufferImpl() = 0;
376 
377 private:
387 
390 
393  const Journal&
394  );
395 
397  void operator=(
398  const Journal&
399  );
401 
403  std::string name_;
404 
406  Index print_levels_[J_LAST_CATEGORY];
407 };
408 
416 {
417 public:
420  const std::string& name,
421  EJournalLevel default_level
422  );
423 
425  virtual ~FileJournal();
426 
434  virtual bool Open(
435  const char* fname
436  );
437 
438 protected:
443 
445  virtual void PrintImpl(
446  EJournalCategory /*category*/,
447  EJournalLevel /*level*/,
448  const char* str
449  );
450 
452  virtual void PrintfImpl(
453  EJournalCategory /*category*/,
454  EJournalLevel /*level*/,
455  const char* pformat,
456  va_list ap
457  );
458 
460  virtual void FlushBufferImpl();
462 
463 private:
473 
476 
479  const FileJournal&
480  );
481 
483  void operator=(
484  const FileJournal&
485  );
487 
489  FILE* file_;
490 };
491 
497 {
498 public:
501  const std::string& name,
502  EJournalLevel default_level
503  );
504 
506  virtual ~StreamJournal()
507  { }
508 
511  std::ostream* os
512  );
513 
514 protected:
519 
521  virtual void PrintImpl(
522  EJournalCategory /*category*/,
523  EJournalLevel /*level*/,
524  const char* str
525  );
526 
528  virtual void PrintfImpl(
529  EJournalCategory /*category*/,
530  EJournalLevel /*level*/,
531  const char* pformat,
532  va_list ap
533  );
534 
536  virtual void FlushBufferImpl();
538 
539 private:
549 
552 
555  const StreamJournal&
556  );
557 
559  void operator=(
560  const StreamJournal&
561  );
563 
565  std::ostream* os_;
566 
568  char buffer_[32768];
569 };
570 
571 } // namespace
572 
573 #endif
Ipopt::J_USER5
@ J_USER5
This can be used by the user's application.
Definition: IpJournalist.hpp:72
Ipopt::J_INSUPPRESSIBLE
@ J_INSUPPRESSIBLE
Definition: IpJournalist.hpp:33
Ipopt::Journalist::Printf
virtual void Printf(EJournalLevel level, EJournalCategory category, const char *format,...) const
Method to print a formatted string.
Ipopt::Journalist::Journalist
Journalist()
Constructor.
Ipopt::Journalist::DeleteAllJournals
virtual void DeleteAllJournals()
Delete all journals currently known by the journalist.
Ipopt::J_MAIN
@ J_MAIN
Definition: IpJournalist.hpp:55
Ipopt::StreamJournal::PrintfImpl
virtual void PrintfImpl(EJournalCategory, EJournalLevel, const char *pformat, va_list ap)
Printf to the designated output location.
Ipopt::Journal::Printf
virtual void Printf(EJournalCategory category, EJournalLevel level, const char *pformat, va_list ap)
Printf to the designated output location.
Definition: IpJournalist.hpp:335
Ipopt::J_USER10
@ J_USER10
This can be used by the user's application.
Definition: IpJournalist.hpp:77
Ipopt::FileJournal
FileJournal class.
Definition: IpJournalist.hpp:416
Ipopt::FileJournal::FileJournal
FileJournal(const std::string &name, EJournalLevel default_level)
Constructor.
Ipopt::J_MOREVECTOR
@ J_MOREVECTOR
Definition: IpJournalist.hpp:43
Ipopt::Journal::Journal
Journal(const Journal &)
Copy Constructor.
Ipopt::Journal::IsAccepted
virtual bool IsAccepted(EJournalCategory category, EJournalLevel level) const
Ask if a particular print level/category is accepted by the journal.
Ipopt::J_BARRIER_UPDATE
@ J_BARRIER_UPDATE
Definition: IpJournalist.hpp:57
Ipopt::J_USER7
@ J_USER7
This can be used by the user's application.
Definition: IpJournalist.hpp:74
Ipopt::Journalist::VPrintf
virtual void VPrintf(EJournalLevel level, EJournalCategory category, const char *pformat, va_list ap) const
Method to print a formatted string using the va_list argument.
Ipopt::J_WARNING
@ J_WARNING
Definition: IpJournalist.hpp:38
IpSmartPtr.hpp
Ipopt::J_SOLVE_PD_SYSTEM
@ J_SOLVE_PD_SYSTEM
Definition: IpJournalist.hpp:58
Ipopt::Journalist::PrintfIndented
virtual void PrintfIndented(EJournalLevel level, EJournalCategory category, Index indent_level, const char *format,...) const
Method to print a formatted string with indentation.
Ipopt::J_SOLUTION
@ J_SOLUTION
Definition: IpJournalist.hpp:63
Ipopt
This file contains a base class for all exceptions and a set of macros to help with exceptions.
Definition: IpInexactAlgBuilder.hpp:14
Ipopt::J_USER6
@ J_USER6
This can be used by the user's application.
Definition: IpJournalist.hpp:73
Ipopt::J_MATRIX
@ J_MATRIX
Definition: IpJournalist.hpp:44
Ipopt::J_SUMMARY
@ J_SUMMARY
Definition: IpJournalist.hpp:37
Ipopt::J_ALL
@ J_ALL
Definition: IpJournalist.hpp:46
Ipopt::J_USER9
@ J_USER9
This can be used by the user's application.
Definition: IpJournalist.hpp:76
Ipopt::J_LINE_SEARCH
@ J_LINE_SEARCH
Definition: IpJournalist.hpp:61
Ipopt::J_ERROR
@ J_ERROR
Definition: IpJournalist.hpp:35
Ipopt::Journal::Journal
Journal(const std::string &name, EJournalLevel default_level)
Constructor.
Ipopt::J_USER13
@ J_USER13
This can be used by the user's application.
Definition: IpJournalist.hpp:80
Ipopt::EJournalLevel
EJournalLevel
Print Level Enum.
Definition: IpJournalist.hpp:32
Ipopt::StreamJournal::operator=
void operator=(const StreamJournal &)
Default Assignment Operator.
Ipopt::Journalist::FlushBuffer
virtual void FlushBuffer() const
Method that flushes the current buffer for all Journalists.
Ipopt::J_FRAC_TO_BOUND
@ J_FRAC_TO_BOUND
Definition: IpJournalist.hpp:59
IPOPTLIB_EXPORT
#define IPOPTLIB_EXPORT
Definition: config_default.h:10
Ipopt::Journalist::PrintStringOverLines
virtual void PrintStringOverLines(EJournalLevel level, EJournalCategory category, Index indent_spaces, Index max_length, const std::string &line) const
Method to print a long string including indentation.
Ipopt::Journalist::ProduceOutput
virtual bool ProduceOutput(EJournalLevel level, EJournalCategory category) const
Method that returns true if there is a Journal that would write output for the given JournalLevel and...
Ipopt::Journalist::VPrintfIndented
virtual void VPrintfIndented(EJournalLevel level, EJournalCategory category, Index indent_level, const char *pformat, va_list ap) const
Method to print a formatted string with indentation, using the va_list argument.
Ipopt::Journal::~Journal
virtual ~Journal()
Destructor.
Ipopt::StreamJournal::SetOutputStream
void SetOutputStream(std::ostream *os)
Setting the output stream pointer.
Ipopt::J_MOREMATRIX
@ J_MOREMATRIX
Definition: IpJournalist.hpp:45
Ipopt::J_USER17
@ J_USER17
This can be used by the user's application.
Definition: IpJournalist.hpp:84
Ipopt::FileJournal::~FileJournal
virtual ~FileJournal()
Destructor.
Ipopt::Journal
Journal class (part of the Journalist implementation.).
Definition: IpJournalist.hpp:283
Ipopt::J_STATISTICS
@ J_STATISTICS
Definition: IpJournalist.hpp:54
Ipopt::Journal::FlushBufferImpl
virtual void FlushBufferImpl()=0
Flush output buffer.
Ipopt::J_NONE
@ J_NONE
Definition: IpJournalist.hpp:34
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:165
Ipopt::J_DOCUMENTATION
@ J_DOCUMENTATION
Definition: IpJournalist.hpp:64
Ipopt::J_USER8
@ J_USER8
This can be used by the user's application.
Definition: IpJournalist.hpp:75
Ipopt::J_USER15
@ J_USER15
This can be used by the user's application.
Definition: IpJournalist.hpp:82
IpTypes.hpp
Ipopt::EJournalCategory
EJournalCategory
Category Selection Enum.
Definition: IpJournalist.hpp:52
Ipopt::Journal::FlushBuffer
virtual void FlushBuffer()
Flush output buffer.
Definition: IpJournalist.hpp:346
Ipopt::J_VECTOR
@ J_VECTOR
Definition: IpJournalist.hpp:42
Ipopt::J_USER14
@ J_USER14
This can be used by the user's application.
Definition: IpJournalist.hpp:81
Ipopt::J_STRONGWARNING
@ J_STRONGWARNING
Definition: IpJournalist.hpp:36
Ipopt::Journal::SetPrintLevel
virtual void SetPrintLevel(EJournalCategory category, EJournalLevel level)
Set the print level for a particular category.
Ipopt::J_INITIALIZATION
@ J_INITIALIZATION
Definition: IpJournalist.hpp:56
IpReferenced.hpp
Ipopt::Index
ipindex Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:20
Ipopt::Journal::Journal
Journal()
Default Constructor.
Ipopt::J_LAST_LEVEL
@ J_LAST_LEVEL
Definition: IpJournalist.hpp:47
Ipopt::J_TIMING_STATISTICS
@ J_TIMING_STATISTICS
Definition: IpJournalist.hpp:66
Ipopt::Journal::PrintfImpl
virtual void PrintfImpl(EJournalCategory category, EJournalLevel level, const char *pformat, va_list ap)=0
Printf to the designated output location.
Ipopt::J_USER11
@ J_USER11
This can be used by the user's application.
Definition: IpJournalist.hpp:78
IpoptConfig.h
Ipopt::Journal::Name
virtual std::string Name()
Get the name of the Journal.
Ipopt::Journal::Print
virtual void Print(EJournalCategory category, EJournalLevel level, const char *str)
Print to the designated output location.
Definition: IpJournalist.hpp:325
Ipopt::FileJournal::FlushBufferImpl
virtual void FlushBufferImpl()
Flush output buffer.
Ipopt::Journal::SetAllPrintLevels
virtual void SetAllPrintLevels(EJournalLevel level)
Set the print level for all category.
Ipopt::Journalist
Class responsible for all message output.
Definition: IpJournalist.hpp:117
Ipopt::StreamJournal::StreamJournal
StreamJournal(const std::string &name, EJournalLevel default_level)
Constructor.
Ipopt::J_DETAILED
@ J_DETAILED
Definition: IpJournalist.hpp:40
Ipopt::StreamJournal::FlushBufferImpl
virtual void FlushBufferImpl()
Flush output buffer.
Ipopt::StreamJournal::PrintImpl
virtual void PrintImpl(EJournalCategory, EJournalLevel, const char *str)
Print to the designated output location.
Ipopt::Journal::operator=
void operator=(const Journal &)
Default Assignment Operator.
Ipopt::FileJournal::Open
virtual bool Open(const char *fname)
Open a new file for the output location.
Ipopt::FileJournal::PrintImpl
virtual void PrintImpl(EJournalCategory, EJournalLevel, const char *str)
Print to the designated output location.
Ipopt::FileJournal::file_
FILE * file_
FILE pointer for the output destination.
Definition: IpJournalist.hpp:489
Ipopt::FileJournal::operator=
void operator=(const FileJournal &)
Default Assignment Operator.
Ipopt::J_USER12
@ J_USER12
This can be used by the user's application.
Definition: IpJournalist.hpp:79
Ipopt::Journalist::AddFileJournal
virtual SmartPtr< Journal > AddFileJournal(const std::string &location_name, const std::string &fname, EJournalLevel default_level=J_WARNING)
Add a new FileJournal.
Ipopt::FileJournal::FileJournal
FileJournal(const FileJournal &)
Copy Constructor.
Ipopt::J_LINEAR_ALGEBRA
@ J_LINEAR_ALGEBRA
Definition: IpJournalist.hpp:60
Ipopt::J_HESSIAN_APPROXIMATION
@ J_HESSIAN_APPROXIMATION
Definition: IpJournalist.hpp:62
Ipopt::Journalist::AddJournal
virtual bool AddJournal(const SmartPtr< Journal > jrnl)
Add a new journal.
Ipopt::StreamJournal
StreamJournal class.
Definition: IpJournalist.hpp:497
Ipopt::Journalist::Journalist
Journalist(const Journalist &)
Copy Constructor.
Ipopt::FileJournal::PrintfImpl
virtual void PrintfImpl(EJournalCategory, EJournalLevel, const char *pformat, va_list ap)
Printf to the designated output location.
Ipopt::Journalist::~Journalist
virtual ~Journalist()
Destructor...
Ipopt::FileJournal::FileJournal
FileJournal()
Default Constructor.
Ipopt::J_LAST_CATEGORY
@ J_LAST_CATEGORY
Definition: IpJournalist.hpp:85
Ipopt::Journalist::GetJournal
virtual SmartPtr< Journal > GetJournal(const std::string &location_name)
Get an existing journal.
Ipopt::J_MOREDETAILED
@ J_MOREDETAILED
Definition: IpJournalist.hpp:41
Ipopt::J_USER_APPLICATION
@ J_USER_APPLICATION
This can be used by the user's application.
Definition: IpJournalist.hpp:67
Ipopt::Journalist::operator=
void operator=(const Journalist &)
Default Assignment Operator.
Ipopt::StreamJournal::os_
std::ostream * os_
pointer to output stream for the output destination
Definition: IpJournalist.hpp:565
Ipopt::J_ITERSUMMARY
@ J_ITERSUMMARY
Definition: IpJournalist.hpp:39
Ipopt::J_DBG
@ J_DBG
Definition: IpJournalist.hpp:53
Ipopt::Journalist::journals_
std::vector< SmartPtr< Journal > > journals_
Definition: IpJournalist.hpp:273
Ipopt::Journal::name_
std::string name_
Name of the output location.
Definition: IpJournalist.hpp:403
Ipopt::J_USER1
@ J_USER1
This can be used by the user's application.
Definition: IpJournalist.hpp:68
Ipopt::Journal::PrintImpl
virtual void PrintImpl(EJournalCategory category, EJournalLevel level, const char *str)=0
Print to the designated output location.
Ipopt::J_USER3
@ J_USER3
This can be used by the user's application.
Definition: IpJournalist.hpp:70
Ipopt::StreamJournal::StreamJournal
StreamJournal()
Default Constructor.
Ipopt::J_USER4
@ J_USER4
This can be used by the user's application.
Definition: IpJournalist.hpp:71
Ipopt::J_USER2
@ J_USER2
This can be used by the user's application.
Definition: IpJournalist.hpp:69
Ipopt::ReferencedObject
Storing the reference count of all the smart pointers that currently reference it.
Definition: IpReferenced.hpp:170
Ipopt::J_USER16
@ J_USER16
This can be used by the user's application.
Definition: IpJournalist.hpp:83
Ipopt::StreamJournal::StreamJournal
StreamJournal(const StreamJournal &)
Copy Constructor.
Ipopt::J_NLP
@ J_NLP
Definition: IpJournalist.hpp:65
Ipopt::StreamJournal::~StreamJournal
virtual ~StreamJournal()
Destructor.
Definition: IpJournalist.hpp:506