int ACTIVE_TASK_SET::parse(XML_PARSER& xp) { while (!xp.get_tag()) { if (xp.match_tag("/active_task_set")) return 0; else if (xp.match_tag("active_task")) { #ifdef SIM ACTIVE_TASK at; at.parse(xp); #else ACTIVE_TASK* atp = new ACTIVE_TASK; int retval = atp->parse(xp); if (!retval) { if (slot_taken(atp->slot)) { msg_printf(atp->result->project, MSG_INTERNAL_ERROR, "slot %d in use; discarding result %s", atp->slot, atp->result->name ); retval = ERR_XML_PARSE; } } if (!retval) active_tasks.push_back(atp); else delete atp; #endif } else { if (log_flags.unparsed_xml) { msg_printf(NULL, MSG_INFO, "[unparsed_xml] ACTIVE_TASK_SET::parse(): unrecognized %s\n", xp.parsed_tag ); } } } return ERR_XML_PARSE; }
/// Parse XML information about an active task set int ACTIVE_TASK_SET::parse(MIOFILE& fin) { ACTIVE_TASK* atp; char buf[256]; int retval; while (fin.fgets(buf, 256)) { if (match_tag(buf, "</active_task_set>")) return 0; else if (match_tag(buf, "<active_task>")) { atp = new ACTIVE_TASK; retval = atp->parse(fin); if (!retval) { if (slot_taken(atp->slot)) { msg_printf(atp->result->project, MSG_INTERNAL_ERROR, "slot %d in use; discarding result %s", atp->slot, atp->result->name ); retval = ERR_XML_PARSE; } } if (!retval) active_tasks.push_back(atp); else delete atp; } else { handle_unparsed_xml_warning("ACTIVE_TASK_SET::parse", buf); } } return ERR_XML_PARSE; }