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 __XSIREF_H__
00018 #define __XSIREF_H__
00019
00020
00021 #include "sicppsdk.h"
00022 #include "xsi_string.h"
00023 #include "xsi_decl.h"
00024
00044 namespace XSI {
00045
00046 class CStatus;
00047 class CValueArray;
00048
00049
00140
00141
00142 class SICPPSDKDECL CRef
00143 {
00144 public:
00146 CRef();
00147
00151 CRef(const CRef& in_xsiRef);
00152
00154 ~CRef();
00155
00159 siClassID GetClassID() const;
00160
00166 bool IsA(siClassID in_classID) const;
00167
00171 CString GetClassIDName() const;
00172
00176 bool IsValid() const;
00177
00183 operator bool() const;
00184
00189 bool operator == (const CRef& in_ref) const;
00190
00195 bool operator != (const CRef& in_ref ) const;
00196
00201 CRef& operator = (const CRef& in_ref );
00202
00211 CStatus Set(const CString& in_str);
00212
00216 CString GetAsText() const;
00217
00225 bool operator < ( const CRef& in_ref ) const;
00226
00233 bool operator > ( const CRef& in_ref ) const;
00234
00235 protected:
00236 void* GetPtr() const;
00237
00238 private:
00239 void* m_ptr;
00240 };
00241
00242
00332
00333 class SICPPSDKDECL CRefArray
00334 {
00335 public:
00336
00341 CRefArray(LONG in_lSize=0);
00342
00346 CRefArray(const CRefArray& in_refArray);
00347
00349 virtual ~CRefArray();
00350
00355 CRefArray& operator=( const CRefArray& in_refArray );
00356
00361 CRefArray& operator+=( const CRefArray& in_refArray );
00362
00368 const CRef& operator[]( LONG in_index ) const;
00369
00374 CRef& operator[]( LONG in_index );
00375
00380 virtual CRef GetItem( LONG in_index ) const;
00381
00386 virtual CRef GetItem( const CString& in_name ) const;
00387
00391 virtual void Add( const CRef& in_item );
00392
00396 virtual LONG GetCount() const;
00397
00403 bool IsA(siClassID in_classID) const;
00404
00408 siClassID GetClassID() const;
00409
00413 CString GetClassIDName() const;
00414
00418 virtual bool IsValid() const;
00419
00425 operator bool() const;
00426
00438 CStatus Filter( const CString& in_strType, const CStringArray& in_strFam,
00439 const CString& in_strObjName, CRefArray& io_array ) const;
00440
00449 CStatus Find( const CString& in_strType, CRef& io_obj ) const;
00450
00456 LONG Set(const CValueArray& in_valarray);
00457
00464 LONG Set(const CString& in_strarray, const CString& in_sep = L"," );
00465
00470 LONG Remove(const CRef& in_ref );
00471
00474 void Clear(void);
00475
00479 CString GetAsText() const;
00480
00487 CStatus Resize( LONG in_size );
00488
00489 protected:
00490 void SetPtr( void* p=NULL, LONG id=siUnknownClassID );
00491 void* GetPtr() const;
00492 LONG GetID()const;
00493
00494 private:
00495 LONG m_id;
00496 mutable void* m_ptr;
00497 };
00498
00508 SICPPSDKDECL CRef ConvertObject( void* in_pAuto );
00509
00522 SICPPSDKDECL void* ConvertObject( const CRef& in_obj );
00523
00524 SICPPSDKDECL bool HasClassID( CRef&, LONG );
00525 SICPPSDKDECL bool CanSubClass( CRef&, LONG );
00526
00527 };
00528
00529 #endif // __XSIREF_H__