xsi_iceattribute.h
Go to the documentation of this file.
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__