00001
00011
00012
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016
00017 #ifndef __XSIICEATTRIBUTE_H__
00018 #define __XSIICEATTRIBUTE_H__
00019
00020 #include <xsi_siobject.h>
00021
00022 namespace XSI {
00023
00024 class CBaseICEAttributeDataArray;
00025 class CBitArray;
00026
00027
00086
00087
00088 class SICPPSDKDECL ICEAttribute : public SIObject
00089 {
00090 public:
00091 friend class CBaseICEAttributeDataArray;
00092
00094 ICEAttribute();
00095
00097 ~ICEAttribute();
00098
00102 ICEAttribute(const CRef& in_ref);
00103
00107 ICEAttribute(const ICEAttribute& in_obj);
00108
00113 bool IsA( siClassID in_ClassID) const;
00114
00118 siClassID GetClassID() const;
00119
00125 ICEAttribute& operator=(const ICEAttribute& in_obj);
00126
00132 ICEAttribute& operator=(const CRef& in_ref);
00133
00140 bool IsDefined( ) const;
00141
00145 bool IsConstant( ) const;
00146
00150 bool IsReadonly( ) const;
00151
00155 XSI::siICENodeDataType GetDataType( ) const;
00156
00161 XSI::siICENodeStructureType GetStructureType( ) const;
00162
00168 XSI::siICENodeContextType GetContextType( ) const;
00169
00173 XSI::siICEAttributeCategory GetAttributeCategory( ) const;
00174
00179 ULONG GetElementCount( ) const;
00180
00367 CStatus GetDataArray( CBaseICEAttributeDataArray& io_dataArray ) const;
00368
00511 CStatus GetDataArrayChunk( ULONG in_nOffset, ULONG in_nSize, CBaseICEAttributeDataArray& io_dataArray ) const;
00512
00782 CStatus GetDataArray2D( CBaseICEAttributeDataArray& io_dataArray ) const;
00783
01017 CStatus GetDataArray2DChunk( ULONG in_nOffset, ULONG in_nSize, CBaseICEAttributeDataArray& io_dataArray ) const;
01018
01052 CStringArray GetCustomDataTypes( ) const;
01053
01054 private:
01055
01056 CStatus ReleaseDataArray( CBaseICEAttributeDataArray& in_dataArray );
01057 CStatus GetSubDataArray( CBaseICEAttributeDataArray& in_dataArray2D, ULONG in_index, CBaseICEAttributeDataArray& io_dataArray ) const;
01058 CStatus ResizeSubDataArray( CBaseICEAttributeDataArray& in_dataArray2D, ULONG in_index, ULONG in_nSize, CBaseICEAttributeDataArray& io_dataArray );
01059
01060 CStatus GetCustomTypeData( const CBaseICEAttributeDataArray& in_dataArray, ULONG in_nIndex, const unsigned char** out_ppData, ULONG& out_nSize ) const;
01061 CStatus GetCustomTypeData2D( const CBaseICEAttributeDataArray& in_dataArray2D, ULONG in_nArrayIndex, ULONG in_nSubArrayIndex, const unsigned char** out_ppData, ULONG& out_nSize ) const;
01062 CStatus GetCustomTypeData2D( const CBaseICEAttributeDataArray& in_dataArray2D, ULONG in_nIndex, const unsigned char** out_ppData, ULONG& out_nSize ) const;
01063
01064 CStatus GetStringData( const CBaseICEAttributeDataArray& in_dataArray, ULONG in_nIndex, const wchar_t** out_ppData, ULONG& out_nSize ) const;
01065 CStatus GetStringData2D( const CBaseICEAttributeDataArray& in_dataArray2D, ULONG in_nArrayIndex, ULONG in_nSubArrayIndex, const wchar_t** out_ppData, ULONG& out_nSize ) const;
01066
01067 CStatus GetStringData2D( const CBaseICEAttributeDataArray& in_dataArray, ULONG in_nIndex, const wchar_t** out_ppData, ULONG& out_nSize ) const;
01068 CStatus SetStringData( const CBaseICEAttributeDataArray& in_dataArray, ULONG in_nIndex, const wchar_t* in_pData, ULONG in_nSize );
01069
01070 CStatus SetStringData( CBaseICEAttributeDataArray& in_dataArray, ULONG in_nIndex, const wchar_t* in_pData, ULONG in_nSize );
01071 CStatus SetStringData2D( CBaseICEAttributeDataArray& in_dataArray2D, ULONG in_nArrayIndex, ULONG in_nSubArrayIndex, const wchar_t* in_pData, ULONG in_nSize );
01072
01073 CStatus SetDataArrayInternal( CBaseICEAttributeDataArray& io_dataArray, CBaseICEAttributeDataArray* io_pSubDataArray, ULONG in_nOffset, const CValueArray& in_array, ULONG in_nNbElem, bool in_bIs2D );
01074 CStatus SetDataArrayInternal( CBaseICEAttributeDataArray& io_dataArray, CBaseICEAttributeDataArray* io_pSubDataArray, ULONG in_nOffset, void* in_array, ULONG in_nNbElem, ULONG* in_pSubArraySizes, bool in_bIs2D );
01075
01076 CStatus SetCharDataArrayInternal( CBaseICEAttributeDataArray& io_dataArray, CBaseICEAttributeDataArray* io_pSubDataArray, ULONG in_nOffset, const CValueArray& in_array, const CValueArray& in_elemSizes, bool in_bIs2D );
01077 CStatus SetCharDataArrayInternal( CBaseICEAttributeDataArray& io_dataArray, CBaseICEAttributeDataArray* io_pSubDataArray, ULONG in_nOffset, void* in_pArray, ULONG in_nNbElem, ULONG* in_pSubArraySizes, void* in_ppElemSizes, ULONG in_nFixedElemSize, bool in_bIs2D );
01078
01079 CStatus GetArrayElementInternal( const CBaseICEAttributeDataArray& in_dataArray, ULONG in_nArrayIndex, ULONG in_nSubArrayIndex, void** out_ppData, ULONG& out_ulSize ) const;
01080 CStatus SetArrayElementInternal( CBaseICEAttributeDataArray& in_dataArray, ULONG in_nArrayIndex, ULONG in_nSubArrayIndex, void* in_pData, ULONG in_nSize );
01081
01082 CStatus GetDataArrayInternal(ULONG in_nOffset, ULONG in_nSize, CBaseICEAttributeDataArray& io_dataArray) const;
01083
01084 CStatus SetSubDataArray( CBaseICEAttributeDataArray& io_dataArray2D, CBaseICEAttributeDataArray* io_pSubDataArray, ULONG in_nIndex, const CValueArray& in_array );
01085 CStatus SetSubDataArray( CBaseICEAttributeDataArray& io_dataArray2D, CBaseICEAttributeDataArray* io_pSubDataArray, ULONG in_nIndex, void* in_pArray, ULONG in_nCount );
01086 CStatus SetStringSubDataArray( CBaseICEAttributeDataArray& io_dataArray2D, CBaseICEAttributeDataArray* io_pSubDataArray, ULONG in_nIndex, const wchar_t** in_ppData, ULONG in_nCount );
01087
01088 CStatus SetCustomTypeSubDataArray( CBaseICEAttributeDataArray& io_dataArray2D, CBaseICEAttributeDataArray* io_pSubDataArray, ULONG in_nIndex, const unsigned char** in_ppData, ULONG in_nCount, ULONG in_nFixedElemSize );
01089 CStatus SetCustomTypeSubDataArray( CBaseICEAttributeDataArray& io_dataArray2D, CBaseICEAttributeDataArray* io_pSubDataArray, ULONG in_nIndex, const unsigned char** in_ppData, ULONG in_nCount, ULONG* in_pElemSizes );
01090
01091 CStatus SetBoolDataArray( CBaseICEAttributeDataArray& in_dataArray, ULONG in_nOffset, const XSI::CBitArray& in_array );
01092 CStatus SetBoolSubDataArray( CBaseICEAttributeDataArray& io_dataArray2D, CBaseICEAttributeDataArray* io_pSubDataArray, ULONG in_nOffset, const XSI::CBitArray& in_array );
01093
01094 ICEAttribute * operator&() const;
01095 ICEAttribute * operator&();
01096 };
01097
01098 };
01099
01100 #endif // __XSIICEATTRIBUTE_H__