Ejemplo n.º 1
0
CXMLElement *CDesignCollection::FindSystemFragment (const CString &sName, CSystemTable **retpTable) const

//	FindSystemFragment
//
//	Looks up the given system fragment in all system tables

	{
	int i;

	for (i = 0; i < GetCount(designSystemTable); i++)
		{
		CSystemTable *pTable = CSystemTable::AsType(GetEntry(designSystemTable, i));
		if (pTable)
			{
			CXMLElement *pFragment = pTable->FindElement(sName);
			if (pFragment)
				{
				if (retpTable)
					*retpTable = pTable;

				return pFragment;
				}
			}
		}

	return NULL;
	}
Ejemplo n.º 2
0
ALERROR CDesignCollection::AddSystemTable (SDesignLoadCtx &Ctx, CXMLElement *pDesc)

//	AddSystemTable
//
//	Add a system table as a design element
//	(We need this for backwards compatibility)

	{
	CSystemTable *pTable = new CSystemTable;
	pTable->InitFromXML(Ctx, pDesc);
	if (pTable->GetUNID() == 0)
		pTable->SetUNID(DEFAULT_SYSTEM_TABLE_UNID);

	return AddEntry(Ctx, pTable);
	}
Ejemplo n.º 3
0
ALERROR CExtension::LoadSystemTypesElement (SDesignLoadCtx &Ctx, CXMLElement *pDesc)

//	LoadSystemTypesElement
//
//	Loads <SystemTypes> element
//	(For backwards compatibility)

	{
	ALERROR error;
	int i;

	for (i = 0; i < pDesc->GetContentElementCount(); i++)
		{
		CXMLElement *pItem = pDesc->GetContentElement(i);

		if (strEquals(pItem->GetTag(), TABLES_TAG))
			{
			CSystemTable *pTable = new CSystemTable;
			pTable->InitFromXML(Ctx, pItem);
			if (pTable->GetUNID() == 0)
				pTable->SetUNID(DEFAULT_SYSTEM_TABLE_UNID);

			if (error = m_DesignTypes.AddEntry(pTable))
				{
				Ctx.sError = strPatternSubst(CONSTLIT("Error adding system table: %x"), pTable->GetUNID());
				return error;
				}
			}
		else
			{
			if (error = LoadDesignType(Ctx, pItem))
				return error;
			}
		}

	return NOERROR;
	}