Ejemplo n.º 1
0
Method::Method(IMAGE_COR_ILMETHOD* pMethod)
{
    memset(&m_header, 0, 3 * sizeof(DWORD));
    m_header.Size = 3;
    m_header.Flags = CorILMethod_FatFormat;
    m_header.MaxStack = 8;

    ReadMethod(pMethod);
}
Ejemplo n.º 2
0
SEntityDef* CDefParser::ParseDef(const char* pszDefFn)
{
    TiXmlDocument doc;
    if(!doc.LoadFile(pszDefFn))
    {
        ThrowException(-1, "Failed to parse def file: %s.", pszDefFn);
    }

    TiXmlElement* root = doc.RootElement();
    SEntityDef* pDef = new SEntityDef;
	pDef->m_bHasCellClient = false;

    //parent
    TiXmlElement* parent = root->FirstChildElement("parent");
    if(parent)
    {
        pDef->m_parent.assign(parent->GetText());
    }
    else
    {
        pDef->m_parent = "";
    }

    //Properties
    TiXmlElement* props = root->FirstChildElement("Properties");
    if(props)
    {
        TiXmlElement* field = props->FirstChildElement();
        for(; field != NULL; field = field->NextSiblingElement())
        {
            _SEntityDefProperties* pProp = ReadProperty(pDef, field);
			//todo,检查有无重复的字段名
            pDef->m_properties.insert(make_pair(pProp->m_name, pProp));
            pDef->m_propertiesList.push_back(pProp);
            pDef->m_propertiesMap.AddNewString(field->Value());
        }
    }

    //ClientMethods
    TiXmlElement* methods = root->FirstChildElement("ClientMethods");
    if(methods)
    {
        TiXmlElement* m = methods->FirstChildElement();
        for(; m != NULL; m = m->NextSiblingElement())
        {
            _SEntityDefMethods* p = ReadMethod(m);
            p->m_nServerId = SERVER_CLIENT;
            pDef->m_clientMethods.insert(make_pair(p->m_funcName, p));
            pDef->m_clientMethodsMap.AddNewString(p->m_funcName);
        }
    }

    //BaseMethods
    methods = root->FirstChildElement("BaseMethods");
    if(methods)
    {
        TiXmlElement* m = methods->FirstChildElement();
        for(; m != NULL; m = m->NextSiblingElement())
        {
            _SEntityDefMethods* p = ReadMethod(m);
            p->m_nServerId = SERVER_BASEAPP;
            pDef->m_baseMethods.insert(make_pair(p->m_funcName, p));
            pDef->m_baseMethodsMap.AddNewString(p->m_funcName);
        }
    }

    //CellMethods
	methods = root->FirstChildElement("CellMethods");
	if(methods)
	{
		TiXmlElement* m = methods->FirstChildElement();
		for(; m != NULL; m = m->NextSiblingElement())
		{
			_SEntityDefMethods* p = ReadMethod(m);
			p->m_nServerId = SERVER_CELLAPP;
			pDef->m_cellMethods.insert(make_pair(p->m_funcName, p));
			pDef->m_cellMethodsMap.AddNewString(p->m_funcName);
		}
	}

    return pDef;
}