rex/src/loaders/Plan.cpp

57 lines
1.4 KiB
C++
Raw Normal View History

2017-04-22 12:07:11 +00:00
#include "Plan.h"
2017-06-23 20:02:19 +00:00
int Plan::num_tasks()
2017-04-30 00:32:09 +00:00
// returns the number of tasks in a Plan
{
return (int)this->tasks.size();
}
Task Plan::get_task(int index)
2017-04-30 00:32:09 +00:00
// returns a task from its parent Plan by index
{
return this->tasks[index];
}
Task Plan::get_task(std::string provided_name)
2017-06-23 20:02:19 +00:00
/* returns a task from a Plan object by name
* this will need reworked. maybe should return int, populate a pointer.
* error handling is the concern here.
2017-06-23 20:02:19 +00:00
*/
2017-04-30 00:32:09 +00:00
{
Task * returnable;
bool foundMatch = false;
for ( int i = 0; i < this->tasks.size(); i++ )
{
std::string task_name = this->tasks[i].get_name();
if ( task_name == provided_name )
{
returnable = & this->tasks[i];
foundMatch = true;
break;
}
}
if (! foundMatch )
{
std::cerr << "Task name \"" << provided_name << "\" was referenced but not defined!" << std::endl;
std::exit(1);
}
return * returnable;
}
Plan::Plan( std::string filename ): JSON_Loader()
2017-06-23 20:02:19 +00:00
// Plan loads a file and deserializes the Unit JSON object to Task types as a vector member
// Plan { vector<Task> }
2017-04-30 00:32:09 +00:00
{
// plan always loads from file
this->load_json_file( filename );
Json::Value raw_tasks = this->as_serialized()["plan"];
2017-04-22 12:07:11 +00:00
for ( int index = 0; index < raw_tasks.size(); index++ )
{
this->tasks.push_back( Task( raw_tasks[index] ) );
}
};
*/