示例#1
0
char const*  CMyContextBase::GetTypeString(void)const
{
	if (GetMetaData()->GetTaskDef()->GetDefaultLanguage() == 0)
		return GetBaseInfo()->EngTypeString;
	else
		return GetBaseInfo()->RusTypeString;
}
示例#2
0
char const* CMyContextBase::GetMethodName(int iMethNum,int iMethodAlias)const
{
	_S_MyContextBaseInfo* pInfo=GetBaseInfo();
	if(((DWORD)iMethNum)>=pInfo->methCount || ((DWORD)iMethodAlias)>1)
		return NULL;
	return GetBaseInfo()->pMethodDef[iMethNum].Names[iMethodAlias];
}
示例#3
0
int CMyContextBase::IsPropWritable(int iPropNum)const
{
	_S_MyContextBaseInfo* pInfo=GetBaseInfo();
	if(((DWORD)iPropNum)>=pInfo->propCount)
		return 0;
	return pInfo->pPropDef[iPropNum].pSetProp!=NULL;
}
示例#4
0
char const* CMyContextBase::GetPropName(int iPropNum, int iAlias)const
{	
	_S_MyContextBaseInfo* pInfo=GetBaseInfo();
	if(((DWORD)iPropNum)>=pInfo->propCount || ((DWORD)iAlias)>1)
		return 0;
	return pInfo->pPropDef[iPropNum].Names[iAlias];
}
示例#5
0
void CRecordInfo::Serialize(CArchive& ar)
{
	if (ar.IsStoring()) {
		ar << ARCHIVE_VERSION;
		ar << sizeof(RECORD_INFO);
		ar.Write(&GetBaseInfo(), sizeof(RECORD_INFO));
	} else {
		int	Version;
		ar >> Version;
		if (Version > ARCHIVE_VERSION)
			AfxThrowArchiveException(CArchiveException::badIndex, ar.m_strFileName);
		int	BaseInfoSize;
		ar >> BaseInfoSize;
		ar.Read(&GetBaseInfo(), BaseInfoSize);
	}
}
示例#6
0
int CMyContextBase::SetPropVal(int iPropNum,CValue const &vValue)
{
	_S_MyContextBaseInfo* pInfo=GetBaseInfo();
	if(((DWORD)iPropNum)>=pInfo->propCount)
		return 0;
	return (this->*pInfo->pPropDef[iPropNum].pSetProp)(vValue);
}
示例#7
0
void COptionsInfo::Copy(const COptionsInfo& Info)
{
	CEngineOptions::Copy(Info);	// copy base class
	const OPTIONS_INFO *src = &Info;	// automatic upcast to base struct
	memcpy(&GetBaseInfo(), src, sizeof(OPTIONS_INFO));
	m_MidiDevName	= Info.m_MidiDevName;
}
示例#8
0
int  CMyContextBase::FindProp(char const * Name)const
{
    _S_MyContextBaseInfo* pInfo = GetBaseInfo();
    if (pInfo->propCount)
	    return (int)pInfo->pPropMap->GetKey(Name);
    else
        return -1;
}
示例#9
0
int CMyContextBase::FindMethod(char const * lpMethodName)const
{
    _S_MyContextBaseInfo* pInfo = GetBaseInfo();
    if (pInfo->methCount)
	    return (int)pInfo->pMethMap->GetKey(lpMethodName);
    else
        return -1;
}
示例#10
0
void COptionsInfo::Serialize(CArchive& ar)
{
	CEngineOptions::Serialize(ar);	// serialize base class
	if (ar.IsStoring()) {
		ar << ARCHIVE_VERSION;
		ar << sizeof(OPTIONS_INFO);
		ar.Write(&GetBaseInfo(), sizeof(OPTIONS_INFO));
		ar << m_MidiDevName;
	} else {
		int	Version;
		ar >> Version;
		if (Version > ARCHIVE_VERSION)
			AfxThrowArchiveException(CArchiveException::badIndex, ar.m_strFileName);
		int	BaseInfoSize;
		ar >> BaseInfoSize;
		ar.Read(&GetBaseInfo(), BaseInfoSize);
		ar >> m_MidiDevName;
	}
}
示例#11
0
int CMyContextBase::GetParamDefValue(int iMethodNum,int iParamNum,CValue *pDefValue)const
{
	_S_MyContextBaseInfo* pInfo=GetBaseInfo();
	if(((DWORD)iMethodNum)>=pInfo->methCount || ((DWORD)iParamNum)>=pInfo->pMethodDef[iMethodNum].NumberOfParam)
		return FALSE;
	PF_GET_PARAM_DEF pFunc=pInfo->pMethodDef[iMethodNum].pDefValProc;
	if(pFunc)
		return (this->*pFunc)(iParamNum,pDefValue);
	return FALSE;
}
示例#12
0
int CMyContextBase::IsOleContext(void)const
{
// artbear
  int regEBX = 0;
  __asm {
    mov regEBX, ebx // В этом регистре 1С хранит количество параметров при вызове метода
  }
  GetBaseInfo()->m_CountParametersInCallMethod = regEBX; // сохраним это значение
// end

	return FALSE;
}
示例#13
0
int CMyContextBase::CallAsProc(int iMethNum,CValue **ppValue)
{
	_S_MyContextBaseInfo* pInfo=GetBaseInfo();
	if(((DWORD)iMethNum)>=pInfo->methCount)
		return FALSE;
	
	const _S_MethDef& MethDef = pInfo->pMethodDef[iMethNum];
	if (MethDef.bIsUnLimParMethod)
	{
		return (this->*pInfo->pMethodDef[iMethNum].pDoProcWithUnLimParams)(pInfo->m_CountParametersInCallMethod, ppValue);
	}

	return (this->*pInfo->pMethodDef[iMethNum].pDoProc)(ppValue);
}
示例#14
0
int CMyContextBase::HasRetVal(int iMethodNum)const
{
	_S_MyContextBaseInfo* pInfo=GetBaseInfo();
	if(((DWORD)iMethodNum)>=pInfo->methCount)
		return 0;
	
	const _S_MethDef& MethDef = pInfo->pMethodDef[iMethodNum];
	if (MethDef.bIsUnLimParMethod)
	{
		return MethDef.pDoFuncWithUnLimParams != NULL;;
	}

	//return pInfo->pMethodDef[iMethodNum].pDoFunc != NULL;
	return MethDef.pDoFunc != NULL;
}
示例#15
0
int CMyContextBase::GetNParams(int iMethodNum)const
{
	_S_MyContextBaseInfo* pInfo=GetBaseInfo();
	if(((DWORD)iMethodNum)>=pInfo->methCount)
		return 0;
	
	const _S_MethDef& MethDef = pInfo->pMethodDef[iMethodNum];
	if (MethDef.bIsUnLimParMethod)
	{
		// если передали меньше параметров, чем должно быть по умолчанию,
		// 1С должна выдать стандартную ошибку о количестве параметров
 		return pInfo->m_CountParametersInCallMethod <= MethDef.NumberOfParam ? 
 			MethDef.NumberOfParam : pInfo->m_CountParametersInCallMethod;
		//return min(pInfo->m_CountParametersInCallMethod, MethDef.NumberOfParam);
	}

	//return pInfo->pMethodDef[iMethodNum].NumberOfParam;
	return MethDef.NumberOfParam;
}
示例#16
0
COptionsInfo::COptionsInfo()
{
	ZeroMemory(&GetBaseInfo(), sizeof(OPTIONS_INFO));
}
示例#17
0
CRecordInfo::CRecordInfo()
{
	ZeroMemory(&GetBaseInfo(), sizeof(RECORD_INFO));
}
示例#18
0
void CRecordInfo::Copy(const CRecordInfo& Info)
{
	const RECORD_INFO *src = &Info;	// automatic upcast to base struct
	memcpy(&GetBaseInfo(), src, sizeof(RECORD_INFO));
}
示例#19
0
int CMyContextBase::GetNMethods(void)const
{
	return GetBaseInfo()->methCount;
}
示例#20
0
int CMyContextBase::GetNProps(void)const
{
	return GetBaseInfo()->propCount;
}