00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __SMAGJOURNAL_HPP__
00011 #define __SMAGJOURNAL_HPP__
00012
00013 #include "GAMSlinksConfig.h"
00014
00015
00016
00017 #ifdef HAVE_CSTDIO
00018 #include <cstdio>
00019 #endif
00020 #ifdef HAVE_CSTDARG
00021 #include <cstdarg>
00022 #endif
00023 #include "smag.h"
00024
00025 #include "IpJournalist.hpp"
00026
00027 using namespace Ipopt;
00028
00031 class SmagJournal : public Journal {
00032 public:
00035 SmagJournal(smagHandle_t smag_, unsigned int smag_mask_, const char* name, EJournalLevel default_level)
00036 : Journal(name, default_level), smag(smag_), smag_mask(smag_mask_)
00037 { }
00038
00041 ~SmagJournal() { }
00042
00043 protected:
00044 virtual void PrintImpl(const char* str) {
00045 smagStdOutputPrintX(smag, smag_mask, str, 0);
00046 }
00047
00048 virtual void PrintfImpl(const char* pformat, va_list ap);
00049
00050 virtual void FlushBufferImpl() {
00051 smagStdOutputFlush(smag, SMAG_ALLMASK);
00052 }
00053
00054 private:
00055 smagHandle_t smag;
00056 unsigned int smag_mask;
00064 SmagJournal();
00065 SmagJournal(const SmagJournal&);
00066 void operator=(const SmagJournal&);
00067 };
00068
00069 #endif // __SMAGJOURNAL_HPP__