void NclLayoutConverter::addImportBaseToRegionBase(
		     void *parentObject, void *childObject) {

		map<int, RegionBase*>* bases;
		map<int, RegionBase*>::iterator i;
		string baseAlias, baseLocation;
		NclDocumentConverter *compiler;
		NclDocument *importedDocument;

		// get the external base alias and location
		baseAlias = XMLString::transcode(((DOMElement*)childObject)->
			    getAttribute(XMLString::transcode("alias")));

		baseLocation = XMLString::transcode(((DOMElement*)childObject)->
			    getAttribute(XMLString::transcode("documentURI")) );

		compiler = (NclDocumentConverter*)getDocumentParser();
		importedDocument = compiler->importDocument(baseLocation);
		if (importedDocument == NULL) {
			return;
		}

		bases = importedDocument->getRegionBases();
		if (bases == NULL || bases->empty()) {
			return;
		}

		// insert the imported base into the document region base
		i = bases->begin();
		while (i != bases->end()) {
			((RegionBase*) parentObject)->addBase(
				    i->second, baseAlias, baseLocation);
			++i;
		}
	}
Beispiel #2
0
void NclLayoutConverter::addImportBaseToRegionBase( void *parentObject, void *childObject ) {

	std::map<int, bptnl::RegionBase*>* bases;
	std::map<int, bptnl::RegionBase*>::iterator i;
	std::string baseAlias, baseLocation;
	NclDocumentConverter *compiler;
	bptn::NclDocument *importedDocument;

	bptcf::XMLChHandler* xmlHndl = getXmlHandler();

	// get the external base alias and location
	baseAlias = xmlHndl->getStr( ((DOMElement*) childObject)->getAttribute( xmlHndl->getXMLCh( "alias" ) ) );

	baseLocation = xmlHndl->getStr( ((DOMElement*) childObject)->getAttribute( xmlHndl->getXMLCh( "documentURI" ) ) );

	compiler = (NclDocumentConverter*) getDocumentParser();
	importedDocument = compiler->importDocument( baseLocation ); //TODO memory leak
	if (importedDocument == NULL) {
		return;
	}

	bases = importedDocument->getRegionBases();
	if (bases == NULL || bases->empty()) {
		return;
	}

	// insert the imported base into the document region base
	i = bases->begin();
	while (i != bases->end()) {
		((bptnl::RegionBase*) parentObject)->addBase( i->second, baseAlias, baseLocation );
		++i;
	}
}