00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef HAVE_CONFIG_H
00017 #include "torc/generic/config.h"
00018 #endif
00019
00020 #include <cstdio>
00021
00022 #include "torc/generic/util/MessageTable.hpp"
00023 #include "torc/generic/util/Message.hpp"
00024
00025 namespace torc {
00026
00027 namespace generic {
00028
00029
00030
00031
00032
00033
00034 std::string
00035 MessageTable::getMessage(MessageId inId) const throw() {
00036 MessageContainer::const_iterator msg
00037 = mMessages.find( inId );
00038 if( msg == mMessages.end() )
00039 {
00040 return std::string();
00041 }
00042 const Message message( (*msg).second );
00043 char msgString[BUFSIZ];
00044 int nbytes;
00045 switch( message.getSeverity() )
00046 {
00047 case eMessageSeveritySuppressed:
00048 {
00049 nbytes = snprintf( msgString, BUFSIZ,
00050 "SUPPRESSED ");
00051 break;
00052 }
00053 case eMessageSeverityInfo:
00054 {
00055 nbytes = snprintf( msgString, BUFSIZ, "INFO ");
00056 break;
00057 }
00058 case eMessageSeverityError:
00059 {
00060 nbytes = snprintf( msgString, BUFSIZ, "ERROR ");
00061 break;
00062 }
00063 case eMessageSeverityWarning:
00064 {
00065 nbytes = snprintf( msgString, BUFSIZ,
00066 "WARNING ");
00067 break;
00068 }
00069 }
00070 const std::string &actualMsg = message.getMessage();
00071 nbytes = snprintf( msgString + nbytes, BUFSIZ - nbytes,
00072 "%d : %s", inId, actualMsg.c_str() );
00073 if( nbytes >= BUFSIZ )
00074 {
00075 return std::string();
00076 }
00077 return msgString;
00078 }
00079
00080
00081
00082
00083
00084
00085
00086 void
00087 MessageTable::changeMessageString(MessageId inId,
00088 const Message &inMessage) throw(Error) {
00089 mMessages[ inId ] = inMessage;
00090 }
00091
00092
00093
00094
00095
00096
00097
00098 void
00099 MessageTable::changeMessageSeverity(
00100 MessageId inId, MessageSeverity inSeverity) throw() {
00101 MessageContainer::const_iterator msg
00102 = mMessages.find( inId );
00103 if( msg != mMessages.end() )
00104 {
00105 mMessages[inId].setSeverity( inSeverity );
00106 }
00107 }
00108
00109
00110
00111
00112 MessageTable *
00113 MessageTable::instance()
00114 {
00115 static MessageTable singletonObject;
00116 return &singletonObject;
00117 }
00118
00119 MessageTable::MessageTable()
00120 :mMessages() {
00121
00122 mMessages[ eMessageIdErrorArrayIndexSizeMismatch ]
00123 = Message( "Array index size does not match array dimensions", eMessageSeverityError );
00124
00125 mMessages[ eMessageIdErrorArrayIndexOutOfBounds ]
00126 = Message( "Array index out of bounds", eMessageSeverityError );
00127
00128 mMessages[ eMessageIdErrorEmptyArray ]
00129 = Message( "Empty array", eMessageSeverityError );
00130
00131 mMessages[ eMessageIdErrorNullChildfactory ]
00132 = Message( "Null child factory", eMessageSeverityError );
00133
00134 mMessages[ eMessageIdErrorEmptyItemName ]
00135 = Message( "Empty item name", eMessageSeverityError );
00136
00137 mMessages[ eMessageIdErrorItemAlreadyExists ]
00138 = Message( "Item already exists", eMessageSeverityError );
00139
00140 mMessages[ eMessageIdErrorItemNotFound ]
00141 = Message( "Item not found", eMessageSeverityError );
00142
00143 mMessages[ eMessageIdErrorPointerToItemDoesNotExist ]
00144 = Message( "Pointer to item does not exist", eMessageSeverityError );
00145
00146 mMessages[ eMessageIdErrorItemSizeMismatch ]
00147 = Message( "Item size does not match", eMessageSeverityError );
00148
00149 mMessages[ eMessageIdErrorConnectionInvalid ]
00150 = Message( "Provided connection is invalid", eMessageSeverityError );
00151
00152 mMessages[ eMessageIdErrorTypeCast ]
00153 = Message( "Type cast not possible", eMessageSeverityError );
00154
00155 mMessages[ eMessageIdErrorValueNotSet ]
00156 = Message( "Value not set", eMessageSeverityError );
00157
00158 mMessages[ eMessageIdErrorCompositionTypeMismatch ]
00159 = Message( "Composition type mismatch", eMessageSeverityError );
00160 mMessages[ eMessageIdParserError ]
00161 = Message( "Error from parser", eMessageSeverityError );
00162
00163 mMessages[ eMessageIdParserWarning ]
00164 = Message( "Warning from parser", eMessageSeverityWarning );
00165 mMessages[ eMessageIdErrorNullPointer ]
00166 = Message( "Null Pointer detected", eMessageSeverityError );
00167 mMessages[ eMessageIdErrorUnsupoortedOperation ]
00168 = Message( "Operation is unsupported on class", eMessageSeverityError );
00169 }
00170
00171 MessageTable::~MessageTable() throw() {
00172 }
00173
00174
00175 }
00176
00177 }