bool OPBParser::doParse() { parseHeader(); skipComments("*"); parseOptObjective(); for (;;) { skipComments("*"); if (!**input()) { return true; } parseConstraint(); } }
void MysqlCSP::addinfo(const char* cstr) { constraints.push_back(parseConstraint(cstr)); }
void Track::loadFromFile(const string& filename) { TiXmlDocument doc( filename.c_str() ); bool loadOkay = doc.LoadFile(); if(!loadOkay) { cerr << "Unable to open file." << endl; return; } TiXmlElement* root = doc.FirstChildElement(); TiXmlElement* elem; TiXmlElement* innerElem; if(!root) return; //block: Nodes { nodes.clear(); for(elem = root->FirstChildElement("Nodes")->FirstChildElement("Node"); elem; elem = elem->NextSiblingElement("Node")) { string label(elem->Attribute("label")); NodeFlags flags = parseNodeFlags(elem->Attribute("flags")); //if(label == "" || flags == NODE_NONE) // continue; nodes.push_back(new Node(label, flags)); } } //block: Edges { for(elem = root->FirstChildElement("Nodes")->FirstChildElement("Node"); elem; elem = elem->NextSiblingElement("Node")) { string nodeLabel(elem->Attribute("label")); Node* node = getNodes(nodeLabel)[0]; for(innerElem = elem->FirstChildElement("Edge"); innerElem; innerElem = innerElem->NextSiblingElement("Edge")) { string label(innerElem->Attribute("label")); EdgeFlags flags = parseEdgeFlags(innerElem->Attribute("flags")); Direction dir = parseDirection(innerElem->Attribute("direction")); string endpointLabel(innerElem->Attribute("endpoint")); Node* otherNode = getNodes(endpointLabel)[0]; node->makeEdge(*otherNode, flags, dir, label); } } } //block: Constraints { for(elem = root->FirstChildElement("Nodes")->FirstChildElement("Node"); elem; elem = elem->NextSiblingElement("Node")) { string nodeLabel(elem->Attribute("label")); Node* node = getFirstNode(nodeLabel); for(innerElem = elem->FirstChildElement("Constraint"); innerElem; innerElem = innerElem->NextSiblingElement("Constraint")) { Constraint* c = parseConstraint(innerElem, this, node); vector<Node*> nodes = c->getAffectedNodes(); for(size_t x = 0; x < nodes.size(); ++x) { nodes[x]->addConstraint(c); } } } } }
int TargetApp::processOption (int in_opt) { switch (in_opt) { case 'a': matchAll = true; break; case 'e': if (op & OP_DISABLE) return -1; op |= OP_ENABLE; break; case 'd': if (op & OP_ENABLE) return -1; op |= OP_DISABLE; break; case 'p': new_priority = atof (optarg); op |= OP_PRIORITY; break; case 'b': new_bonus = atof (optarg); op |= OP_BONUS; break; case 't': op |= OP_BONUS_TIME; return parseDate (optarg, &new_bonus_time); case 'n': op |= OP_NEXT_TIME; return parseDate (optarg, &new_next_time); case 'o': op |= OP_NEXT_OBSER; break; case 'c': if (camera) return -1; camera = optarg; break; case 's': if (!camera && !(camera = defaultCamera)) { std::cerr << "Please provide camera name (with -c parameter) before specifing script!" << std::endl; return -1; } // try to parse it.. new_scripts.push_back (CamScript (camera, optarg)); camera = NULL; op |= OP_SCRIPT; break; case 'N': std::cout << pureNumbers; break; case OPT_OBSERVE_SLEW: op |= OP_OBS_SLEW; break; case OPT_OBSERVE_START: op |= OP_OBS_START; break; case OPT_OBSERVE_END: op |= OP_OBS_END; break; case OPT_TEMPDISABLE: tempdis = optarg; op |= OP_TEMPDISABLE; break; case OPT_AIRMASS: parseConstraint (CONSTRAINT_AIRMASS, optarg); op |= OP_CONSTRAINTS; break; case OPT_LUNAR_DISTANCE: parseConstraint (CONSTRAINT_LDISTANCE, optarg); op |= OP_CONSTRAINTS; break; case OPT_LUNAR_ALTITUDE: parseConstraint (CONSTRAINT_LALTITUDE, optarg); op |= OP_CONSTRAINTS; break; case OPT_MAXREPEATS: parseConstraint (CONSTRAINT_MAXREPEATS, optarg); op |= OP_CONSTRAINTS; break; case OPT_PI_NAME: pi = optarg; op |= OP_PI_NAME; break; case OPT_PROGRAM_NAME: program = optarg; op |= OP_PROGRAM_NAME; break; case OPT_SET_PROPER_MOTION: { LibnovaRaDec raDec; if (raDec.parseString (optarg)) { std::cerr << "cannot parse " << optarg << " as RA DEC string" << std::endl; return -1; } raDec.getPos (&pm); op |= OP_SET_PROPER_MOTION; } break; case OPT_DELETE: op |= OP_DELETE; break; case OPT_ID_ONLY: resType = rts2db::ID_ONLY; break; case OPT_NAME_ONLY: resType = rts2db::NAME_ONLY; break; case OPT_RESETC: op |= OP_CONS_RESET; break; case OPT_FORCE: confirmOp = false; break; default: return AppDb::processOption (in_opt); } return 0; }