- Main Page
- Classes
- Files
- Directories
- Examples

- File List
- File Members

# fbxpropertymap.h

Go to the documentation of this file.

    00001 /****************************************************************************************
    00002
    00003    Copyright (C) 2012 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_PROPERTY_MAP_H_
    00014 #define _FBXSDK_CORE_PROPERTY_MAP_H_
    00015
    00016 #include <fbxsdk/fbxsdk_def.h>
    00017
    00018 #include <fbxsdk/core/base/fbxmap.h>
    00019 #include <fbxsdk/core/fbxproperty.h>
    00020 #include <fbxsdk/core/fbxobject.h>
    00021
    00022 #include <fbxsdk/fbxsdk_nsbegin.h>
    00023
    00027 template <class K, class T, class Compare> class FBXSDK_DLL FbxMapExt
    00028 {
    00030 //
    00031 //  WARNING!
    00032 //
    00033 //  Anything beyond these lines may not be documented accurately and is
    00034 //  subject to change without notice.
    00035 //
    00037 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00038 private:
    00039     typedef FbxMap<K, T, Compare> FbxMapExtDef;
    00040     FbxMapExtDef mMap;
    00041 #endif // DOXYGEN_SHOULD_SKIP_THIS
    00042
    00043 public:
    00044     typedef typename FbxMapExtDef::RecordType* Iterator;
    00045
    00047     inline FbxMapExt()
    00048     {
    00049     }
    00050
    00055     inline void Add(const K& pKey, const T& pValue)
    00056     {
    00057         mMap.Insert(pKey, pValue);
    00058     }
    00059
    00064     inline Iterator Find(const K& pKey) const
    00065     {
    00066         return (Iterator)mMap.Find( pKey );
    00067     }
    00068
    00073     inline Iterator Find(const T& pValue) const
    00074     {
    00075         Iterator lIterator = GetFirst();
    00076         while (lIterator)
    00077         {
    00078             if (lIterator->GetValue()==pValue)
    00079             {
    00080                 return lIterator;
    00081             }
    00082             lIterator = GetNext(lIterator);
    00083         }
    00084         return 0;
    00085     }
    00086
    00090     inline void Remove(Iterator pIterator)
    00091     {
    00092         if (pIterator) mMap.Remove( pIterator->GetKey() );
    00093     }
    00094
    00098     inline Iterator GetFirst() const
    00099     {
    00100         return (Iterator)mMap.Minimum();
    00101     }
    00102
    00107     inline Iterator GetNext(Iterator pIterator) const
    00108     {
    00109         return (Iterator)pIterator ? pIterator->Successor() : 0;
    00110     }
    00111
    00114     inline void Clear()
    00115     {
    00116         mMap.Clear();
    00117     }
    00118
    00122     inline void Reserve(int pSize)
    00123     {
    00124         mMap.Reserve( pSize );
    00125     }
    00126
    00130     inline int GetCount() const
    00131     {
    00132         return mMap.GetSize();
    00133     }
    00134 };
    00135
    00139 template <class T, class Compare> class FBXSDK_DLL FbxObjectMap : public FbxMapExt<T,FbxObject*,Compare>
    00140 {
    00141 public:
    00143     inline FbxObjectMap()
    00144     {
    00145     }
    00146
    00151     inline FbxObject* Get(typename FbxMapExt<T,FbxObject*,Compare>::Iterator pIterator)
    00152     {
    00153         return pIterator ? pIterator->GetValue() : 0;
    00154     }
    00155 };
    00156
    00160 class FbxMapFbxStringCompare
    00161 {
    00162 public:
    00168     inline int operator()(const FbxString& pKeyA, const FbxString& pKeyB) const
    00169     {
    00170         return (pKeyA < pKeyB) ? -1 : ((pKeyB < pKeyA) ? 1 : 0);
    00171     }
    00172 };
    00173
    00177 class FBXSDK_DLL FbxObjectStringMap : public FbxObjectMap<class FbxString,class FbxMapFbxStringCompare>
    00178 {
    00179 public:
    00181     inline FbxObjectStringMap()
    00182     {
    00183     }
    00184 };
    00185
    00186 #include <fbxsdk/fbxsdk_nsend.h>
    00187
    00188 #endif /* _FBXSDK_CORE_PROPERTY_MAP_H_ */