- Main Page
- Classes
- Files
- Directories
- Examples

- File List
- File Members

# fbxembeddedfilesaccumulator.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_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_
    00014 #define _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_
    00015
    00016 #include <fbxsdk/fbxsdk_def.h>
    00017
    00018 #include <fbxsdk/utils/fbxprocessor.h>
    00019 #include <fbxsdk/core/base/fbxmap.h>
    00020
    00021 #include <fbxsdk/fbxsdk_nsbegin.h>
    00022
    00028 class FBXSDK_DLL FbxEmbeddedFilesAccumulator : public FbxProcessor
    00029 {
    00030 public:
    00031
    00040     struct PropertyUrlIndex
    00041     {
    00042         FbxString mPropName;
    00043         int     mIndex;
    00044
    00045         PropertyUrlIndex() : mIndex(0)
    00046         {
    00047         }
    00048
    00049         PropertyUrlIndex(const FbxString& pUrl, int pIndex)
    00050             : mPropName(pUrl)
    00051             , mIndex(pIndex)
    00052         {
    00053         }
    00054     };
    00055
    00057     struct PropertyUrlIndexCompare
    00058     {
    00059         inline int operator()(const PropertyUrlIndex& pUrl1, const PropertyUrlIndex& pUrl2) const
    00060         {
    00061             if( pUrl1.mPropName < pUrl2.mPropName )
    00062             {
    00063                 return -1;
    00064             }
    00065             if( pUrl2.mPropName < pUrl1.mPropName )
    00066             {
    00067                 return 1;
    00068             }
    00069
    00070             if(pUrl1.mIndex < pUrl2.mIndex)
    00071             {
    00072                 return -1;
    00073             }
    00074             if(pUrl2.mIndex < pUrl1.mIndex)
    00075             {
    00076                 return 1;
    00077             }
    00078
    00079             return 0;
    00080         }
    00081     };
    00082
    00083     typedef FbxSet2<PropertyUrlIndex, PropertyUrlIndexCompare> PropertyUrlIndexSet;
    00084
    00085     typedef FbxMap<FbxObject*, PropertyUrlIndexSet> ObjectPropertyMap;
    00086
    00087     struct EmbeddedFileInfo
    00088     {
    00089         FbxString                 mOriginalPropertyUrl;
    00090         ObjectPropertyMap   mConsumers;
    00091     };
    00093
    00100     typedef FbxMap<FbxString, EmbeddedFileInfo>     EmbeddedFilesMap;
    00101
    00102     EmbeddedFilesMap   mEmbeddedFiles;
    00104
    00105 public:
    00106
    00116     FbxEmbeddedFilesAccumulator(FbxManager& pManager, const char* pName, FbxSet2<FbxString>& pPropertyFilter);
    00117     virtual ~FbxEmbeddedFilesAccumulator();
    00118
    00120     //
    00121     //  WARNING!
    00122     //
    00123     //  Anything beyond these lines may not be documented accurately and is
    00124     //  subject to change without notice.
    00125     //
    00127
    00128 #ifndef DOXYGEN_SHOULD_SKIP_THIS
    00129
    00130 private:
    00131     virtual bool internal_ProcessObject(FbxObject* pObject);
    00132     FbxSet2<FbxString>   mPropertyFilter;
    00133
    00134 #endif
    00135
    00136 };
    00137
    00138 #include <fbxsdk/fbxsdk_nsend.h>
    00139
    00140 #endif /* _FBXSDK_UTILS_EMBEDDED_FILES_ACCUMULATOR_H_ */