xsi_icenodecontext.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 __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     // API for handling the data array
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     // API for handling the 2D data array
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__