00001
00010 #ifndef HASTRING_H
00011 #define HASTRING_H
00012
00013 #if defined(_MSC_VER)
00014 #pragma warning (disable:4786)
00015 #endif
00016
00017
00018 #include <string>
00019
00020 #if defined(_MSC_VER)
00021 using namespace std;
00022 #define _stricmp stricmp
00023 #if !defined(DllImport)
00024 #define DllImport __declspec( dllimport )
00025 #endif
00026 #if !defined(DllExport)
00027 #define DllExport __declspec( dllexport )
00028 #endif
00029 #endif
00030
00031 #include "hastl.h"
00032
00033 class HaString: public string
00035 {
00036 public:
00037 HaString() {}
00038 HaString(const string& bas_str): string(bas_str) {}
00039 HaString(const HaString& str): string(str) {}
00040 HaString(const char* s): string(s) {}
00041 HaString(const char* s, size_type n): string(s,n) {}
00042 virtual ~HaString() {}
00043
00044 const char* trunc_space();
00045 void convert_to_upper();
00046 void convert_to_lower();
00047
00048 static HaString GetDirFromFileName(HaString fname);
00049 static HaString GetPrefixFromFullName(HaString fname);
00050 static HaString GetExtFromFileName(HaString fname);
00051
00052 };
00053
00054 class StrDoubleMap;
00055
00056 class StrDoubleMap_itr
00058 {
00059 public:
00060 StrDoubleMap_itr( StrDoubleMap& new_map);
00061 StrDoubleMap_itr( StrDoubleMap_itr& ref);
00062
00063 HaString GetKey();
00064 double GetVal();
00065 int GetFirst();
00066 int GetNext();
00067
00068 protected:
00069 map<HaString, double, less<HaString> >::iterator itr;
00070 StrDoubleMap& int_map;
00071 };
00072
00073 class StrDoubleMap: public map<HaString, double, less<HaString> >
00075 {
00076 public:
00077
00078 typedef StrDoubleMap_itr iterator;
00079
00080 void clear();
00081 int count(const char* str);
00082 int size();
00083
00084 double GetVal(const char* str);
00085 void SetVal(const char* str, double val);
00086 int ierr;
00087 };
00088
00089 class StrStrMap;
00090
00091 class StrStrMap_itr
00093 {
00094 public:
00095 StrStrMap_itr( StrStrMap& new_map);
00096 StrStrMap_itr( StrStrMap_itr& ref);
00097
00098 const char* GetKey();
00099 const char* GetVal();
00100 int GetFirst();
00101 int GetNext();
00102
00103 protected:
00104 map<HaString, HaString, less<HaString> >::iterator itr;
00105 StrStrMap& int_map;
00106 };
00107
00108 class StrStrMap: public map<HaString, HaString, less<HaString> >
00110 {
00111 public:
00112
00113 typedef StrStrMap_itr iterator;
00114
00115 void clear();
00116 int count(const char* str);
00117 int size();
00118
00119 const char* GetVal(const char* str);
00120 void SetVal(const char* str, const char* val);
00121 int ierr;
00122
00123 };
00124
00125 class StrVec: public vector<HaString>
00127 {
00128 public:
00129 StrVec() {}
00130 StrVec(size_type n): vector<HaString>(n) {}
00131 StrVec(const vector<HaString>& str_vec): vector<HaString>(str_vec) {}
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141 const char* GetVal(size_t idx);
00142 void SetVal(size_t idx, const char* val);
00143
00144 };
00145
00146
00147 #if defined(linux) || defined(__DECCXX)
00148 extern int _fstrnicmp(const char *s1, const char *s2, size_t n);
00149 #endif
00150
00151 #if !defined(_MSC_VER)
00152 extern int stricmp( const char* str1, const char* str2);
00153
00154 #endif
00155
00156 extern int strcmp_trunc(const char* str1, const char* str2);
00157
00158 extern int strcpy_to_fort(char* str_fort, const char* c_str, int len_fort);
00159
00160 extern int stricmp_trunc(const char* str1, const char* str2);
00161
00162 #endif