Esempio n. 1
0
	bool OPBParser::doParse() {
		parseHeader();
		skipComments("*");
		parseOptObjective();
		for (;;) {
			skipComments("*");
			if (!**input()) { return true; }
			parseConstraint();
		}
	}
Esempio n. 2
0
void MysqlCSP::addinfo(const char* cstr) {
	constraints.push_back(parseConstraint(cstr));
}
Esempio n. 3
0
	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);
					}
				}
			}
		}
	}
Esempio n. 4
0
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;
}