|
|
#ifndef _SCHEMACLASSES_H_
#define _SCHEMACLASSES_H_
//#include "csyntax.h"
class COleDsSyntax; class CMainDoc;
typedef enum _tagCLASSATTR { ca_ERROR=0, ca_Name, ca_DisplayName, ca_CLSID, ca_PrimaryInterface, ca_OID, ca_Abstract, ca_DerivedFrom, ca_Containment, ca_Container, ca_HelpFileName, ca_HelpFileContext, ca_MethodsCount, ca_Limit } CLASSATTR;
typedef enum _tagFUNCSETATTR { fa_ERROR=0, fa_Name, fa_DisplayName, fa_Limit } FUNCSETATTR;
typedef enum _tagMETHODATTR { ma_ERROR=0, ma_Name, ma_DisplayName, ma_Limit } METHODATTR;
typedef enum _tagPROPATTR { pa_ERROR=0, pa_Name, pa_DisplayName, pa_Type, pa_DsNames, pa_OID, pa_MaxRange, pa_MinRange, pa_Mandatory, pa_MultiValued, pa_Limit } PROPATTR;
class CMethod: public CObject { public: CMethod( ); CMethod( ITypeInfo*, FUNCDESC* ); ~CMethod( );
CString GetName( ); int GetArgCount( ); int GetArgOptionalCount( ); VARTYPE GetMethodReturnType( ); BOOL ConvertArgument( int nArg, CString strArg, VARIANT* ); HRESULT CallMethod ( IDispatch* pIDispatch, BOOL* pDisplay ); CString GetAttribute ( METHODATTR ); HRESULT PutAttribute ( METHODATTR, CString& );
private: int m_nArgs; int m_nArgsOpt; CString m_strName; VARTYPE* m_pArgTypes; VARTYPE m_ReturnType; CStringArray m_strArgNames; CString m_strAttributes[ ma_Limit ]; };
class CProperty: public CObject { public: CProperty ( IADs* ); CProperty ( ); ~CProperty ( ); CProperty ( TCHAR* pszName, TCHAR* pszSyntax, BOOL bMultiValued = FALSE );
//methods
CString VarToDisplayString( VARIANT&, BOOL bUseEx ); BOOL DisplayStringToDispParams( CString&, DISPPARAMS&, BOOL bEx ); BOOL SetMandatory ( BOOL ); BOOL GetMandatory ( ); CString GetAttribute ( PROPATTR ); HRESULT PutAttribute ( PROPATTR, CString& ); BOOL SetSyntaxID ( DWORD ); DWORD GetSyntaxID ( ); HRESULT Native2Value ( ADS_ATTR_INFO*, CString& ); HRESULT Value2Native ( ADS_ATTR_INFO*, CString& ); void FreeAttrInfo ( ADS_ATTR_INFO* );
protected: void CreateSyntax( ADSTYPE ); BOOL m_bMandatory; BOOL m_bMultiValued; DWORD m_dwSyntaxID; CString m_strAttributes[ pa_Limit ]; BOOL m_bDefaultSyntax;
COleDsSyntax* m_pSyntax; };
/*class CFuncSet: public CObject
{ public: CFuncSet ( CString& ); CFuncSet ( ); ~CFuncSet( );
//methods
BOOL HasMandatoryProperties ( ); void AddProperty ( CProperty* ); int GetPropertyCount ( ); CString GetAttribute ( int, PROPATTR ); HRESULT PutAttribute ( int, PROPATTR, CString& );
CString GetAttribute ( int, METHODATTR ); HRESULT PutAttribute ( int, METHODATTR, CString& ); CString GetAttribute ( FUNCSETATTR ); HRESULT PutAttribute ( FUNCSETATTR, CString& );
CString VarToDisplayString ( int, VARIANT&, BOOL bUseEx ); BOOL DisplayStringToDispParams ( int, CString&, DISPPARAMS&, BOOL bUseEx ); int LookupProperty ( CString& ); CProperty* GetProperty ( int ); CMethod* GetMethod ( int ); HRESULT LoadMethodsInformation ( ITypeInfo* );
protected: CProperty* GetProperty( CString& );
protected: CString m_strAttributes[ fa_Limit ]; CObArray* m_pProperties; CObArray* m_pMethods; };*/
class CClass: public CObject {
public: CClass ( CString&, CMainDoc* pMainDoc ); CClass ( ); ~CClass ( ); CClass ( TCHAR* pszClass, REFIID rPrimaryInterface );
//methods
BOOL HasMandatoryProperties ( void ); void AddProperty ( CProperty* ); //**************
CString GetAttribute ( CLASSATTR ); HRESULT PutAttribute ( CLASSATTR, CString& );
//**************
CString GetAttribute ( int, METHODATTR ); HRESULT PutAttribute ( int, METHODATTR, CString& ); //**************
CString GetAttribute ( int, PROPATTR ); HRESULT PutAttribute ( int, PROPATTR, CString& );
int GetPropertyCount ( void ); int GetMethodsCount ( void ); CMethod* GetMethod ( int ); CProperty* GetProperty ( int );
CString VarToDisplayString ( int, VARIANT&, BOOL bUseEx ); BOOL DisplayStringToDispParams ( int, CString&, DISPPARAMS&, BOOL bUseEx ); BOOL SupportContainer ( void ) { return m_bContainer; }; HRESULT LoadMethodsInformation ( TCHAR* ); HRESULT LoadMethodsInformation ( ITypeInfo* ); int LookupProperty ( CString& ); REFIID GetMethodsInterface ( );
protected: HRESULT ReadMandatoryPropertiesInformation ( VARIANT* ); HRESULT BuildOptionalPropertiesList ( IADsClass* ); HRESULT BuildOptionalPropertiesList ( IADsContainer* ); HRESULT BuildMandatoryPropertiesList ( IADsClass* ); HRESULT AddProperties ( IADsClass*, VARIANT&, BOOL bMandatory ); HRESULT AddProperty ( BSTR, BSTR, BOOL bMandatory ); CProperty* GetProperty( CString& );
protected: BOOL m_bContainer; CString m_strAttributes[ ca_Limit ]; CMainDoc* m_pMainDoc; REFIID m_refMethods;
public: CObArray* m_pProperties; CObArray* m_pMethods; };
#endif
|