⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mocascript.h

📁 图像处理的压缩算法
💻 H
📖 第 1 页 / 共 5 页
字号:


#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 + -