Go to the documentation of this file.00001
00019 #include <iostream>
00020 #include <string>
00021 #include <vector>
00022
00023 #include <coil/Properties.h>
00024 #include <coil/File.h>
00025
00026 #include <rtm/Manager.h>
00027
00028
00029 int main(int argc, char* argv[])
00030 {
00031 if (argc != 2)
00032 {
00033 std::cerr << "usage: " << std::endl;
00034 std::cerr << argv[0] << " .so or .DLL" << std::endl;
00035 std::cerr << std::endl;
00036 return -1;
00037 }
00038
00039
00040
00041
00042
00043 std::string fullname(argv[1]);
00044
00045 std::string dirname(coil::dirname(argv[1]));
00046
00047 std::string basename(coil::basename(fullname.c_str()));
00048
00049
00050
00051 coil::vstring opts;
00052 opts.push_back("dummy");
00053 opts.push_back("-o");
00054 std::string load_path("manager.modules.load_path:");
00055 load_path += dirname;
00056 opts.push_back(load_path);
00057 opts.push_back("-o");
00058 opts.push_back("logger.enable:NO");
00059 opts.push_back("-o");
00060 opts.push_back("manager.corba_servant:NO");
00061
00062
00063 RTC::Manager::init(opts.size(), coil::toArgv(opts));
00064 RTC::Manager& mgr(RTC::Manager::instance());
00065
00066
00067
00068 std::vector<coil::Properties> oldp(mgr.getFactoryProfiles());
00069 mgr.load(basename.c_str(), "");
00070 std::vector<coil::Properties> newp(mgr.getFactoryProfiles());
00071 std::vector<coil::Properties> profs;
00072
00073 for (size_t i(0); i < newp.size(); ++i)
00074 {
00075 bool exists(false);
00076 for (size_t j(0); j < oldp.size(); ++j)
00077 {
00078 if (oldp[j]["implementation_id"] == newp[i]["implementation_id"] &&
00079 oldp[j]["type_name"] == newp[i]["type_name"] &&
00080 oldp[j]["description"] == newp[i]["description"] &&
00081 oldp[j]["version"] == newp[i]["version"])
00082 {
00083 exists = true;
00084 }
00085 }
00086 if (!exists) { profs.push_back(newp[i]); }
00087 }
00088
00089
00090 if (profs.size() == 0)
00091 {
00092 std::cerr << "Load failed." << std::endl;
00093 return -1;
00094 }
00095
00096 if (profs.size() > 1)
00097 {
00098 std::cerr << "One ore more modules loaded." << std::endl;
00099 return -1;
00100 }
00101
00102 coil::vstring keys(profs[0].propertyNames());
00103
00104 for (size_t i(0); i < keys.size(); ++i)
00105 {
00106 std::cout << keys[i] << ": " << profs[0][keys[i]] << std::endl;
00107 }
00108
00109 return 0;
00110 }