00001 //***************************************************************************** 00011 //***************************************************************************** 00012 00013 #if (_MSC_VER > 1000) || defined(SGI_COMPILER) 00014 #pragma once 00015 #endif 00016 00017 #ifndef __XSIARGUMENT_H__ 00018 #define __XSIARGUMENT_H__ 00019 00020 #include <xsi_siobject.h> 00021 #include <xsi_value.h> 00022 00023 namespace XSI { 00024 00025 class ArgumentArray ; // Forward declaration 00026 class ArgumentHandler ; 00027 00028 //***************************************************************************** 00061 //***************************************************************************** 00062 class SICPPSDKDECL Argument : public SIObject 00063 { 00064 public: 00066 Argument(); 00067 00069 ~Argument(); 00070 00074 Argument(const CRef& in_ref); 00075 00079 Argument(const Argument& in_obj); 00080 00085 bool IsA( siClassID in_ClassID) const; 00086 00090 siClassID GetClassID() const; 00091 00097 Argument& operator=(const Argument& in_obj); 00098 00104 Argument& operator=(const CRef& in_ref); 00105 00111 CValue GetValue() const ; 00112 00128 CStatus PutValue(const CValue&) ; 00129 00135 siArgumentFlags GetFlags() const ; 00136 00144 ArgumentHandler GetHandler() const ; 00145 00156 CStatus PutHandler( const CString & in_strHandler ) ; 00157 00166 CStatus PutHandler( ArgumentHandler & in_Handler ) ; 00167 00168 private: 00169 Argument * operator&() const; 00170 Argument * operator&(); 00171 }; 00172 00173 //***************************************************************************** 00200 //***************************************************************************** 00201 class SICPPSDKDECL ArgumentArray : public CBase 00202 { 00203 public: 00205 ArgumentArray(); 00206 00208 ~ArgumentArray(); 00209 00213 ArgumentArray(const CRef& in_ref); 00214 00218 ArgumentArray(const ArgumentArray& in_obj); 00219 00224 bool IsA( siClassID in_ClassID) const; 00225 00229 siClassID GetClassID() const; 00230 00235 ArgumentArray& operator=(const ArgumentArray& in_obj); 00236 00242 ArgumentArray& operator=(const CRef& in_ref); 00243 00249 Argument GetItem( LONG in_index ) const; 00250 00256 Argument GetItem( const CString& in_name ) const; 00257 00263 Argument operator[]( LONG in_index ); 00264 00271 const Argument operator[]( LONG in_index ) const; 00272 00276 LONG GetCount() const; 00277 00296 Argument Add( 00297 const CString& in_strName, 00298 const CValue& in_dftValue = CValue() ) ; 00299 00315 Argument AddObjectArgument( 00316 const CString& in_strName ) ; 00317 00331 Argument AddWithHandler( 00332 const CString& in_strName, 00333 const CString& in_strHandlerName, 00334 const CString& in_Default = CString()) ; 00335 00349 Argument AddWithHandler( 00350 const CString& in_strName, 00351 ArgumentHandler& in_Handler, 00352 const CString& in_Default = CString()) ; 00353 00362 Argument AddCopy( const Argument & in_src ) ; 00363 00371 CStatus RemoveAll() ; 00372 00381 CStatus Remove( LONG in_index ) ; 00382 00391 CStatus Remove( const CString& in_strArgName ) ; 00392 } ; 00393 00394 }; 00395 00396 #endif