00001
00002
00003
00004
00005
00006
00008
00009 #include "StMessTypeList.h"
00010 #include "StMessageStream.h"
00011 #include <ctype.h>
00012
00013 StMessTypePair::StMessTypePair(const char* ty, const char* te) :
00014 type(ty),
00015 text(te) {}
00016 StMessTypePair::~StMessTypePair() {}
00017
00018 StMessTypeList* StMessTypeList::mInstance = 0;
00019
00020
00021 StMessTypeList::StMessTypeList() : messList() {
00022 }
00023
00024 StMessTypeList::~StMessTypeList() {
00025 for (size_t i=0; i<messList.size(); i++)
00026 delete (messList[i]);
00027 }
00028
00029 StMessTypeList* StMessTypeList::Instance() {
00030 if (!mInstance) {
00031 mInstance = new StMessTypeList;
00032 }
00033 return mInstance;
00034 }
00035
00036 int StMessTypeList::AddType(const char* type, const char* text) {
00037 StMessTypePair* temp = FindType(type);
00038 if (temp) return 0;
00039 if (islower(*type)) {
00040 *(const_cast<char*> (type)) = toupper(*type);
00041 }
00042 temp = new StMessTypePair(type,text);
00043 messList.push_back(temp);
00044 return messList.size();
00045 }
00046
00047 int StMessTypeList::FindTypeNum(const char* type) {
00048 StMessTypeVecIter iter;
00049 char ty=toupper(*type);
00050 int j=0;
00051 for (iter=messList.begin(); iter!=messList.end(); iter++) {
00052 j++;
00053 if (*((*iter)->Type())==ty) {return j;}
00054 }
00055 return 0;
00056 }
00057
00058 StMessTypePair* StMessTypeList::FindType(const char* type) {
00059 StMessTypeVecIter iter;
00060 char ty=toupper(*type);
00061 for (iter=messList.begin(); iter!=messList.end(); iter++) {
00062 if (*((*iter)->Type())==ty) {return (*iter);}
00063 }
00064 return 0;
00065 }
00066
00067 const char* StMessTypeList::FindNumType(size_t typeNum) {
00068 if ((typeNum < 1) || (typeNum > messList.size())) return 0;
00069 return messList[(typeNum - 1)]->Type();
00070 }
00071
00072 const char* StMessTypeList::FindNumText(size_t typeNum) {
00073 if ((typeNum < 1) || (typeNum > messList.size())) return 0;
00074 return messList[(typeNum - 1)]->Text();
00075 }
00076
00077 int StMessTypeList::ListTypes() {
00078 StMessTypeVecIter iter;
00079 myout << "List of StMessage types:\n"
00080 << "--------------------------------------------------------"
00081 << endl;
00082 for (iter=messList.begin(); iter!=messList.end(); iter++) {
00083 StMessTypePair* current = (*iter);
00084 myout << " " << current->Type() << " : " << current->Text() << endl;
00085 }
00086 return messList.size();
00087 }
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120