Skip to content
Snippets Groups Projects
Commit 3becee28 authored by Alejandro Lopez Gestoso's avatar Alejandro Lopez Gestoso
Browse files

Adapted to store signals as pointers

parent b245be8c
No related branches found
No related tags found
No related merge requests found
...@@ -74,7 +74,7 @@ class CAdcCircuit ...@@ -74,7 +74,7 @@ class CAdcCircuit
* *
* \param signals Variable to store the information. * \param signals Variable to store the information.
*/ */
void get_signals(std::vector<CAdcSignals> &signals); void get_signals(std::vector<CAdcSignals*> &signals);
/** /**
* \brief Function to generate a .launch to spwan all * \brief Function to generate a .launch to spwan all
......
...@@ -22,7 +22,7 @@ class CAdcRoad ...@@ -22,7 +22,7 @@ class CAdcRoad
std::string name; ///< Road's name. std::string name; ///< Road's name.
double length;///< Road's length. double length;///< Road's length.
std::vector<CAdcGeometry*> geometries;///< Road's geometries. std::vector<CAdcGeometry*> geometries;///< Road's geometries.
std::vector<CAdcSignals> signals; ///< Road's signals. std::vector<CAdcSignals*> signals; ///< Road's signals.
public: public:
/** /**
...@@ -87,7 +87,7 @@ class CAdcRoad ...@@ -87,7 +87,7 @@ class CAdcRoad
* \param sign The road's sign to add. * \param sign The road's sign to add.
* *
*/ */
void add_signal(CAdcSignals sign); void add_signal(CAdcSignals* sign);
/** /**
* \brief Function to set road's id. * \brief Function to set road's id.
...@@ -146,7 +146,7 @@ class CAdcRoad ...@@ -146,7 +146,7 @@ class CAdcRoad
* *
* \param signals Variable to store the information. * \param signals Variable to store the information.
*/ */
void get_signals(std::vector<CAdcSignals> &signals); void get_signals(std::vector<CAdcSignals*> &signals);
/** /**
* \brief Function to append each sign spwan lines on a .launch file. * \brief Function to append each sign spwan lines on a .launch file.
......
...@@ -53,7 +53,7 @@ class COpenDriveFormat ...@@ -53,7 +53,7 @@ class COpenDriveFormat
* \param signals Variable to store the information. * \param signals Variable to store the information.
* *
*/ */
void get_signals(std::vector<CAdcSignals> &signals); void get_signals(std::vector<CAdcSignals*> &signals);
/** /**
* \brief Function to generate a .launch to spwan all * \brief Function to generate a .launch to spwan all
......
...@@ -36,9 +36,9 @@ void CAdcCircuit::calculate_signals_pose(bool debug) ...@@ -36,9 +36,9 @@ void CAdcCircuit::calculate_signals_pose(bool debug)
this->roads[i].calculate_signals_pose(debug); this->roads[i].calculate_signals_pose(debug);
} }
void CAdcCircuit::get_signals(std::vector<CAdcSignals> &signals) void CAdcCircuit::get_signals(std::vector<CAdcSignals*> &signals)
{ {
std::vector<CAdcSignals>().swap(signals); std::vector<CAdcSignals*>().swap(signals);
for (unsigned int i = 0; i < this->roads.size(); i++) for (unsigned int i = 0; i < this->roads.size(); i++)
this->roads[i].get_signals(signals); this->roads[i].get_signals(signals);
} }
......
...@@ -22,7 +22,8 @@ CAdcRoad::CAdcRoad(const CAdcRoad &road) ...@@ -22,7 +22,8 @@ CAdcRoad::CAdcRoad(const CAdcRoad &road)
this->length = road.length; this->length = road.length;
this->name = road.name; this->name = road.name;
clear_signals(); clear_signals();
this->signals = road.signals; for (unsigned int i = 0; i < road.signals.size(); i++)
this->signals.push_back(new CAdcSignals(*road.signals[i]));
clear_geometries(); clear_geometries();
for (unsigned int i = 0; i < road.geometries.size(); i++) for (unsigned int i = 0; i < road.geometries.size(); i++)
this->geometries.push_back(road.geometries[i]->clone()); this->geometries.push_back(road.geometries[i]->clone());
...@@ -42,8 +43,12 @@ void CAdcRoad::operator = (const CAdcRoad &road) ...@@ -42,8 +43,12 @@ void CAdcRoad::operator = (const CAdcRoad &road)
this->id = road.id; this->id = road.id;
this->length = road.length; this->length = road.length;
this->name = road.name; this->name = road.name;
this->signals = road.signals; clear_signals();
this->geometries = road.geometries; for (unsigned int i = 0; i < road.signals.size(); i++)
this->signals.push_back(new CAdcSignals(*road.signals[i]));
clear_geometries();
for (unsigned int i = 0; i < road.geometries.size(); i++)
this->geometries.push_back(road.geometries[i]->clone());
} }
void CAdcRoad::clear_geometries(void) void CAdcRoad::clear_geometries(void)
...@@ -60,10 +65,12 @@ void CAdcRoad::add_geometry(CAdcGeometry* geometry) ...@@ -60,10 +65,12 @@ void CAdcRoad::add_geometry(CAdcGeometry* geometry)
void CAdcRoad::clear_signals(void) void CAdcRoad::clear_signals(void)
{ {
std::vector<CAdcSignals>().swap(this->signals); for (unsigned int i = 0; i < this->signals.size(); i++)
delete this->signals[i];
std::vector<CAdcSignals*>().swap(this->signals);
} }
void CAdcRoad::add_signal(CAdcSignals sign) void CAdcRoad::add_signal(CAdcSignals* sign)
{ {
this->signals.push_back(sign); this->signals.push_back(sign);
} }
...@@ -94,7 +101,7 @@ void CAdcRoad::debug(void) ...@@ -94,7 +101,7 @@ void CAdcRoad::debug(void)
for (unsigned int i = 0; i < this->geometries.size(); i++) for (unsigned int i = 0; i < this->geometries.size(); i++)
this->geometries[i]->debug(); this->geometries[i]->debug();
for (unsigned int i = 0; i < this->signals.size(); i++) for (unsigned int i = 0; i < this->signals.size(); i++)
this->signals[i].debug(); this->signals[i]->debug();
} }
void CAdcRoad::calculate_signals_pose(bool debug) void CAdcRoad::calculate_signals_pose(bool debug)
...@@ -102,25 +109,25 @@ void CAdcRoad::calculate_signals_pose(bool debug) ...@@ -102,25 +109,25 @@ void CAdcRoad::calculate_signals_pose(bool debug)
double s, t, heading, x, y, yaw; double s, t, heading, x, y, yaw;
for (unsigned int i = 0; i < this->signals.size(); i++) for (unsigned int i = 0; i < this->signals.size(); i++)
{ {
this->signals[i].get_pose(s, t, heading); this->signals[i]->get_pose(s, t, heading);
for (unsigned int j = 0; j < this->geometries.size(); j++) for (unsigned int j = 0; j < this->geometries.size(); j++)
{ {
if (this->geometries[j]->on_range(s)) if (this->geometries[j]->on_range(s))
{ {
this->geometries[j]->get_world_pose(s, t, heading, x, y, yaw); this->geometries[j]->get_world_pose(s, t, heading, x, y, yaw);
this->signals[i].set_world_pose(x, y, yaw); this->signals[i]->set_world_pose(x, y, yaw);
break; break;
} }
} }
if (debug) if (debug)
{ {
std::cout << "Road " << this->name << " id = " << this->id << "; length = " << this->length << std::endl; std::cout << "Road " << this->name << " id = " << this->id << "; length = " << this->length << std::endl;
this->signals[i].debug(debug); this->signals[i]->debug(debug);
} }
} }
} }
void CAdcRoad::get_signals(std::vector<CAdcSignals> &signals) void CAdcRoad::get_signals(std::vector<CAdcSignals*> &signals)
{ {
for (unsigned int i = 0; i < this->signals.size(); i++) for (unsigned int i = 0; i < this->signals.size(); i++)
signals.push_back(this->signals[i]); signals.push_back(this->signals[i]);
...@@ -129,5 +136,5 @@ void CAdcRoad::get_signals(std::vector<CAdcSignals> &signals) ...@@ -129,5 +136,5 @@ void CAdcRoad::get_signals(std::vector<CAdcSignals> &signals)
void CAdcRoad::append_signs_spawn(std::string &filename) void CAdcRoad::append_signs_spawn(std::string &filename)
{ {
for (unsigned int i = 0; i < this->signals.size(); i++) for (unsigned int i = 0; i < this->signals.size(); i++)
this->signals[i].append_sign_spawn(filename); this->signals[i]->append_sign_spawn(filename);
} }
\ No newline at end of file
...@@ -15,10 +15,10 @@ int main(int argc, char *argv[]) ...@@ -15,10 +15,10 @@ int main(int argc, char *argv[])
open_drive_format.load(xml_file, false); open_drive_format.load(xml_file, false);
open_drive_format.calculate_signals_pose(false); open_drive_format.calculate_signals_pose(false);
std::vector<CAdcSignals> signals; std::vector<CAdcSignals*> signals;
// open_drive_format.get_signals(signals); // open_drive_format.get_signals(signals);
// for (unsigned int i = 0; i < signals.size(); i++) // for (unsigned int i = 0; i < signals.size(); i++)
// signals[i].debug(true); // signals[i]->debug(true);
open_drive_format.generate_spwan_launch_file(launch_file); open_drive_format.generate_spwan_launch_file(launch_file);
} }
catch (CException &e) catch (CException &e)
......
...@@ -117,7 +117,7 @@ void COpenDriveFormat::load(std::string &filename, bool debug) ...@@ -117,7 +117,7 @@ void COpenDriveFormat::load(std::string &filename, bool debug)
bool reverse = false; bool reverse = false;
if (signal_it->orientation().present() && signal_it->orientation().get() == orientation::cxx_1) if (signal_it->orientation().present() && signal_it->orientation().get() == orientation::cxx_1)
reverse = true; reverse = true;
CAdcSignals sign(id, s, t, heading, type, sub_type, value, text, reverse); CAdcSignals *sign = new CAdcSignals(id, s, t, heading, type, sub_type, value, text, reverse);
road.add_signal(sign); road.add_signal(sign);
} }
} }
...@@ -145,7 +145,7 @@ void COpenDriveFormat::calculate_signals_pose(bool debug) ...@@ -145,7 +145,7 @@ void COpenDriveFormat::calculate_signals_pose(bool debug)
std::cout << "Calculating world signs poses done" << std::endl; std::cout << "Calculating world signs poses done" << std::endl;
} }
void COpenDriveFormat::get_signals(std::vector<CAdcSignals> &signals) void COpenDriveFormat::get_signals(std::vector<CAdcSignals*> &signals)
{ {
this->adc_circuit.get_signals(signals); this->adc_circuit.get_signals(signals);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment