00001 //*************************************************************************************** 00002 // 00003 // File supervisor: Softimage 3D Games & 3D Bridge team 00004 // 00005 // (c) Copyright 1999-2002 Avid Technology, Inc. . All rights reserved. 00006 // 00007 // SIBCNode.h | Main header file for SIBCNode implementation 00008 //*************************************************************************************** 00009 00010 /**************************************************************************************** 00011 THIS CODE IS PUBLISHED AS A SAMPLE ONLY AND IS PROVIDED "AS IS". 00012 IN NO EVENT SHALL SOFTIMAGE, AVID TECHNOLOGY, INC. AND/OR THEIR RESPECTIVE 00013 SUPPLIERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 00014 DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 00015 ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN 00016 CONNECTION WITH THE USE OR PERFORMANCE OF THIS CODE . 00017 00018 COPYRIGHT NOTICE. Copyright © 1999-2002 Avid Technology Inc. . All rights reserved. 00019 00020 SOFTIMAGE is a registered trademark of Avid Technology Inc. or its subsidiaries 00021 or divisions. Windows NT is a registered trademark of Microsoft Corp. All other 00022 trademarks contained herein are the property of their respective owners. 00023 ****************************************************************************************/ 00024 00025 //*************************************************************************************** 00026 // Defines 00027 //*************************************************************************************** 00028 #ifndef __CSIBCNode_H__ 00029 #define __CSIBCNode_H__ 00030 00031 //*************************************************************************************** 00032 // Includes 00033 //*************************************************************************************** 00034 00035 #include <SIBCUtil.h> 00036 #include <SIBCArray.h> 00037 #include <SIBCString.h> 00038 #include <SIBCMatrix.h> 00039 00044 typedef void (*SI_ReleaseMethod) (void *in_pObjectToDelete); 00045 00046 00047 //*************************************************************************************** 00048 // CSIBCUserData | Base Class 00049 //*************************************************************************************** 00050 00052 00058 class XSICOREEXPORT CSIBCUserData 00059 { 00060 public: 00061 00065 CSIBCUserData() 00066 { 00067 m_pData = NULL; 00068 m_pReleaseMethod = (SI_ReleaseMethod)NULL; 00069 m_pUnused = NULL; 00070 }; 00071 00080 CSIBCUserData 00081 ( 00082 SI_Char *in_pName, 00083 SI_Void *in_pData, 00084 SI_ReleaseMethod in_pReleaseMethod 00085 ) 00086 { 00087 m_Name.SetText(in_pName); 00088 m_pData = in_pData; 00089 m_pReleaseMethod = in_pReleaseMethod; 00090 m_pUnused = NULL; 00091 }; 00092 00093 ~CSIBCUserData() 00094 { 00095 if(m_pReleaseMethod != NULL) 00096 m_pReleaseMethod(m_pData); 00097 }; 00098 00102 CSIBCString &Name() { return m_Name; }; 00103 00107 virtual void *GetData() { return m_pData; }; 00108 00112 virtual void SetData(void *in_pData) 00113 {m_pData = in_pData;}; 00114 00119 virtual SI_ReleaseMethod GetReleaseMethod() 00120 { return m_pReleaseMethod; }; 00121 00126 virtual SI_Void SetReleaseMethod(SI_ReleaseMethod in_pReleaseMethod) 00127 { m_pReleaseMethod = in_pReleaseMethod; }; 00128 00129 private: 00130 CSIBCString m_Name; 00131 SI_Void *m_pData; 00132 SI_ReleaseMethod m_pReleaseMethod; 00133 SI_Void *m_pUnused; 00134 }; 00135 00136 00137 00138 //*************************************************************************************** 00139 // CSIBCNode | Base Class 00140 //*************************************************************************************** 00141 00143 00147 class XSICOREEXPORT CSIBCNode 00148 { 00149 public: 00150 00151 //*************************************************************************************** 00152 // constructor/destructor 00153 //*************************************************************************************** 00154 00158 CSIBCNode(); 00159 00160 virtual ~CSIBCNode(); 00161 00162 //*************************************************************************************** 00163 // debug and profiling functions 00164 //*************************************************************************************** 00165 00170 virtual void Dump(); 00171 00179 virtual SI_UInt UsedMemory(); 00180 00188 virtual SI_UInt AllocatedMemory(); 00189 00193 virtual SI_UInt LocalSize(); 00194 00195 //*************************************************************************************** 00196 // properties 00197 //*************************************************************************************** 00198 00202 CSIBCString &Name() { return m_Name; } 00203 00207 SI_UInt GetFlags() { return m_Flags; } 00208 00215 SI_Void SetFlags(SI_UInt in_lFlags) 00216 { m_Flags = in_lFlags; } 00217 00221 CSIBCArray < CSIBCUserData* > &UserDataList() 00222 { return m_UserDataArray;} 00223 00230 CSIBCUserData *FindUserData(SI_Char *in_pTag); 00231 00236 CSIBCUserData *GetUserData(SI_Int in_iIndex); 00237 00247 SI_Error AttachUserData(SI_Char *in_pTag, SI_Void *in_pData); 00248 00254 SI_Error RemoveUserData(SI_Char *in_pTag); 00255 00256 //*************************************************************************************** 00257 // methods 00258 //*************************************************************************************** 00259 00269 virtual CSIBCNode *Duplicate(CSIBCNode * i_pNode); 00270 00271 00272 protected: 00273 00274 00275 private: 00276 CSIBCString m_Name; 00277 CSIBCArray < CSIBCUserData* > m_UserDataArray; 00278 SI_UInt m_Flags; 00279 SI_Void *m_pUnused; 00280 }; 00281 00282 #endif // CSIBCNode