00001 /**************************************************************************************** 00002 00003 Copyright (C) 2013 Autodesk, Inc. 00004 All rights reserved. 00005 00006 Use of this software is subject to the terms of the Autodesk license agreement 00007 provided at the time of installation or download, or which otherwise accompanies 00008 this software in either electronic or hard copy form. 00009 00010 ****************************************************************************************/ 00011 00013 #ifndef _FBXSDK_CORE_SYMBOL_H_ 00014 #define _FBXSDK_CORE_SYMBOL_H_ 00015 00016 #include <fbxsdk/fbxsdk_def.h> 00017 00018 #include <fbxsdk/core/base/fbxstring.h> 00019 #include <fbxsdk/core/base/fbxmap.h> 00020 00021 #include <fbxsdk/fbxsdk_nsbegin.h> 00022 00025 class FBXSDK_DLL FbxSymbol 00026 { 00027 public: 00032 00038 FbxSymbol(const char* pName, const char* pRealm); 00039 00041 ~FbxSymbol(); 00043 00052 unsigned int GetID() const; 00054 00062 bool operator==(FbxSymbol const& pSymbol) const; 00063 00067 bool operator!=(FbxSymbol const& pSymbol) const; 00069 00070 private: 00071 unsigned int mID; 00072 }; 00073 00074 typedef FbxMap< FbxString, int, FbxStringCompare > FbxStringSymbolMap; 00075 00076 00081 class FBXSDK_DLL FbxStringSymbol 00082 { 00083 public: 00088 00090 FbxStringSymbol(); 00091 00096 FbxStringSymbol(const char* pName); 00097 00099 FbxStringSymbol(const FbxStringSymbol& pOther); 00100 00102 ~FbxStringSymbol(); 00104 00106 inline operator const char*() const { return mItem ? ((const char*) mItem->GetKey()) : NULL; } 00107 00108 00112 inline bool IsEmpty() const 00113 { 00114 return !mItem || mItem->GetKey().IsEmpty(); 00115 } 00116 00118 static void AllocateGlobalStringSymbolMap(); 00119 00121 static void FreeGlobalStringSymbolMap(); 00122 00127 FbxStringSymbol& operator=(const char* pName); 00128 00129 private: 00130 FbxStringSymbolMap::RecordType* mItem; 00131 }; 00132 00133 #include <fbxsdk/fbxsdk_nsend.h> 00134 00135 #endif /* _FBXSDK_CORE_SYMBOL_H_ */