00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef ROSLIB_PACKAGE_H
00029 #define ROSLIB_PACKAGE_H
00030
00031 #include <string>
00032 #include <vector>
00033 #include <map>
00034
00035 #if defined(__GNUC__)
00036 # define ROS_DEPRECATED __attribute__((deprecated))
00037 # define ROS_FORCE_INLINE __attribute__((always_inline))
00038 #elif defined(MSVC)
00039 # define ROS_DEPRECATED
00040 # define ROS_FORCE_INLINE __forceinline
00041 #else
00042 # define ROS_DEPRECATED
00043 # define ROS_FORCE_INLINE inline
00044 #endif
00045
00046
00047
00048
00049
00050
00051 #if defined(_MSC_VER)
00052 # define ROS_HELPER_IMPORT __declspec(dllimport)
00053 # define ROS_HELPER_EXPORT __declspec(dllexport)
00054 #elif __GNUC__ >= 4
00055 # define ROS_HELPER_IMPORT __attribute__ ((visibility("default")))
00056 # define ROS_HELPER_EXPORT __attribute__ ((visibility("default")))
00057 #else
00058 # define ROS_HELPER_IMPORT
00059 # define ROS_HELPER_EXPORT
00060 #endif
00061
00062
00063 #ifdef _MSC_VER
00064 # pragma warning(disable: 4251)
00065 # pragma warning(disable: 4275)
00066 #endif
00067
00068 #ifdef ROS_BUILD_SHARED_LIBS // ros is being built around shared libraries
00069 # ifdef roslib_EXPORTS // we are building a shared lib/dll
00070 # define ROSLIB_DECL ROS_HELPER_EXPORT
00071 # else // we are using shared lib/dll
00072 # define ROSLIB_DECL ROS_HELPER_IMPORT
00073 # endif
00074 #else // ros is being built around static libraries
00075 # define ROSLIB_DECL
00076 #endif
00077
00078 namespace ros
00079 {
00080 namespace package
00081 {
00082
00083 typedef std::vector<std::string> V_string;
00084 typedef std::map<std::string, std::string> M_string;
00085
00089 ROSLIB_DECL std::string command(const std::string& cmd);
00090
00094 ROSLIB_DECL void command(const std::string& cmd, V_string& output);
00098 ROSLIB_DECL std::string getPath(const std::string& package_name);
00102 ROSLIB_DECL bool getAll(V_string& packages);
00103
00108 ROSLIB_DECL void getPlugins(const std::string& package, const std::string& attribute, V_string& plugins);
00109
00114 ROSLIB_DECL void getPlugins(const std::string& package, const std::string& attribute, M_string& plugins);
00115
00116 }
00117 }
00118
00119 #endif