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__