00001
00007
00008
00009 #include "message.h"
00010 #include <iostream>
00011 #include <stdio.h>
00012
00016 CMessage * CMessage::getCMessage()
00017 {
00018 static CMessage __me;
00019 return & __me;
00020 }
00021
00025 CMessage::CMessage(): show_info(false), show_warn(true), _constructorArgument("") {}
00026
00028 CMessage::CMessage(string msg): show_info(false), show_warn(true), _constructorArgument(msg) {}
00029
00031 CMessage& CMessage::operator<<(string str)
00032 {
00033 _queue = _queue + str;
00034 return *this;
00035 }
00036
00037 CMessage& CMessage::operator<<(const char* str)
00038 {
00039 _queue = _queue + str;
00040 return *this;
00041 }
00042
00043 CMessage& CMessage::operator<<(int in)
00044 {
00045 char tmp[100];
00046 if(_hex) {
00047 sprintf(tmp,"%x",in);
00048 }else{
00049 sprintf(tmp,"%i",in);
00050 }
00051 _queue = _queue + tmp;
00052 return *this;
00053 }
00054
00055 CMessage& CMessage::operator<<(long in)
00056 {
00057 char tmp[100];
00058 if(_hex) {
00059 sprintf(tmp,"%lx",in);
00060 }else{
00061 sprintf(tmp,"%li",in);
00062 }
00063 _queue = _queue + tmp;
00064 return *this;
00065 }
00066
00067 CMessage& CMessage::operator<<(double in)
00068 {
00069 char tmp[100];
00070 sprintf(tmp,"%f",in);
00071 _queue = _queue + tmp;
00072 return *this;
00073 }
00074
00075 CMessage& CMessage::operator<<(level lev)
00076 {
00077 _level = lev;
00078 return *this;
00079 }
00080
00081 CMessage& CMessage::operator<<(cntl test)
00082 {
00083 switch(test)
00084 {
00085 case hex:
00086 _hex=true;
00087 break;
00088 case dec:
00089 _hex=false;
00090 break;
00091 case endm:
00092 if(_constructorArgument==""){
00093 if(_level==info && CMessage::show_info) {cout<<"Info::"<<_queue<<endl;}
00094 if(_level==warning && CMessage::show_warn) {cerr<<"Warning::"<<_queue<<endl;}
00095 if(_level==severe) {cerr<<"SevereError::"<<_queue<<endl;}
00096 if(_level==fatal) {cerr<<"FatalError::"<<_queue<<endl;}
00097 }else{
00098 cout<<"other strings not implemented yet"<<endl;
00099 }
00100 _queue="";
00101 break;
00102 default:
00103 cerr<<"ERROR: Problem in message passing system "<<__FILE__<<":"<<__LINE__<<endl;
00104 }
00105 return *this;
00106 }
00107