00001 /************************************************************************************** 00002 00003 Copyright © 1998 - 2008 Autodesk, Inc. and/or its licensors. 00004 All Rights Reserved. 00005 00006 The coded instructions, statements, computer programs, and/or related material 00007 (collectively the "Data") in these files contain unpublished information 00008 proprietary to Autodesk, Inc. and/or its licensors, which is protected by 00009 Canada and United States of America federal copyright law and by international 00010 treaties. 00011 00012 The Data may not be disclosed or distributed to third parties, in whole or in 00013 part, without the prior written consent of Autodesk, Inc. ("Autodesk"). 00014 00015 THE DATA IS PROVIDED "AS IS" AND WITHOUT WARRANTY. 00016 ALL WARRANTIES ARE EXPRESSLY EXCLUDED AND DISCLAIMED. AUTODESK MAKES NO 00017 WARRANTY OF ANY KIND WITH RESPECT TO THE DATA, EXPRESS, IMPLIED OR ARISING 00018 BY CUSTOM OR TRADE USAGE, AND DISCLAIMS ANY IMPLIED WARRANTIES OF TITLE, 00019 NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR USE. 00020 WITHOUT LIMITING THE FOREGOING, AUTODESK DOES NOT WARRANT THAT THE OPERATION 00021 OF THE DATA WILL BE UNINTERRUPTED OR ERROR FREE. 00022 00023 IN NO EVENT SHALL AUTODESK, ITS AFFILIATES, PARENT COMPANIES, LICENSORS 00024 OR SUPPLIERS ("AUTODESK GROUP") BE LIABLE FOR ANY LOSSES, DAMAGES OR EXPENSES 00025 OF ANY KIND (INCLUDING WITHOUT LIMITATION PUNITIVE OR MULTIPLE DAMAGES OR OTHER 00026 SPECIAL, DIRECT, INDIRECT, EXEMPLARY, INCIDENTAL, LOSS OF PROFITS, REVENUE 00027 OR DATA, COST OF COVER OR CONSEQUENTIAL LOSSES OR DAMAGES OF ANY KIND), 00028 HOWEVER CAUSED, AND REGARDLESS OF THE THEORY OF LIABILITY, WHETHER DERIVED 00029 FROM CONTRACT, TORT (INCLUDING, BUT NOT LIMITED TO, NEGLIGENCE), OR OTHERWISE, 00030 ARISING OUT OF OR RELATING TO THE DATA OR ITS USE OR ANY OTHER PERFORMANCE, 00031 WHETHER OR NOT AUTODESK HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH LOSS 00032 OR DAMAGE. 00033 00034 **************************************************************************************/ 00035 00036 #ifndef FBXFILESDK_COMPONENTS_KBASELIB_KLIB_KSET_H 00037 #define FBXFILESDK_COMPONENTS_KBASELIB_KLIB_KSET_H 00038 00039 #include <fbxfilesdk/components/kbaselib/kbaselib_h.h> 00040 00041 #include <fbxfilesdk/fbxfilesdk_nsbegin.h> 00042 00043 struct SSet; 00044 00045 // ************************************************************************* 00046 // 00047 // class KSet 00048 // 00049 // ************************************************************************* 00050 00054 class KFBX_DLL KSet { 00055 public: 00056 enum 00057 { 00058 KFBX_NOT_FOUND = 0x0L, 00059 KFBX_ITEM_PER_BLOCK = 20 00060 }; 00061 00066 00067 00071 KSet( int pItemPerBlock = KFBX_ITEM_PER_BLOCK ); 00072 00076 KSet(const KSet& other); 00077 00079 ~KSet(); 00081 00082 // Add and remove 00089 bool Add ( kReference pReference, kReference pItem ); 00090 00091 00096 bool Remove ( kReference pReference ); 00097 00102 bool RemoveItem ( kReference pItem ); 00103 00109 bool SetItem ( kReference pReference, kReference pItem ); // Change Item Reference, don't Create if doesn't Exist 00110 00116 kReference Get ( kReference pReference, int* pIndex = NULL ) const; 00117 00119 void Clear(); 00120 00121 // Index manipulation 00127 kReference GetFromIndex ( int pIndex, kReference* pReference = NULL )const; 00128 00133 bool RemoveFromIndex( int pIndex ); 00134 00135 // Get The Count 00139 int GetCount ()const { return mSetCount; } 00140 00141 // Sorting 00146 bool Swap()const; 00147 00148 //The array can be sorted only if the private member:mIsChanged be true. 00152 bool Sort()const; 00153 00155 const KSet& operator=(const KSet&); 00156 00157 private: 00158 // internal functions for Sets manipulation 00159 SSet* FindEqual( kReference pReference)const; 00160 00161 private: 00162 SSet* mSetArray; 00163 int mSetCount; 00164 int mBlockCount; 00165 int mItemPerBlock; 00166 mutable bool mIsChanged; 00167 }; 00168 00169 #include <fbxfilesdk/fbxfilesdk_nsend.h> 00170 00171 #endif // FBXFILESDK_COMPONENTS_KBASELIB_KLIB_KSET_H 00172