xsi_clusterproperty.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 __XSICLUSTERPROPERTY_H__
00018 #define __XSICLUSTERPROPERTY_H__
00019 
00020 #include <xsi_property.h>
00021 #include <xsi_status.h>
00022 #include <xsi_doublearray.h>
00023 #include <xsi_longarray.h>
00024 #include <xsi_bitarray.h>
00025 #include <xsi_floatarray.h>
00026 
00027 namespace XSI {
00028 
00029 class CClusterPropertyElementArray;
00030 
00031 
00032 //*****************************************************************************
00233 //*****************************************************************************
00234 
00235 class SICPPSDKDECL ClusterProperty : public Property
00236 {
00237 public:
00239     ClusterProperty();
00240 
00242     ~ClusterProperty();
00243 
00247     ClusterProperty(const CRef& in_ref);
00248 
00252     ClusterProperty(const ClusterProperty& in_obj);
00253 
00258     bool IsA( siClassID in_ClassID) const;
00259 
00263     siClassID GetClassID() const;
00264 
00270     ClusterProperty& operator=(const ClusterProperty& in_obj);
00271 
00277     ClusterProperty& operator=(const CRef& in_ref);
00278 
00282     CClusterPropertyElementArray GetElements() const;
00283 
00289     LONG GetValueSize() const;
00290 
00295     siClusterPropertyType GetPropertyType() const;
00296 
00305     CValue::DataType GetInternalType() const;
00306 
00318     CStatus GetValues( CFloatArray& out_data ) const;
00319 
00335     CStatus GetValues( CFloatArray& out_data, CBitArray& out_elemIdx ) const;
00336 
00362     CStatus SetValues(
00363         const float*    in_pValues,
00364         LONG            in_nValues,
00365         LONG            in_nOffset=0);
00366 
00385     CStatus SetValues(
00386         const LONG*     in_pElements,
00387         const float*    in_pValues,
00388         LONG            in_nElements);
00389 
00390     private:
00391     ClusterProperty * operator&() const;
00392     ClusterProperty * operator&();
00393 };
00394 
00395 //*****************************************************************************
00482 //*****************************************************************************
00483 
00484 class SICPPSDKDECL CClusterPropertyElementArray
00485 {
00486     public:
00488     CClusterPropertyElementArray();
00489 
00493     CClusterPropertyElementArray(const CClusterPropertyElementArray& in_array);
00494 
00496     virtual ~CClusterPropertyElementArray();
00497 
00502     CClusterPropertyElementArray& operator=(
00503         const CClusterPropertyElementArray& in_array);
00504 
00510     CDoubleArray GetArray() const;
00511 
00517     CStatus PutArray(const CDoubleArray& in_values);
00518 
00522     LONG GetCount() const;
00523 
00529     CDoubleArray GetItem( LONG in_index ) const;
00530 
00538     CStatus PutItem( LONG in_index, const CDoubleArray& in_values );
00539 
00545     CDoubleArray GetItemsByIndex( const CLongArray& in_indices ) const;
00546 
00554     CStatus PutItemsByIndex( const CLongArray& in_indices,
00555         const CDoubleArray& in_values );
00556 
00561     LONG GetValueSize() const;
00562 
00563     private:
00564     void*   m_ptr;
00565     bool    m_bFlag;
00566 };
00567 
00568 };
00569 
00570 #endif // __XSICLUSTERPROPERTY_H__