Esempio n. 1
0
	void *NclStructureConverter::createBody(
		    DOMElement *parentElement, void *objGrandParent) {

		// criar composicao a partir do elemento body do documento ncl
		// fazer uso do nome da composicao body que foi atribuido pelo
		// compilador
		NclDocument *document;
		ContextNode *context;

		document = (NclDocument*) getDocumentParser()->
			    getObject("return", "document");

		if (!parentElement->hasAttribute(XMLString::transcode("id"))) {
			parentElement->setAttribute(XMLString::transcode("id"),
				    XMLString::transcode(document->getId().c_str()));

			context = (ContextNode*)((NclComponentsConverter*)
				    getComponentsParser())->createContext(
				    	   parentElement, objGrandParent);

			parentElement->removeAttribute(XMLString::transcode("id"));

		} else {
			context = (ContextNode*)((NclComponentsConverter*)
				    getComponentsParser())->createContext(
				    	    parentElement, objGrandParent);

		}
		document->setBody(context);
		return context;
	}
	void *NclPresentationControlParser::parseSwitch(
		    DOMElement *parentElement, void *objGrandParent) {

		void *parentObject;
		DOMNodeList *elementNodeList;
		int i, size;
		DOMNode *node;
		DOMElement *element;
		string elementTagName;
		void *elementObject;

		parentObject = createSwitch(parentElement, objGrandParent);
		if (parentObject == NULL) {
			return NULL;
		}

		elementNodeList = parentElement->getChildNodes();
		size = elementNodeList->getLength();

		for (i = 0; i < size; i++) {
			node = elementNodeList->item(i);
			if (node->getNodeType()==DOMNode::ELEMENT_NODE) {
				element = (DOMElement*)node;
				elementTagName = XMLString::transcode(element->getTagName());
				if (XMLString::compareIString(elementTagName.c_str(),
					    "media") == 0) {

					elementObject = ((NclComponentsParser*)
						    getComponentsParser())->parseMedia(
						    	    element, parentObject);

					if (elementObject != NULL) {
						addMediaToSwitch(parentObject, elementObject);
					}

				} else if (XMLString::compareIString(elementTagName.c_str(),
					    "context") == 0) {

					elementObject = ((NclComponentsParser*)
						    getComponentsParser())->parseContext(
						    	   element, parentObject);

					if (elementObject != NULL) {
						addContextToSwitch(parentObject, elementObject);
					}

				} else if (XMLString::compareIString(elementTagName.c_str(),
					    "switch") == 0) {

					elementObject = parseSwitch(element, parentObject);
					if (elementObject != NULL) {
						addSwitchToSwitch(parentObject, elementObject);
					}
				}
			}
		}

		for (i = 0; i < size; i++) {
			node = elementNodeList->item(i);
			if (node->getNodeType() == DOMNode::ELEMENT_NODE) {
				element = (DOMElement*)node;
				elementTagName = XMLString::transcode(element->getTagName());
				if (XMLString::compareIString(elementTagName.c_str(),
					    "bindRule") == 0) {

					elementObject = parseBindRule((DOMElement*)node,
						    parentObject);

					if (elementObject != NULL) {
						addBindRuleToSwitch(parentObject, elementObject);
					}

				} else if (XMLString::compareIString(elementTagName.c_str(),
					    "defaultComponent") == 0) {

					elementObject = parseDefaultComponent((DOMElement*)node,
						    parentObject);

					if (elementObject != NULL) {
						addDefaultComponentToSwitch(
							    parentObject, elementObject);
					}
				}
			}
		}

		return parentObject;
	}
Esempio n. 3
0
	void NclStructureConverter::addSwitchToBody(
		    void *parentObject, void *childObject) {

		getComponentsParser()->addSwitchToContext(parentObject, childObject);
	}
Esempio n. 4
0
	void *NclStructureParser::parseBody(
		    DOMElement *parentElement, void *objGrandParent) {

		void *parentObject;
		DOMNodeList *elementNodeList;
		int i, size;
		DOMNode *node;
		DOMElement *element;
		string elementTagName;
		void *elementObject;

		parentObject = createBody(parentElement, objGrandParent);
		if (parentObject == NULL) {
			return NULL;
		}

		elementNodeList = parentElement->getChildNodes();
		size = elementNodeList->getLength();

		for (i = 0; i < size; i++) {
			node = elementNodeList->item(i);
			if(node->getNodeType()==DOMNode::ELEMENT_NODE){
				element = (DOMElement*)node;
				elementTagName = XMLString::transcode(element->getTagName());
				if (XMLString::compareIString(
					    elementTagName.c_str(), "media")==0) {

					elementObject = getComponentsParser()->parseMedia(
						    element, parentObject);

					if (elementObject != NULL) {
						addMediaToBody(parentObject, elementObject);
					}
				}
				else if (XMLString::compareIString(
					    elementTagName.c_str(), "context")==0) {

					elementObject = getComponentsParser()->parseContext(
						    element, parentObject);

					if (elementObject != NULL) {
						addContextToBody(parentObject, elementObject);
					}
				}
				else if (XMLString::compareIString(
					    elementTagName.c_str(), "switch")==0) {

					elementObject = getPresentationControlParser()->
						    parseSwitch(element, parentObject);

					if (elementObject != NULL) {
						addSwitchToBody(parentObject, elementObject);
					}
				}
			}
		}

		for (i = 0; i < size; i++) {
			node = elementNodeList->item(i);
			if (node->getNodeType()==DOMNode::ELEMENT_NODE &&
				    XMLString::compareIString(((DOMElement*)node)->
				    	    getTagName(),
				    	    XMLString::transcode("property"))==0) {

				elementObject = getInterfacesParser()->parseProperty(
					    (DOMElement*)node, parentObject);

				if (elementObject != NULL) {
					addPropertyToBody(parentObject, elementObject);
				}
			}
		}

		return parentObject;
	}
Esempio n. 5
0
	void *NclStructureParser::posCompileBody(
		    DOMElement *parentElement, void *parentObject) {

		return getComponentsParser()->posCompileContext(
			    parentElement, parentObject);
	}