fbxpropertyhandle.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576
  1. /****************************************************************************************
  2. Copyright (C) 2015 Autodesk, Inc.
  3. All rights reserved.
  4. Use of this software is subject to the terms of the Autodesk license agreement
  5. provided at the time of installation or download, or which otherwise accompanies
  6. this software in either electronic or hard copy form.
  7. ****************************************************************************************/
  8. //! \file fbxpropertyhandle.h
  9. #ifndef _FBXSDK_CORE_PROPERTY_HANDLE_H_
  10. #define _FBXSDK_CORE_PROPERTY_HANDLE_H_
  11. #include <fbxsdk/fbxsdk_def.h>
  12. #include <fbxsdk/core/fbxconnectionpoint.h>
  13. #include <fbxsdk/core/fbxpropertytypes.h>
  14. #include <fbxsdk/core/fbxpropertydef.h>
  15. #include <fbxsdk/fbxsdk_nsbegin.h>
  16. class FbxPropertyPage;
  17. class FbxPropertyHandle;
  18. class FbxConnectionPointFilter;
  19. //! \brief Class to manage property handle.
  20. class FBXSDK_DLL FbxPropertyHandle
  21. {
  22. public:
  23. /**
  24. * \name Constructor and Destructor
  25. */
  26. //@{
  27. //! Create an instance
  28. static FbxPropertyHandle Create();
  29. /** Create an instance with given instance.
  30. * \param pInstanceOf The given instance. */
  31. static FbxPropertyHandle Create(const FbxPropertyHandle& pInstanceOf);
  32. /** Create an instance with given name and type.
  33. * \param pName Property name.
  34. * \param pType Property type. */
  35. static FbxPropertyHandle Create(const char* pName, EFbxType pType=eFbxUndefined);
  36. /** Create an instance with given name and type info.
  37. * \param pName
  38. * \param pTypeInfo */
  39. static FbxPropertyHandle Create(const char* pName, FbxPropertyHandle pTypeInfo);
  40. /** If this property is root property, delete the property page, otherwise delete the property.
  41. * \return If succeed, return true. */
  42. bool Destroy();
  43. //! Default constructor.
  44. FbxPropertyHandle();
  45. /** Copy constructor.
  46. * \param pAddress FbxPropertyHandle copied to this one. */
  47. FbxPropertyHandle(const FbxPropertyHandle& pAddress);
  48. //! Destructor
  49. ~FbxPropertyHandle();
  50. /** Character constructor.
  51. * \param pPage
  52. * \param pId */
  53. FbxPropertyHandle(FbxPropertyPage* pPage, FbxInt pId=FBXSDK_PROPERTY_ID_ROOT);
  54. //@}
  55. /**
  56. * \name Assignment and basic info
  57. */
  58. //@{
  59. /** FbxPropertyHandle assignment operator.
  60. * \param pHandle FbxPropertyHandle assigned to this one. */
  61. FbxPropertyHandle& operator=(const FbxPropertyHandle& pHandle);
  62. /** Equality operator.
  63. * \param pHandle FbxPropertyHandle compared with this one.
  64. * \return \c True if equal, \c false otherwise. */
  65. bool operator==(const FbxPropertyHandle& pHandle) const;
  66. /** Inequality operator.
  67. * \param pHandle FbxPropertyHandle compared with this one.
  68. * \return \c True if unequal, \c false otherwise. */
  69. bool operator!=(const FbxPropertyHandle& pHandle) const;
  70. /** Lesser operator, used to sort property handle in map.
  71. * \param pHandle The property handle compared to this property handle.
  72. * \return \c true if less, \c false otherwise. */
  73. bool operator< (const FbxPropertyHandle& pHandle) const;
  74. /** Greater operator, used to sort property handle in map.
  75. * \param pProperty The property handle compared to this property handle.
  76. * \return \c true if greater, \c false otherwise. */
  77. bool operator> (const FbxPropertyHandle& pHandle) const;
  78. /** Compare type info together
  79. * \param pHandle FbxPropertyHandle compared with this one.
  80. * \return \c True if equal, \c false otherwise. */
  81. bool Is(const FbxPropertyHandle& pHandle) const;
  82. //! Judge validity
  83. bool Valid() const;
  84. //! Get the property name
  85. const char* GetName() const;
  86. //! Get the property label
  87. const char* GetLabel() const;
  88. /** Set a label to the property
  89. * \param pLabel The given label string
  90. * \return \c true if successful. */
  91. bool SetLabel(const char* pLabel);
  92. //! Get the property type
  93. EFbxType GetType() const;
  94. //! Get the property type info
  95. FbxPropertyHandle GetTypeInfo() const;
  96. //! Get the property attribute state
  97. FbxPropertyFlags::EFlags GetFlags() const;
  98. /** Gets the inheritance type for the given flag.
  99. * \param pFlags The flag to query
  100. * \param pCheckReferences Decide whether check instance. If it is true, check instance.
  101. * \return The inheritance type */
  102. FbxPropertyFlags::EInheritType GetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, bool pCheckReferences) const;
  103. /** According the given parameter Change the attributes of the property.
  104. * \param pFlags The given flags used as mask.
  105. * \param pValue If pValue is true, set mask with given flags, otherwise unset mask with given flags.
  106. * \return If succeed, return true. */
  107. bool ModifyFlags(FbxPropertyFlags::EFlags pFlags, bool pValue);
  108. /**Sets the inheritance type for the given flag
  109. * \param pFlags The flag to set
  110. * \param pType The inheritance type to set
  111. * \return If succeed, return true. */
  112. bool SetFlagsInheritType(FbxPropertyFlags::EFlags pFlags, FbxPropertyFlags::EInheritType pType);
  113. //! Get the property user data.
  114. void* GetUserData() const;
  115. /** Set user data to the property
  116. * \param pUserData The given user data
  117. * \return If succeed, return true. */
  118. bool SetUserData(const void* pUserData);
  119. //! Get the property user tag
  120. int GetUserTag() const;
  121. /** Set user tag to the property
  122. * \param pUserData The given user tag
  123. * \return If succeed, return true. */
  124. bool SetUserTag(int pUserData);
  125. //@}
  126. /**
  127. * \name Enum management
  128. */
  129. //@{
  130. /** Add new value at the end of the enum list in the property.
  131. * \param pStringValue The given new value
  132. * \return The index of the value. */
  133. int AddEnumValue(const char* pStringValue);
  134. /** Insert new value at the given index of the enum list in property.
  135. * \param pIndex The given index
  136. * \param pStringValue The given new value */
  137. void InsertEnumValue(int pIndex, const char* pStringValue);
  138. /** Get the enum count of enum list in property
  139. * \return The enum count of enum list in property */
  140. int GetEnumCount();
  141. /** Set value at the given index of the enum list in the property.
  142. * \param pIndex The given index
  143. * \param pStringValue The given new value used to instead the old value. */
  144. void SetEnumValue(int pIndex, const char* pStringValue);
  145. /** Remove the value at the index of the enum list in the property.
  146. * \param pIndex The given index */
  147. void RemoveEnumValue(int pIndex);
  148. /** Get the value at the index of enum list in the property.
  149. * \param pIndex The given index
  150. * \return The value at the given index */
  151. char* GetEnumValue(int pIndex);
  152. //@}
  153. /**
  154. * \name Child and Struct management
  155. */
  156. //@{
  157. //! Create the map for find property in the property page
  158. void BeginCreateOrFindProperty();
  159. //! Clear the map which created for find property.
  160. void EndCreateOrFindProperty();
  161. /** Judge if the property is the root property.
  162. * \return Return true if this property is root property. */
  163. inline bool IsRoot() const { return ( mPage && mId == 0 ) ? true : false; }
  164. /** Judge if the property is the child property of the given parent property.
  165. * \param pParent The given parent property handle
  166. * \return Return true if this property is child of given property. */
  167. bool IsChildOf(const FbxPropertyHandle& pParent) const;
  168. /** Judge if the property is descendent property of the given property.
  169. * \param pParent The given parent property handle
  170. * \return Return true if this property is descendant of given property. */
  171. bool IsDescendentOf(const FbxPropertyHandle& pParent) const;
  172. /** Set parent property handle.No matter what enters,the result is always false.
  173. * \param pOther
  174. * \return False */
  175. bool SetParent(const FbxPropertyHandle& pOther );
  176. /** Add a property to the property page.
  177. * \param pName The name of property.
  178. * \param pTypeInfo The added property's type info.
  179. * \return The handle of the new added property */
  180. FbxPropertyHandle Add(const char* pName, const FbxPropertyHandle& pTypeInfo);
  181. /** Get parent property
  182. * \return If the parent property exists, return the property handle,otherwise return -1. */
  183. FbxPropertyHandle GetParent() const;
  184. /** Get child property
  185. * \return If the child property is exist, return the property handle,otherwise return -1. */
  186. FbxPropertyHandle GetChild() const;
  187. /** Get sibling property
  188. * \return If the sibling property is exist, return the property handle,otherwise return -1. */
  189. FbxPropertyHandle GetSibling() const;
  190. /** Get first descendent property
  191. * \return If the descendent property is exist, return the first descendent property handle,otherwise return -1. */
  192. FbxPropertyHandle GetFirstDescendent() const;
  193. /** Get first descendent property which after the given property
  194. * \param pHandle The given property handle
  195. * \return If the descendent property can be found after the given property,
  196. * return the first found property handle,otherwise return -1. */
  197. FbxPropertyHandle GetNextDescendent(const FbxPropertyHandle& pHandle) const;
  198. /** Find the property with given name
  199. * \param pName The given property name
  200. * \param pCaseSensitive Decide if the given property name is case sensitive
  201. * \return Return a property handle which be created with the found property. */
  202. FbxPropertyHandle Find(const char* pName, bool pCaseSensitive) const;
  203. /** Find the property with given name and type info.
  204. * \param pName The given property name
  205. * \param pTypeInfo The given property type info
  206. * \param pCaseSensitive Decide if the given property name is case sensitive
  207. * \return Return a property handle which be created with the found property. */
  208. FbxPropertyHandle Find(const char* pName, const FbxPropertyHandle& pTypeInfo, bool pCaseSensitive) const;
  209. /** Separate the given name by children separator string and then find the property.The step is
  210. * strip the first part of the name and search, if the property can be found, strip the second part
  211. * of the name and continue search, until no property be found,then return the last found property.
  212. * \param pName The given property name
  213. * \param pChildrenSeparator The given children separator string
  214. * \param pCaseSensitive Decide if the given property name is case sensitive
  215. * \return Return a property handle which be created with the found property. */
  216. FbxPropertyHandle Find(const char* pName, const char* pChildrenSeparator, bool pCaseSensitive) const;
  217. /** Separate the given name by children separator string and then find the property.The step is
  218. * strip the first part of the name and search, if the property can be found, strip the second part
  219. * of the name and continue search, until no property be found,then return the last found property.
  220. * \param pName The given property name
  221. * \param pChildrenSeparator The given children separator string
  222. * \param pTypeInfo The given property type info
  223. * \param pCaseSensitive Decide if the given property name is case sensitive
  224. * \return Return a property handle which be created with the found property. */
  225. FbxPropertyHandle Find(const char* pName, const char* pChildrenSeparator, const FbxPropertyHandle& pTypeInfo, bool pCaseSensitive) const;
  226. //@}
  227. /**
  228. * \name Connection management
  229. */
  230. //@{
  231. /** Connect source property.
  232. * \param pSrc The given source property
  233. * \param pType The given property type
  234. * \return If connect successfully, return true,otherwise, return false. */
  235. bool ConnectSrc(const FbxPropertyHandle& pSrc, const FbxConnection::EType pType=FbxConnection::eDefault);
  236. /** Get source properties' count.
  237. * \param pFilter The filter used to get sub connection point. If it is not zero, return the source count of the sub connection point.
  238. * Otherwise, return the src count of this property.
  239. * \return The count of source properties */
  240. int GetSrcCount(FbxConnectionPointFilter* pFilter=0) const;
  241. /** Get source property with the given index.
  242. * \param pFilter The filter used to get sub connection point. If it is not zero, return the source property of the sub connection point.
  243. * Otherwise, return the source property of this property.
  244. * \param pIndex The given index
  245. * \return The source property handle. */
  246. FbxPropertyHandle GetSrc(FbxConnectionPointFilter* pFilter=0, int pIndex=0) const;
  247. /** Disconnect source property.
  248. * \param pSrc The given source property
  249. * \return If disconnect successfully, return true, otherwise return false. */
  250. bool DisconnectSrc(const FbxPropertyHandle& pSrc);
  251. /** Judge if it is connected with the given source property.
  252. * \param pSrc The given source property
  253. * \return If it is connected, return true, otherwise return false. */
  254. bool IsConnectedSrc(const FbxPropertyHandle& pSrc);
  255. /** Connect destination property.
  256. * \param pDst The given destination property
  257. * \param pType The given property type
  258. * \return If connect successfully, return true,otherwise, return false. */
  259. bool ConnectDst(const FbxPropertyHandle& pDst, const FbxConnection::EType pType=FbxConnection::eDefault);
  260. /** Get destination properties' count.
  261. * \param pFilter The filter used to get sub connection point.If it is not zero,return the destination count of the sub connection point.
  262. * Otherwise, return the destination count of this property.
  263. * \return The count of destination properties */
  264. int GetDstCount(FbxConnectionPointFilter* pFilter=0) const;
  265. /** Get destination property with the given index.
  266. * \param pFilter The filter used to get sub connection point.If it is not zero,return the destination property of the sub connection point.
  267. * Otherwise, return the destination property of this property.
  268. * \param pIndex The given index
  269. * \return The destination property handle. */
  270. FbxPropertyHandle GetDst(FbxConnectionPointFilter* pFilter=0, int pIndex=0) const;
  271. /** Disconnect destination property.
  272. * \param pDst The given destination property
  273. * \return If disconnect successfully, return true,otherwise, return false. */
  274. bool DisconnectDst(const FbxPropertyHandle& pDst);
  275. /** Judge if it is connected with the given destination property.
  276. * \param pDst The given destination property
  277. * \return If it is connected, return true,otherwise, return false. */
  278. bool IsConnectedDst(const FbxPropertyHandle& pDst);
  279. //! Clear connect cache
  280. void ClearConnectCache();
  281. //! Clear all connect without sending any notification (Internal use ONLY)
  282. void WipeAllConnections();
  283. //@}
  284. /** \name Limits Functions
  285. * Minimum and maximum value limits can be associated with properties, but FBX
  286. * will not verify that these limits are respected. FBX however will store and
  287. * retrieve limits from files, and will assure that they are persistent in memory
  288. * while the property handle object exists.
  289. *
  290. * Soft minimums and maximums values are specifying a second set of limits that can be
  291. * used for UI objects such as sliders. FBX will handle them the same way it does
  292. * with the normal limits. */
  293. //@{
  294. /** Judge if this property has a minimum value.
  295. * \return If the minimum value exist, return true,otherwise, return false. */
  296. bool HasMin() const;
  297. /** Get the minimum value and value type of this property.
  298. * \param pValue The minimum value of this property.
  299. * \param pValueType The value type of this property.
  300. * \return If the minimum value exist, return true,otherwise, return false. */
  301. bool GetMin(void* pValue, EFbxType pValueType) const;
  302. /** Set the minimum value and value type for this property.
  303. * \param pValue The given minimum value .
  304. * \param pValueType The given value type .
  305. * \return If it be set successfully, return true,otherwise, return false. */
  306. bool SetMin(const void* pValue, EFbxType pValueType);
  307. /** According the given value and its value type, set the minimum value and value type for this property.
  308. * \param pValue The given value .
  309. * \return If it be set successfully, return true,otherwise, return false.
  310. */
  311. template <class T> inline bool SetMin(const T& pValue){ return SetMin(&pValue, FbxTypeOf(pValue)); }
  312. /** Get the minimum value of this property.
  313. * \param pFBX_TYPE Not used in this function. This is a dummy argument for
  314. * the correct instantiation of the templated function.
  315. * \return The minimum value of this property */
  316. template <class T> inline T GetMin(const T* pFBX_TYPE) const { T lValue; GetMin(&lValue, FbxTypeOf(lValue)); return lValue; }
  317. /** Judge if this property has soft minimum value.
  318. * \return If the soft minimum value exist, return true,otherwise, return false. */
  319. bool HasSoftMin() const;
  320. /** Get the soft minimum value and value type of this property.
  321. * \param pValue The soft minimum value of this property.
  322. * \param pValueType The value type of this property.
  323. * \return If the soft minimum value exist, return true,otherwise, return false. */
  324. bool GetSoftMin(void* pValue, EFbxType pValueType) const;
  325. /** Set the soft minimum value and value type for this property.
  326. * \param pValue The given soft minimum value .
  327. * \param pValueType The given value type .
  328. * \return If it be set successfully, return true,otherwise, return false. */
  329. bool SetSoftMin(const void* pValue, EFbxType pValueType);
  330. /** According the given value and its value type, set the soft minimum value and value type for this property.
  331. * \param pValue The given value .
  332. * \return If it be set successfully, return true,otherwise, return false. */
  333. template <class T> inline bool SetSoftMin(const T& pValue){ return SetSoftMin(&pValue, FbxTypeOf(pValue)); }
  334. /** Get the soft minimum value of this property.
  335. * \param pFBX_TYPE Not used in this function. This is a dummy argument for
  336. * the correct instantiation of the templated function.
  337. * \return The soft minimum value of this property */
  338. template <class T> inline T GetSoftMin(const T* pFBX_TYPE) const { T lValue; GetSoftMin(&lValue, FbxTypeOf(lValue)); return lValue; }
  339. /** Judge if this property has maximum value.
  340. * \return If the maximum value exist, return true,otherwise, return false. */
  341. bool HasMax() const;
  342. /** Get the maximum value and value type of this property.
  343. * \param pValue The maximum value of this property.
  344. * \param pValueType The value type of this property.
  345. * \return If the maximum value exist, return true,otherwise, return false. */
  346. bool GetMax(void* pValue, EFbxType pValueType) const;
  347. /** Set the maximum value and value type for this property.
  348. * \param pValue The given maximum value .
  349. * \param pValueType The given value type .
  350. * \return If it be set successfully, return true,otherwise, return false. */
  351. bool SetMax(const void* pValue, EFbxType pValueType);
  352. /** According the given value and its value type, set the maximum value and value type for this property.
  353. * \param pValue The given value .
  354. * \return If it be set successfully, return true,otherwise, return false. */
  355. template <class T> inline bool SetMax(const T& pValue){ return SetMax(&pValue, FbxTypeOf(pValue)); }
  356. /** Get the maximum value of this property.
  357. * \param pFBX_TYPE Not used in this function. This is a dummy argument for
  358. * the correct instantiation of the templated function.
  359. * \return The maximum value of this property */
  360. template <class T> inline T GetMax(const T* pFBX_TYPE) const { T lValue; GetMax(&lValue, FbxTypeOf(lValue)); return lValue; }
  361. /** Judge if this property has soft maximum value.
  362. * \return If the soft maximum value exist, return true,otherwise, return false. */
  363. bool HasSoftMax() const;
  364. /** Get the soft maximum value and value type of this property.
  365. * \param pValue The soft maximum value of this property.
  366. * \param pValueType The value type of this property.
  367. * \return If the soft maximum value exist, return true,otherwise, return false. */
  368. bool GetSoftMax(void* pValue, EFbxType pValueType) const;
  369. /** Set the soft maximum value and value type for this property.
  370. * \param pValue The given soft maximum value .
  371. * \param pValueType The given value type .
  372. * \return If it be set successfully, return true,otherwise, return false. */
  373. bool SetSoftMax(const void* pValue, EFbxType pValueType);
  374. /** According the given value and its value type, set the soft maximum value and value type for this property.
  375. * \param pValue The given value .
  376. * \return If it be set successfully, return true,otherwise, return false. */
  377. template <class T> inline bool SetSoftMax(const T& pValue){ return SetSoftMax(&pValue, FbxTypeOf(pValue)); }
  378. /** Get the soft maximum value of this property.
  379. * \param pFBX_TYPE Not used in this function. This is a dummy argument for
  380. * the correct instantiation of the templated function.
  381. * \return The soft maximum value of this property */
  382. template <class T> inline T GetSoftMax(const T* pFBX_TYPE) const { T lValue; GetSoftMax(&lValue, FbxTypeOf(lValue)); return lValue; }
  383. //@}
  384. /**
  385. * \name Value
  386. */
  387. //@{
  388. /** Get value inherit type of this property.
  389. * \param pCheckReferences If it is true,check instance of this property page,otherwise,only check this page.
  390. * \return The value inherit type of this property */
  391. FbxPropertyFlags::EInheritType GetValueInheritType(bool pCheckReferences) const;
  392. /** Set value inherit type for this property .
  393. * \param pType The given value inherit type.
  394. * \return If set successfully, return true,otherwise, return false. */
  395. bool SetValueInheritType(FbxPropertyFlags::EInheritType pType);
  396. /** Get default value and value type of this property .
  397. * \param pValue The gotten default value of this property.
  398. * \param pValueType The gotten default value type of this property.
  399. * \return If default value be gotten successfully, return true,otherwise, return false. */
  400. bool GetDefaultValue(void* pValue, EFbxType pValueType) const;
  401. /** Get value and value type of this property .
  402. * \param pValue The gotten value of this property.
  403. * \param pValueType The gotten value type of this property.
  404. * \return If value be gotten successfully, return true,otherwise, return false. */
  405. bool Get(void* pValue, EFbxType pValueType) const;
  406. /** Set property value and value type for this property.
  407. * \param pValue The given property value .
  408. * \param pValueType The given property value type
  409. * \param pCheckValueEquality If it is true, when the given value is equal with
  410. * the property value, the property value will not be set.
  411. * \return If the property value be set successfully, return true,otherwise, return false. */
  412. bool Set(const void* pValue, EFbxType pValueType, bool pCheckValueEquality);
  413. /** Set property value with the given value .
  414. * \param pValue The given value .
  415. * \return If set successfully, return true,otherwise, return false. */
  416. template <class T> inline bool Set(const T& pValue){ return Set(&pValue, FbxTypeOf(pValue)); }
  417. /** get property value.
  418. * \param pFBX_TYPE Not be used.
  419. * \return The gotten property value. */
  420. template <class T> inline T Get(const T* pFBX_TYPE) const { T lValue; Get(&lValue, FbxTypeOf(lValue)); return lValue; }
  421. //@}
  422. /**
  423. * \name Page settings
  424. */
  425. //@{
  426. /** Set the property page data pointer.
  427. * \param pData The given page data pointer. */
  428. void SetPageDataPtr(void* pData);
  429. /** Get property page data pointer.
  430. * \return The gotten property page data pointer. */
  431. void* GetPageDataPtr() const;
  432. //@}
  433. /**
  434. * \name Page Internal Entry Management
  435. */
  436. //@{
  437. /** Push properties to parent instance.
  438. * \return If push successful return true,otherwise,return false. */
  439. bool PushPropertiesToParentInstance();
  440. //@}
  441. /**
  442. * \name Reference Management
  443. */
  444. //@{
  445. /** Judge if this property page is a instance of other page.
  446. * \return If this property page is a instance of other page, return true,otherwise,return false. */
  447. bool IsAReferenceTo(void) const;
  448. /** Get the property page which this property page make reference to
  449. * \return The property page which this property page make reference to */
  450. void* GetReferenceTo(void) const;
  451. /** Judge if this property page is referenced by other pages.
  452. * \return If this property page is referenced by other pages, return true,otherwise,return false. */
  453. bool IsReferencedBy(void) const;
  454. /** Get the count of property pages which make reference to this property page.
  455. * \return The count of property pages which make reference to this property page. */
  456. int GetReferencedByCount(void) const;
  457. /** According the given index,get the property page which make reference to this property page.
  458. * \param pIndex The given index
  459. * \return The pointer to the property page which reference to this property page and be found by index. */
  460. void* GetReferencedBy(int pIndex) const;
  461. //@}
  462. private:
  463. FbxPropertyPage* mPage;
  464. FbxInt mId;
  465. };
  466. #include <fbxsdk/fbxsdk_nsend.h>
  467. #endif /* _FBXSDK_CORE_PROPERTY_HANDLE_H_ */