00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifdef WIN32
00020 #pragma warning (disable : 4786)
00021 #endif
00022
00023 #if !defined(_TYPEMAPPING_H____OF_AXIS_INCLUDED_)
00024 #define _TYPEMAPPING_H____OF_AXIS_INCLUDED_
00025
00026 #include <axis/GDefine.hpp>
00027 #include <map>
00028 #include <string>
00029
00030 AXIS_CPP_NAMESPACE_START
00031 using namespace std;
00032
00033 typedef enum XSDTYPETag
00034 { XSD_UNKNOWN=1, XSD_INT, XSD_FLOAT, XSD_STRING, XSD_LONG, XSD_SHORT, \
00035 XSD_BYTE, XSD_UNSIGNEDLONG, \
00036 XSD_BOOLEAN, XSD_UNSIGNEDINT, XSD_UNSIGNEDSHORT, \
00037 XSD_UNSIGNEDBYTE, \
00038 XSD_DOUBLE, XSD_DECIMAL, XSD_DURATION, \
00039 XSD_DATETIME, XSD_TIME, XSD_DATE, \
00040 XSD_GYEARMONTH, XSD_GYEAR, XSD_GMONTHDAY, XSD_GDAY, \
00041 XSD_GMONTH, XSD_HEXBINARY, \
00042 XSD_BASE64BINARY, XSD_ANYURI, XSD_QNAME, XSD_NOTATION, \
00043 XSD_INTEGER, \
00044 XSD_ARRAY, USER_TYPE, XSD_NMTOKEN, XSD_ANY, XSD_NONNEGATIVEINTEGER, \
00045 XSD_POSITIVEINTEGER, XSD_NONPOSITIVEINTEGER, XSD_NEGATIVEINTEGER, \
00046 XSD_NORMALIZEDSTRING, XSD_TOKEN, XSD_LANGUAGE, XSD_NAME, \
00047 XSD_NCNAME, XSD_ID, XSD_IDREF, XSD_IDREFS, XSD_ENTITY, \
00048 XSD_ENTITIES, XSD_NMTOKENS, ATTACHMENT \
00049 } XSDTYPE;
00050
00062 class TypeMapping
00063 {
00064 public:
00065 static XSDTYPE map(const AxisXMLCh* sType);
00066 static void initialize();
00067 static void uninitialize();
00068
00069 #if (defined(AIX) || (defined(_MSC_VER) && _MSC_VER >= 1300) || defined( __OS400__ ) || defined(__sun))
00070 static std::map<std::string, XSDTYPE> m_sTypeMap;
00071 #else
00072 static std::map<const std::string, XSDTYPE> m_sTypeMap;
00073 #endif
00074 static volatile bool m_bInit;
00075 TypeMapping();
00076 virtual ~TypeMapping();
00077
00078 };
00079
00080 AXIS_CPP_NAMESPACE_END
00081
00082 #endif