00001
00007 #include "query_plugins.h"
00008 #include <argos3/core/simulator/visualization/visualization.h>
00009 #include <argos3/core/simulator/physics_engine/physics_engine.h>
00010 #include <argos3/core/simulator/entity/entity.h>
00011 #include <argos3/core/simulator/actuator.h>
00012 #include <argos3/core/simulator/sensor.h>
00013
00014 namespace argos {
00015
00016
00017
00018
00019 void QueryShowPluginDescription(const std::string& str_query) {
00020 LOG << "Plugins matching \"" << str_query << "\":" << std::endl << std::endl;
00021
00022 TQueryResult tResult;
00023
00024 QuerySearchPlugins<CSimulatedActuator>(str_query, tResult);
00025 QuerySearchPlugins<CSimulatedSensor> (str_query, tResult);
00026 QuerySearchPlugins<CPhysicsEngine> (str_query, tResult);
00027 QuerySearchPlugins<CMedium> (str_query, tResult);
00028 QuerySearchPlugins<CVisualization> (str_query, tResult);
00029 QuerySearchPlugins<CEntity> (str_query, tResult);
00030
00031 if(tResult.empty()) {
00032 LOG << " None found." << std::endl << std::endl;
00033 }
00034 else {
00035 LOG << "==============================================================================" << std::endl << std::endl;
00036 for(UInt32 i = 0; i < tResult.size(); ++i) {
00037 LOG << "[ " << tResult[i].Label << " ] " << std::endl;
00038 LOG << tResult[i].BriefDescription << std::endl;
00039 LOG << "by " << tResult[i].Author << std::endl;
00040 LOG << "Version: " << tResult[i].Version << std::endl;
00041 LOG << "Status: " << tResult[i].Status << std::endl << std::endl;
00042 LOG << tResult[i].LongDescription << std::endl;
00043 LOG << std::endl;
00044 LOG << "==============================================================================" << std::endl << std::endl;
00045 }
00046 }
00047 }
00048
00049
00050
00051
00052 void QueryPlugins(const std::string& str_query) {
00053 bool bIsLogColored = LOG.IsColoredOutput();
00054 LOG.DisableColoredOutput();
00055 LOGERR.DisableColoredOutput();
00056 if(str_query == "actuators") {
00057 QueryShowList<CSimulatedActuator>("AVAILABLE ACTUATORS");
00058 } else if(str_query == "sensors") {
00059 QueryShowList<CSimulatedSensor>("AVAILABLE SENSORS");
00060 } else if(str_query == "physics_engines") {
00061 QueryShowList<CPhysicsEngine>("AVAILABLE PHYSICS ENGINES");
00062 } else if(str_query == "media") {
00063 QueryShowList<CMedium>("AVAILABLE MEDIA");
00064 } else if(str_query == "visualizations") {
00065 QueryShowList<CVisualization>("AVAILABLE VISUALIZATIONS");
00066 } else if(str_query == "entities") {
00067 QueryShowList<CEntity>("AVAILABLE ENTITIES");
00068 } else if(str_query == "all") {
00069 QueryShowList<CSimulatedActuator>("AVAILABLE ACTUATORS");
00070 QueryShowList<CSimulatedSensor> ("AVAILABLE SENSORS");
00071 QueryShowList<CPhysicsEngine> ("AVAILABLE PHYSICS ENGINES");
00072 QueryShowList<CMedium> ("AVAILABLE MEDIA");
00073 QueryShowList<CVisualization> ("AVAILABLE VISUALIZATIONS");
00074 QueryShowList<CEntity> ("AVAILABLE ENTITIES");
00075 } else {
00076 QueryShowPluginDescription(str_query);
00077 }
00078 if(bIsLogColored) {
00079 LOG.EnableColoredOutput();
00080 LOGERR.EnableColoredOutput();
00081 }
00082 }
00083
00084
00085
00086
00087 }