📄 mocascript.h
字号:
#define CSMOOP_GET_BASIC_OPERATOR(_dwOperator) LOBYTE(LOWORD(_dwOperator))
#define CSMOOP_MAKE_OPERATOR(_nBasicOper, _nExtendedOperator) ((DWORD)((WORD)(_nBasicOper) | (WORD)(_nExtendedOperator))
DWORD CharOperatorToMSOOperator(char chOperator); /// ML -- TD 1/25/2001 EXTEND_COMPILER_BEYOND_DOUBLES
#define CHAR_TO_MSO_OPER(_chOperator) CharOperatorToMSOOperator(_chOperator) /// ML -- TD 1/25/2001 EXTEND_COMPILER_BEYOND_DOUBLES
/// end EXTEND_COMPILER_BEYOND_DOUBLES
/// end EXPRESSION_HANDLING_USING_OBJECT
/// ML 1/26/2000 IMPLEMENTING_ARRAYS
class CScriptMocaObject;
#define _TEST_DIMENSIONS_FOR_EACH_GET_VALUE_
/*typedef struct tagMSOINDICES {
INT nIndexFirstDim;
INT nIndexSecondDim;
} MSOINDICES, FAR *LPMSOINDICES;
typedef struct tagMSOOBJVECT {
CScriptMocaObject *pMSO;
MSOINDICES stMSOIndices;
} MSOOBJVECT, FAR *LPMSOOBJVECT;
*/
#define DECL_DEFAULT_INIT_MSOINDICES(_stName) MSOINDICES _stName = {0}
#define DECL_DEFAULT_INIT_MSOOBJVECT(_stName) MSOOBJVECT _stName = {0}
/// ML 2/22/2001 VECTOR_WORK
//#define DECL_INIT_MSOOBJVECT(_stName, _pMSO, _nIndexFirstDim) MSOOBJVECT _stName = {(_pMSO), {(_nIndexFirstDim), 0}}
#define DECL_INIT_MSOOBJVECT(_stName, _pMSO, _nIndexFirstDim) MSOOBJVECT _stName = {(_pMSO), {0UL, (_nIndexFirstDim), 0, 0}}
/// end VECTOR_WORK
/// ML 2/26/2001 MORE_DEREFERENCING_IMPROVEMENTS
#define DECL_INIT_MSOOBJVECT_ALL_INDICES(_stName, _pMSO, _dwDescr, _nIndexFirstDim, _nIndexSecondDim, _nIndexThirdDim) MSOOBJVECT _stName = {(_pMSO), {(_dwDescr), (_nIndexFirstDim), (_nIndexSecondDim), (_nIndexThirdDim)}}
/// end MORE_DEREFERENCING_IMPROVEMENTS
#define MSO_DEFAULT_ARRAY_INDEX 0
#define MSO_DEFAULT_ARRAY_SIZE 1
/// end IMPLEMENTING_ARRAYS
/// TD 3/7/2001 SEPERATE_CREATION_OF_OBJECT_FROME_ADDING_THEM_TO_STACK
#define SMOFLAG_DONOT_DELETE_ON_POP 0x0001
/// end SEPERATE_CREATION_OF_OBJECT_FROME_ADDING_THEM_TO_STACK
#define SMOFLAG_DATA_MEMORY_IS_EXTERNAL 0x0002 /// TD 5-14-01
#define SMOFLAG_DATA_VAR_FROM_OP_ENCRIPT 0x0004 /// TD 1-14-03 QA70-3671 v7.0487 LIMTED_ACCESS_TO_ACTIVEX_CONTROLS
/// ML 3/7/2001 MORE_FRIENDLY_WAY_TO_GET_BUFFER
int MSGetBuffer(MSOOBJVECT &stPtrObj, LPVOID *plpVoid, INT nNumBytes = 0);
int MSReleaseBuffer(MSOOBJVECT &stPtrObj);
/// end MORE_FRIENDLY_WAY_TO_GET_BUFFER
#define BITFIELD_SIZE_MAX_BITS 32// TD 1-17-01 t9463 IMPLEMENT_BITFIELDS_SUPPORT
/// TD 12-23-02 TREE_CLASS_IN_EXTERNAL_DLL_SHARE_STRUCTURE_DETAILS
// The following class is a communicator between the compiler and MOCA dll, to transfer information about data types
#define IS_TYPE_TREENODE_OR_DERIVED(_ID) IsTypeTreNodeOrDerived(_ID)
BOOL IsTypeTreNodeOrDerived(int nTyepID);
class CSMOAlternateBase;
class CScriptMocaObject;
class CSMOAlternateBase
{
public:
virtual int GetMemberType(int indexMember, CString *pstrName){if(pstrName) pstrName->Empty(); return LTT_ID_INVALID;}
virtual BOOL MemberValue(int nMemberIndex, int &nVal, BOOL bGet = TRUE){return FALSE;}
virtual BOOL MemberValue(int nMemberIndex, double &dVal, BOOL bGet = TRUE){return FALSE;}
virtual BOOL MemberValue(int nMemberIndex, CString &strVal, BOOL bGet = TRUE){return FALSE;}
virtual int GetMember(INT nArrayIndex, INT nMemberIndex, CScriptMocaObject *&pMSOMember){ASSERT(FALSE); return -1;}
virtual CSMOAlternateBase * GetMemberStruct(int indexMember){return NULL;}
protected:
CSMOAlternateBase(){}
} ;
/// END TREE_CLASS_IN_EXTERNAL_DLL_SHARE_STRUCTURE_DETAILS
/// TD 3-4-03 QA70-3571 VCBASE_FOR_OCCLASS
#ifdef SUPPOR_OC_STUCT_CLASS
#define IFOCC_INIT_PTR_NULL(_PTR) _PTR = NULL;
#define IFOCC_DELETE_PTR_SAFE(_PTR) NICE_SAFE_REMOVAL(_PTR);
#endif// SUPPOR_OC_STUCT_CLASS
#ifndef SUPPOR_OC_STUCT_CLASS
#define IFOCC_INIT_PTR_NULL(_PTR)
#define IFOCC_DELETE_PTR_SAFE(_PTR)
#endif// SUPPOR_OC_STUCT_CLASS
////////////////////////////////////////////////////////////////////////////
// CScriptMocaObject header/body class
//
/// TD 2/15/2001 NEW_BASECLASS_FOR_TYPE_OBJECTS
//class CScriptMocaObject : public CMOCAObjBase
class CTypeBase; //Forward declaration
class CStorageBase; /// TD 10-4-02 QA70-2177 v7.0408 ORIGIN_C_ACCESS_TO_STORAGE
class MOCA_EXP_CLASS CScriptMocaObject : public CTypeBase
/// end NEW_BASECLASS_FOR_TYPE_OBJECTS
{
MOCA_DECLARE_DYNAMIC(CScriptMocaObject);
public:
CScriptMocaObject();
~CScriptMocaObject();
public:
virtual DWORD Execute(HWND hWnd, LPCALLBK lpfnCallBack, LPCSTR lpcszVar, LPCSTR lpcszArg, LPDOUBLE lpdValue, WORD msg);
/// ML 5/15/2001 PASSING_SCRIPT_MOCA_OBJECTS_TO_EXTERNAL_FUNCTIONS
virtual BOOL IsPassMSOToExternalFuncCallAsPtr();
/// end PASSING_SCRIPT_MOCA_OBJECTS_TO_EXTERNAL_FUNCTIONS
/// ML 11/2/2001 CANNOT_RESET_STRING_AS_RETURNVALUE_AFTER_EXTERNAL_FUNCTION_CALL
virtual int ReturnValueAfterExternalFunctionCallCleanup(DWORD dwCtrl = 0UL);
/// end CANNOT_RESET_STRING_AS_RETURNVALUE_AFTER_EXTERNAL_FUNCTION_CALL
/// ML 4/9/2002 QA70-929 ORIGINC_FUNCTION_POINTERS
#ifdef __ORIGIN_C_FUNCTION_POINTERS__
virtual int SetOneValueFrom_va_list(va_list &arg, DWORD dwCtrl = 0UL, LPMSOINDICES lpMSOIndices = NULL);
virtual int GetValueToBuffer(LPVOID lpBuffer, LPMSOINDICES lpMSOIndices = NULL);
#endif // __ORIGIN_C_FUNCTION_POINTERS__
/// end ORIGINC_FUNCTION_POINTERS
// AW 04/29/02 QA70-1636 DATASET_COPY_IN_ORIGINC
/// DVT 4/22/03 ANDREW_WILL_UPDATE_THE_KEYWORD
//virtual void Update(int nArrayIndex = 0, BOOL bFromOrigin = TRUE, int nReDrawMode = -1) { ASSERT(FALSE); } // must realized in derived class
virtual void Update(int nArrayIndex = 0, BOOL bFromOrigin = TRUE, int nReDrawMode = -1) {} // must realized in derived class
/// end ANDREW_WILL_UPDATE_THE_KEYWORD
// END DATASET_COPY_IN_ORIGINC
/// ML 2/1/2001 STRING_ARRAYS
virtual int GetString(CString &strValue, const MSOINDICES &stIndices);
/// end STRING_ARRAYS
virtual BOOL GetString(CString &strValue);
virtual BOOL SetString(LPCTSTR lpcszValue);
virtual BOOL GetString(CString &strValue, UINT index);
virtual BOOL SetString(LPCTSTR lpcszValue, UINT index);
virtual BOOL GetInt(int &nVal);
virtual BOOL SetInt(int nVal);
virtual BOOL GetInt(int &nVal, UINT index);
virtual BOOL SetInt(int nVal, UINT index);
virtual BOOL GetDouble(double &dVal);
virtual BOOL SetDouble(double dVal);
virtual BOOL GetDouble(double &dVal, UINT index);
virtual BOOL SetDouble(double dVal, UINT index);
// AW 08/09/02 QA70-2400 v7.0365 GET_INTERNALTYPE_OF_VECTORBASE
/// AW 06/25/03 QA70-4714 v7.0606 SUPPORT_REF_RETURN
//int GetInternalDataTypeID();
int GetInternalDataTypeID(BOOL bGetInternalID = TRUE);
/// END SUPPORT_REF_RETURN
// END GET_INTERNALTYPE_OF_VECTORBASE
/// AW 04/40/03 QA70-4359 v7.0574 SUPPORT_NULL_FOR_REFERENCE
virtual BOOL RequiresMemoryPtr() { return FALSE; }
/// END SUPPORT_NULL_FOR_REFERENCE
virtual MODATAID GetDataID(int nArrayIndex = 0); // **TEMP** gets Dataset ID -- The seriesPtr for the interpreter
/// TD 11-13-01 ADD_ATTACH_USING_WORKSHEET_AND_COLUMN_REF
virtual MODATAID GetDataID(int nArrayIndex, int nSubDataIndex); // **TEMP** gets Dataset ID/FramePtr(nSubDataIndex = -1) -- The seriesPtr for the interpreter
/// end ADD_ATTACH_USING_WORKSHEET_AND_COLUMN_REF
/// ML 10/15/2003 QA70-5361 UPDATING_WKS_FROM_EXCEL_FOR_GETTING_INTO_MATRIX
virtual BOOL UpdateFromExternalSource(int nArrayIndex, int nSubDataIndex = 0, DWORD dwCtrl = 0UL);
/// end UPDATING_WKS_FROM_EXCEL_FOR_GETTING_INTO_MATRIX
virtual BOOL ShiftIndex(int nShift);//For Pointer arithmatics only
virtual CScriptMocaObject* DeReference(int index); //Vectors and Higher order Matrices will create a lower dimentional matrix and return it
//These pointers allocated /deleted by the matrix objects and should maintain copys
/// JCG 03/04/03 QA70-4013 v7.0528 CLEAN_UP_OC_MTX_AND_RECT_COODINATES
virtual BOOL SetDataRange( int nArrayIndex, int iR1, int iR2, int iC1 = 0, int iC2 = -1 );
/// end CLEAN_UP_OC_MTX_AND_RECT_COODINATES
/// ML 6/22/2001 t9264 MEMORY_PTRS_AS_STRUCTURE_MEMBERS_PASSED_TO_FUNCS
virtual int SetMemberMemory(LPVOID lpData, UINT nSize = 0);
virtual int SetExternalDataByPtr(LPVOID *plpData);
/// end MEMORY_PTRS_AS_STRUCTURE_MEMBERS_PASSED_TO_FUNCS
/// ML 6/18/2001 t9260 MULTIPLE_POINTERS
virtual int CheckCreateMemoryPtrObjects(INT nMultiplicity, UINT nBaseTypeId, LPMSOINDICES lpMSOIndices, DWORD dwCtrl = 0UL);
virtual int GetMemoryPtrAddress(LPVOID *plpVoid, const MSOINDICES &stMSOIndices);
virtual int GetValueForPtrAsExternalFuncArg(LPVOID *plpVoid, LPMSOINDICES lpMSOIndices);
virtual int SetMemoryPtrObjectCreationID(UINT nID);
//AW 02/27/03 QA70-3984 v7.0522 SUPPORT_CLASS_BASE_CALSS
virtual int GetBaseClass(INT nArrayIndex, CScriptMocaObject *&pMSOBassClass) { ASSERT(FALSE); return 1; }
// END SUPPORT_CLASS_BASE_CALSS
/// AW 03/12/03 QA70-2336 v7.0534 SORT_METHODS_IN_WORKSHEET
virtual int GetBufferSize(const MSOINDICES &stMSOIndices, int &BufferSize) { ASSERT(FALSE); return 1; }
// END SORT_METHODS_IN_WORKSHEET
/// ML 10/26/2001 HANDLING_WRONG_ARGUMENT_VARIANT_TYPES_IN_COM_EVENT_HANDLERS
virtual BOOL SetPtrArgForCOMEventHandlingFromWrongVariantType(OCONEVARIANT &varArg, PLONG plBuffer, DWORD dwCtrl = 0UL);
/// end HANDLING_WRONG_ARGUMENT_VARIANT_TYPES_IN_COM_EVENT_HANDLERS
// 4 bits are more than plenty for, e.g., double***** (multiplicity corresponds to the number of asterisks - 1; so it is 0 for double*, it is 1 for double**, etc.)
/// ML 10/11/2001 HANDLE_ASSIGNING_ARRAY_PTRS_TO_MULTIPLE_PTR
//#define SET_MEM_PTR_OBJ_CREATE_ID(_nVar, _baseType, _nPtrMultiplicity) ((_nVar) = (DWORD)((BYTE)(_nPtrMultiplicity) << 28) | LTT_BASE_ID(_baseType))
#define SET_MEM_PTR_OBJ_CREATE_ID(_nVar, _baseType, _nPtrMultiplicity, _nArrSize) ((_nVar) = (DWORD)((BYTE)(_nPtrMultiplicity) << 28) | (DWORD)((BYTE)(_nArrSize) << 24) | LTT_BASE_ID(_baseType))
/// end HANDLE_ASSIGNING_ARRAY_PTRS_TO_MULTIPLE_PTR
#define GET_MEM_PTR_OBJ_CREATE_BASE_ID(_nVar) LTT_BASE_ID(_nVar)
/// ML 10/11/2001 HANDLE_ASSIGNING_ARRAY_PTRS_TO_MULTIPLE_PTR
// The size of the (single) array of memory ptrs
#define GET_MEM_PTR_OBJ_ARRAY_SIZE(_nVar) (((_nVar) & 0x0F000000) >> 24)
/// end HANDLE_ASSIGNING_ARRAY_PTRS_TO_MULTIPLE_PTR
#define GET_MEM_PTR_OBJ_CREATE_MULTIPLICITY(_nVar) (((_nVar) >> 28) + (0 < GET_MEM_PTR_OBJ_ARRAY_SIZE(_nVar) ? 1 : 0))
/// end MULTIPLE_POINTERS
/// ML 6/22/2001 VECTOR_OR_MATRIX_ASSIGNMENT_LHS_TEMPORARY_BUG
virtual int IsNoVectorOrMatrixSource(BOOL &bIsNoVectorOrMatrixSource, LPSMOOPERATECTXT lpctxt = NULL);
/// end VECTOR_OR_MATRIX_ASSIGNMENT_LHS_TEMPORARY_BUG
//---------- CPY 4/5/01 RENAME_GET_BUFFER_FOR_MULTI_DIM
// we want to use GetBuffer for higher level calls in OriginCObject
// /// ML 3/5/2001 POINTERS_POINTERS
// virtual int GetBuffer(LPVOID *plpVoid, INT nNumBytes = 0, LPMSOINDICES lpMSOIndices = NULL);
// virtual int ReleaseBuffer(LPMSOINDICES lpMSOIndices = NULL);
// /// end POINTERS_POINTERS
virtual int GetBufferMSO(LPVOID *plpVoid, INT nNumBytes = 0, LPMSOINDICES lpMSOIndices = NULL);
virtual int ReleaseBufferMSO(LPMSOINDICES lpMSOIndices = NULL);
/// TD 1-27-02 TREE_CLASS_IN_EXTERNAL_DLL_SHARE_STRUCTURE_DETAOILS
// The following functions only applys to vector for now
virtual int GetVariantArray(OCONEVARIANT &tVal, MSOINDICES *pstIndex = NULL);
virtual int SetVariantArray(OCONEVARIANT &tVal, MSOINDICES *pstIndex = NULL);
/// end TREE_CLASS_IN_EXTERNAL_DLL_SHARE_STRUCTURE_DETAOILS
//---------- end CPY 4/5/01 RENAME_GET_BUFFER_FOR_MULTI_DIM
/// TD 4-10-2001 t9050 ADD_FUNCTION_TO_ACCESS_UNDERLYING_DATA_STRUCTURE
virtual LPVOID GetArgObjectPtrMSO(int nTypeID, LPMSOINDICES lpMSOIndices = NULL);
/// end ADD_FUNCTION_TO_ACCESS_UNDERLYING_DATA_STRUCTURE
/// ML 8/8/2001 t9309 MORE_COM_ACCESS_WORK
virtual int GetDispatchInterface(LPVOID &lpIDisp, const MSOINDICES &stMSOIndices);
/// end t9309 MORE_COM_ACCESS_WORK
/// ML 5/20/2001 QA70-1851 GETTING_SELECTED_COLUMNS_ORIGIN_C
virtual int SetBufferSize(const MSOINDICES &stMSOIndices, int nBufferSize);
/// end GETTING_SELECTED_COLUMNS_ORIGIN_C
/// ML 4/9/2002 QA70-929 ORIGINC_FUNCTION_POINTERS
#ifdef __ORIGIN_C_FUNCTION_POINTERS__
virtual int GetLTFunction(LPVOID &lpLTFuncPtr, LPMSOINDICES lpMSOIndices = NULL);
#endif // __ORIGIN_C_FUNCTION_POINTERS__
/// end ORIGINC_FUNCTION_POINTERS
/// TD 2/27/2001 SET_VALUES_WITH_INDECES
virtual int SetInt(int nVal, const MSOINDICES &stIndices);
virtual int SetDouble(double dVal, const MSOINDICES &stIndices);
virtual int SetString(LPCSTR lpcszVal, const MSOINDICES &stIndices);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -