#ifndef _FUNCTION_H_ #define _FUNCTION_H_ /* CFaxApiFunctionInfo class definition file. */ #include "param.h" /* Function index enumeration. */ /* Note that the function index enum is not related to the index into the */ /* Fax Api Function listbox. It is used by the Execute() member function */ /* of the CFaxApiFunctionInfo class (and possibly others). */ enum eFunctionIndex { // symbol // Function Name eFaxAbort, // FaxAbort eFaxClose, // FaxClose eFaxConnectFaxServerA, // FaxConnectFaxServerA eFaxConnectFaxServerW, // FaxConnectFaxServerW eFaxEnableRoutingMethodA, // FaxEnableRoutingMethodA eFaxEnableRoutingMethodW, // FaxEnableRoutingMethodW eFaxEnumJobsA, // FaxEnumJobsA eFaxEnumJobsW, // FaxEnumJobsW eFaxEnumPortsA, // FaxEnumPortsA eFaxEnumPortsW, // FaxEnumPortsW eFaxEnumRoutingMethodsA, // FaxEnumRoutingMethodsA eFaxEnumRoutingMethodsW, // FaxEnumRoutingMethodsW eFaxFreeBuffer, // FaxFreeBuffer eFaxGetConfigurationA, // FaxGetConfigurationA eFaxGetConfigurationW, // FaxGetConfigurationW eFaxGetDeviceStatusA, // FaxGetDeviceStatusA eFaxGetDeviceStatusW, // FaxGetDeviceStatusW eFaxGetJobA, // FaxGetJobA eFaxGetJobW, // FaxGetJobW eFaxGetLoggingCategoriesA, // FaxGetLoggingCategoriesA eFaxGetLoggingCategoriesW, // FaxGetLoggingCategoriesW eFaxGetPageData, // FaxGetPageData eFaxGetPortA, // FaxGetPortA eFaxGetPortW, // FaxGetPortW eFaxGetRoutingInfoA, // FaxGetRoutingInfoA eFaxGetRoutingInfoW, // FaxGetRoutingInfoW eFaxInitializeEventQueue, // FaxInitializeEventQueue #ifdef ELIMINATED_FROM_API eFaxOpenJob, // FaxOpenJob #endif // ELIMINATED_FROM_API eFaxOpenPort, // FaxOpenPort eFaxPrintCoverPageA, // FaxPrintCoverPageA eFaxPrintCoverPageW, // FaxPrintCoverPageW eFaxReceiveDocumentA, // FaxReceiveDocumentA eFaxReceiveDocumentW, // FaxReceiveDocumentW eFaxSendDocumentA, // FaxSendDocumentA eFaxSendDocumentW, // FaxSendDocumentW eFaxSetConfigurationA, // FaxSetConfigurationA eFaxSetConfigurationW, // FaxSetConfigurationW eFaxSetJobA, // FaxSetJobA eFaxSetJobW, // FaxSetJobW eFaxSetLoggingCategoriesA, // FaxSetLoggingCategoriesA eFaxSetLoggingCategoriesW, // FaxSetLoggingCategoriesW eFaxSetPortA, // FaxSetPortA eFaxSetPortW, // FaxSetPortW eFaxSetRoutingInfoA, // FaxSetRoutingInfoA eFaxSetRoutingInfoW, // FaxSetRoutingInfoW eFaxStartPrintJobA, // FaxStartPrintJobA eFaxStartPrintJobW, // FaxStartPrintJobW eIllegalFunctionIndex // indicates that the function // index is illegal }; /* The CFaxApiFunctionInfo class is used to manage all of the information */ /* pertaining to a single Fax API function. */ class CFaxApiFunctionInfo : public CObject { public: CFaxApiFunctionInfo(); // constructor CFaxApiFunctionInfo( const CString & rcsFunctionName, const CString & rcsFunctionPrototype, const CString & rcsReturnType, const CString & rcsReturnValueDescription, const CString & rcsRemarks ); ~CFaxApiFunctionInfo(); // destructor void SetFunctionName( CString & rcsFunctionName ); CString & GetFunctionName(); CString & GetFunctionPrototype(); CString & GetReturnValueDescription(); CString & GetRemarks(); void GetParameterName( int xParameterIndex, CString & rcsParameterName ); void FormatParameterValueForOutput( int xParameterIndex, CString & rcsParameterValue ); void * GetParameterValuePointer( int xParameterIndex ); int GetNumberOfParameters(); int GetMaxParamValueStringLength( int xParameterIndex ); BOOL StoreParameterValue( int xParameterIndex, const CString & rcsParameterValue ); eParamType GetParameterTypeEnum( int xParameterIndex ); CString GetParameterTypeString( int xParameterIndex ); CString GetParameterDescription( int xParameterIndex ); void FormatReturnValueForOutput( CString & csReturnValue ); void Execute(); private: void * AllocateStorageForReturnValue( const CString & rcsReturnType ); eFunctionIndex GetFunctionIndexEnum( const CString & rcsFunctionName ); private: /* data members */ CString m_csFunctionName; CString m_csFunctionPrototype; CString m_csReturnType; CString m_csReturnValueDescription; CString m_csRemarks; eFunctionIndex m_eFunctionIndex; /* Since we don't know what type the return value is (each API function */ /* may be different) the storage must be allocated dynamically. The */ /* following data member is a pointer to the storage for the return */ /* value. */ void * m_pvReturnValue; CFaxApiFunctionParameterInfo m_cParameterInfo; }; #endif // _FUNCTION_H_