static int getOutputRequest(void) { int success = 0; if (_cmdWant) { static int initialized = 0; if (initialized) { success = 1; } else { (void)strncpy(_wantSpec, _cmdWant, sizeof(_wantSpec)); _wantSpec[sizeof(_wantSpec)-1] = 0; success = decodeOutput(_wantSpec); initialized = 1; } } else { for (;;) { int nbytes = getSpec("You want: ", _wantSpec, sizeof(_wantSpec)); if (nbytes < 0) break; success = decodeOutput(_wantSpec); if (success) break; } } return success; }
CProcessInstance* CDecodeFlowContext::readInstanceOfContextProcess ( const QDomElement& data, CProcessContext* processContext ) { CProcessInstance* processInstance = NULL; bool bOk = true; QDomElement id = data.firstChildElement("id"); QDomElement name = data.firstChildElement("name"); QDomElement hasChanged = data.firstChildElement("hasChanged"); QDomElement implements = data.firstChildElement("implements"); int implementsID; CProcessImplementation* implementsProcess = NULL; if (!id.isNull() && !name.isNull() && !hasChanged.isNull() && !implements.isNull()) { processInstance = new CProcessInstance(); processInstance->setID(id.text().toInt()); processInstance->setName(name.text()); processInstance->setNameHasChanged(hasChanged.text().toInt()); implementsID = implements.attribute("id").toInt(); implementsProcess = m_pItemFactory->getProcessFactory()->getImplementationProcess(implementsID); if (implementsProcess != NULL) //shall not be null because exist always for a context diagram ToCheck processInstance->setImplementedProcess(implementsProcess); else { delete processInstance; processInstance = NULL; } //read input flow list QDomElement inputList = data.firstChildElement("input-list"); CDecodeInputOutputListOfProcessInstance decodeInput(processContext, processInstance, true); bOk = decodeInput.searchInXmlList(inputList, "input", &decodeInput); if (bOk) { //read output flow list QDomElement outputList = data.firstChildElement("output-list"); CDecodeInputOutputListOfProcessInstance decodeOutput(processContext, processInstance, false); bOk = decodeOutput.searchInXmlList(outputList, "output", &decodeOutput); } if (!bOk) { delete processInstance; processInstance = NULL; } } return processInstance; }