xsi_comapihandler.h
Go to the documentation of this file.
00001 //*****************************************************************************
00010 //*****************************************************************************
00011 
00012 #if (_MSC_VER > 1000) || defined(SGI_COMPILER)
00013 #pragma once
00014 #endif
00015 
00016 #ifndef __CCOMAPIHANDLER__H_
00017 #define __CCOMAPIHANDLER__H_
00018 
00019 #include <xsi_ref.h>
00020 #include <xsi_string.h>
00021 #include <xsi_value.h>
00022 #include <xsi_status.h>
00023 
00024 namespace XSI {
00025 
00026 //*****************************************************************************
00079 //*****************************************************************************
00080 
00081 class SICPPSDKDECL CComAPIHandler
00082 {
00083 public:
00085     enum InvokeFlag
00086     {
00087         Method,             
00088         PropertyGet,        
00089         PropertyPut,        
00090         PropertyPutRef      
00091     };
00092 
00094     CComAPIHandler();
00095 
00097     virtual ~CComAPIHandler();
00098 
00135     CComAPIHandler( const CValue& in_val );
00136 
00140     CComAPIHandler(const CComAPIHandler& in_obj);
00141 
00145     CComAPIHandler& operator=( const CComAPIHandler& in_obj);
00146 
00154     CStatus CreateInstance( const CString& in_name );
00155 
00164     CStatus Attach( const CValue& in_val );
00165 
00170     CStatus Detach(void);
00171 
00176     CValue GetProperty(const CString& in_name ) const;
00177 
00187     CStatus PutProperty( const CString& in_name, const CValue& in_newval ) const;
00188 
00199     CStatus Call(   const CString& in_name,
00200                     CValue& io_return,
00201                     const CValueArray& in_args = CValueArray() ) const;
00202 
00213     CStatus Call(   const CString& in_name,
00214                     CValue& io_return,
00215                     const CValue& in_arg ) const;
00216 
00228     CStatus Call(   const CString& in_name,
00229                     CValue& io_return,
00230                     const CValue& in_arg,
00231                     const CValue& in_arg1 ) const;
00232 
00245     CStatus Call(   const CString& in_name,
00246                     CValue& io_return,
00247                     const CValue& in_arg,
00248                     const CValue& in_arg1,
00249                     const CValue& in_arg2 ) const;
00250 
00264     CStatus Call(   const CString& in_name,
00265                     CValue& io_return,
00266                     const CValue& in_arg,
00267                     const CValue& in_arg1,
00268                     const CValue& in_arg2,
00269                     const CValue& in_arg3 ) const;
00270 
00357     CStatus Invoke( const CString& in_name,
00358                     LONG in_flags,
00359                     CValue& io_return,
00360                     const CValueArray& in_args = CValueArray() ) const;
00361 
00365     CValue GetRef(void) const;
00366 
00367 private:
00368     void* m_ptr; // pointer to Softimage OM object
00369 };
00370 };
00371 #endif // __CCOMAPIHANDLER__H_