00001 00002 00003 00004 00005 00006 00007 00008 00009 00010 00011 00012 00013 00014 00015 00016 00017 00018 00019 00020 00021 00022 00023 00024 00025 00026 00027 00028 00029 00030 00031 00032 00033 00034 00035 00036 00037 00038 00039 00040 00041 00042 00043 00044 00045 00046 00047 00048 00049 00050 00051 00052 00053 00054 00055
00056
00057
00058 #if !defined(TRANSENAMEMAP_HPP)
00059 #define TRANSENAMEMAP_HPP
00060
00061 #include <util/TransService.hpp>
00062 #include <util/XMLString.hpp>
00063
00064
00065
00066
00067
00068
00069 class ENameMap
00070 {
00071 public :
00072
00073
00074
00075 ~ENameMap()
00076 {
00077 delete [] fEncodingName;
00078 }
00079
00080
00081
00082
00083
00084
00085 virtual XMLTranscoder* makeNew
00086 (
00087 const unsigned int blockSize
00088 ) const = 0;
00089
00090
00091
00092
00093
00094 const XMLCh* getKey() const
00095 {
00096 return fEncodingName;
00097 }
00098
00099
00100 protected :
00101
00102
00103
00104 ENameMap(const XMLCh* const encodingName) :
00105
00106 fEncodingName(XMLString::replicate(encodingName))
00107 {
00108 }
00109
00110
00111 private :
00112
00113
00114
00115 ENameMap();
00116 ENameMap(const ENameMap&);
00117 void operator=(const ENameMap&);
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127 XMLCh* fEncodingName;
00128 };
00129
00130
00131 template <class TType> class ENameMapFor : public ENameMap
00132 {
00133 public :
00134
00135
00136
00137 ENameMapFor(const XMLCh* const encodingName);
00138 ~ENameMapFor();
00139
00140
00141
00142
00143
00144 virtual XMLTranscoder* makeNew(const unsigned int blockSize) const;
00145
00146
00147 private :
00148
00149
00150
00151 ENameMapFor();
00152 ENameMapFor(const ENameMapFor<TType>&);
00153 void operator=(const ENameMapFor<TType>&);
00154 };
00155
00156
00157 template <class TType> class EEndianNameMapFor : public ENameMap
00158 {
00159 public :
00160
00161
00162
00163 EEndianNameMapFor(const XMLCh* const encodingName, const bool swapped);
00164 ~EEndianNameMapFor();
00165
00166
00167
00168
00169
00170 virtual XMLTranscoder* makeNew(const unsigned int blockSize) const;
00171
00172
00173 private :
00174
00175
00176
00177 EEndianNameMapFor(const EEndianNameMapFor<TType>&);
00178 void operator=(const EEndianNameMapFor<TType>&);
00179
00180
00181
00182
00183
00184
00185
00186
00187
00188 bool fSwapped;
00189 };
00190
00191
00192 #if !defined(XERCES_TMPLSINC)
00193 #include <util/TransENameMap.c>
00194 #endif
00195
00196 #endif