00001
00011
00012
00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00014 #pragma once
00015 #endif
00016
00017 #ifndef __XSIICENODECONTEXT_H__
00018 #define __XSIICENODECONTEXT_H__
00019
00020 #include <xsi_context.h>
00021 #include <xsi_time.h>
00022
00023 namespace XSI {
00024
00025 class CStatus;
00026 class CBaseDataArray;
00027 class CBaseDataArray2D;
00028 class CIndexSet;
00029
00030
00039
00040
00041 class SICPPSDKDECL ICENodeContext : public Context
00042 {
00043 public:
00044
00045 friend class CBaseDataArray;
00046 friend class CBaseDataArray2D;
00047 friend class CIndexSet;
00048
00050 ICENodeContext();
00051
00053 ~ICENodeContext();
00054
00058 ICENodeContext(const CRef& in_ref);
00059
00063 ICENodeContext(const ICENodeContext& in_obj);
00064
00069 bool IsA( siClassID in_ClassID) const;
00070
00074 siClassID GetClassID() const;
00075
00080 ICENodeContext& operator=(const ICENodeContext& in_obj);
00081
00087 ICENodeContext& operator=(const CRef& in_ref);
00088
00094 CStatus GetGroupInstanceCount( ULONG in_grpUniqID, ULONG& out_inst_count ) const;
00095
00099 ULONG GetEvaluationThreadCount( ) const;
00100
00106 ULONG GetCurrentThreadIndex( ) const;
00107
00114 ULONG GetNumberOfElementsToProcess( ) const;
00115
00143 CStatus PutNumberOfElementsToProcess( ULONG in_nElements );
00144
00152 CStatus GetPortInfo( ULONG in_nPortID, siICENodeDataType& out_type, siICENodeStructureType& out_struct, siICENodeContextType& out_context ) const;
00153
00157 ULONG GetEvaluatedOutputPortID( ) const;
00158
00163 CTime GetTime() const;
00164
00165 private:
00166
00167
00168 CStatus AcquireIndexSet( CIndexSet& io_set ) const;
00169 CStatus ReleaseIndexSet( CIndexSet& io_set );
00170 CStatus RemoveElementFromIndexSet( CIndexSet& io_set, LONG in_index, LONG& out_nNewIndex, bool& out_bEnd );
00171 CStatus AcquireInputDataArray( CBaseDataArray& io_dataArray, siICENodeDataType in_requiredDataType, ULONG in_port_uniq_index, ULONG in_grp_instance_index ) const;
00172 CStatus AcquireOutputDataArray( CBaseDataArray& io_dataArray, siICENodeDataType in_requiredDataType ) const;
00173 CStatus ReleaseDataArray( CBaseDataArray& io_dataArray );
00174
00175
00176 CStatus AcquireInputDataArray2D( CBaseDataArray2D& io_dataArray, siICENodeDataType in_requiredDataType, ULONG in_port_uniq_index, ULONG in_grp_instance_index ) const;
00177 CStatus AcquireOutputDataArray2D( CBaseDataArray2D& io_dataArray, siICENodeDataType in_requiredDataType ) const;
00178 CStatus ResizeSubArray( CBaseDataArray2D& io_dataArray, ULONG in_nArrayIndex, ULONG in_nSize, void*& out_ppData, ULONG& out_nCount, ULONG& out_nStartBit ) ;
00179 CStatus GetSubArray( CBaseDataArray2D& io_dataArray, ULONG in_nArrayIndex, void*& out_ppData, ULONG& out_nCount, ULONG& out_nStartBit ) const;
00180
00181 ICENodeContext * operator&() const;
00182 ICENodeContext * operator&();
00183 };
00184
00185 };
00186 #endif // __XSIICENODECONTEXT_H__