Main Page | Modules | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages

OutputRoadSource.cc

Go to the documentation of this file.
00001 00005 #include <iostream> 00006 00007 #include <utils/ConfigFile.h> 00008 #include <utils/Generator.h> 00009 #include <TimeSource/TimeSource.h> 00010 #include <RoadDest/RoadDest.h> 00011 00012 #include "RoadSource.h" 00013 00017 class OutputRoadSource : public RoadSource { 00018 public: 00019 OutputRoadSource(); 00020 virtual ~OutputRoadSource(); 00021 00023 virtual bool getPoints(utils::Time& time, 00024 std::vector<utils::Vec3d>& points, 00025 bool blocking = true); 00026 00028 bool init(utils::ConfigFile& params, 00029 RoadSourceGenerator* gen, utils::SymbolTable* globals); 00030 00031 private: 00032 RoadSource* _contained; 00033 RoadDest* _output; 00034 }; 00035 00037 RoadSource* create_RoadSource_out(RoadSourceGenerator* gen, 00038 utils::ConfigFile* params, 00039 utils::SymbolTable* globals) 00040 { 00041 OutputRoadSource* intf = new OutputRoadSource(); 00042 if (!intf->init(*params, gen, globals)) { 00043 delete intf; 00044 return NULL; 00045 } 00046 return intf; 00047 } 00048 00051 RoadSource* create_RoadSource_logger(RoadSourceGenerator* gen, 00052 utils::ConfigFile* params, 00053 utils::SymbolTable* globals) 00054 { 00055 // pose output specification inherited from params for the most part 00056 utils::ConfigFile output_params; 00057 utils::ConfigFile::copy(*params, output_params); 00058 output_params.setString("tag", "logger"); // set up logger tag 00059 output_params.set("contained", "{}"); //we clear contained to avoid confusion 00060 00061 // get the contained specification 00062 utils::ConfigFile contained_params; 00063 params->getStruct("contained", contained_params); 00064 00065 // now create the output instance parameters 00066 utils::ConfigFile final_params; 00067 final_params.setString("tag", "output"); 00068 final_params.setStruct("contained", contained_params); 00069 final_params.setStruct("output", output_params); 00070 00071 OutputRoadSource* intf = new OutputRoadSource(); 00072 if (!intf->init(final_params, gen, globals)) { 00073 delete intf; 00074 return NULL; 00075 } 00076 return intf; 00077 } 00078 00081 RoadSource* create_RoadSource_shmemPublish(RoadSourceGenerator* gen, 00082 utils::ConfigFile* params, 00083 utils::SymbolTable* globals) 00084 { 00085 // pose output specification inherited from params for the most part 00086 utils::ConfigFile output_params; 00087 utils::ConfigFile::copy(*params, output_params); 00088 output_params.setString("tag", "shmem"); // set up shmem tag 00089 output_params.set("contained", "{}"); //we clear contained to avoid confusion 00090 00091 // get the contained specification 00092 utils::ConfigFile contained_params; 00093 params->getStruct("contained", contained_params); 00094 00095 // now create the output instance parameters 00096 utils::ConfigFile final_params; 00097 final_params.setString("tag", "output"); 00098 final_params.setStruct("contained", contained_params); 00099 final_params.setStruct("output", output_params); 00100 00101 OutputRoadSource* intf = new OutputRoadSource(); 00102 if (!intf->init(final_params, gen, globals)) { 00103 delete intf; 00104 return NULL; 00105 } 00106 return intf; 00107 } 00108 00109 OutputRoadSource::OutputRoadSource() 00110 { 00111 _contained = NULL; 00112 _output = NULL; 00113 } 00114 00115 OutputRoadSource::~OutputRoadSource() 00116 { 00117 if (_contained) 00118 _contained->unref(); 00119 if (_output) 00120 _output->unref(); 00121 } 00122 00123 bool OutputRoadSource::init(utils::ConfigFile& params, 00124 RoadSourceGenerator* gen, 00125 utils::SymbolTable* globals) 00126 { 00127 // create the contained interface 00128 _contained = gen->interface(params.getString("contained"), globals); 00129 if (!_contained) { 00130 cerr << "OutputRoadSource::init: could not create contained\n"; 00131 return false; 00132 } 00133 _contained->ref(); 00134 00135 _output = RoadDest::generate(params.getString("output", "default"), globals); 00136 if (!_output) { 00137 cerr << "OutputRoadSource::init: could not create output\n"; 00138 return false; 00139 } 00140 _output->ref(); 00141 00142 return true; 00143 } 00144 00145 bool OutputRoadSource::getPoints(utils::Time& time, 00146 std::vector<utils::Vec3d>& points, 00147 bool blocking) 00148 { 00149 if (_contained->getPoints(time, points, blocking)) { 00150 _output->outputPoints(time, points); 00151 return true; 00152 } 00153 return false; 00154 }

Generated on Tue Sep 7 20:37:49 2004 for ModUtils by doxygen 1.3.8