Clock.h   Clock.h 
/* Auto-generated by genmsg_cpp for file /home/andrey/install/ros-2.0-cturt #warning("This header has been deprecated in favor of rosgraph_msgs/Clock.h
le/ros/core/roslib/msg/Clock.msg */ ")
/* Auto-generated by genmsg_cpp for file /Users/kwc/ros/core/roslib/msg/Clo
ck.msg */
#ifndef ROSLIB_MESSAGE_CLOCK_H #ifndef ROSLIB_MESSAGE_CLOCK_H
#define ROSLIB_MESSAGE_CLOCK_H #define ROSLIB_MESSAGE_CLOCK_H
#include <string> #include <string>
#include <vector> #include <vector>
#include <ostream> #include <ostream>
#include "ros/serialization.h" #include "ros/serialization.h"
#include "ros/builtin_message_traits.h" #include "ros/builtin_message_traits.h"
#include "ros/message_operations.h" #include "ros/message_operations.h"
#include "ros/message.h" #include "ros/message.h"
#include "ros/time.h" #include "ros/time.h"
skipping to change at line 36 skipping to change at line 38
: clock() : clock()
{ {
} }
typedef ros::Time _clock_type; typedef ros::Time _clock_type;
ros::Time clock; ros::Time clock;
private: private:
static const char* __s_getDataType_() { return "roslib/Clock"; } static const char* __s_getDataType_() { return "roslib/Clock"; }
public: public:
ROSCPP_DEPRECATED static const std::string __s_getDataType() { return __s _getDataType_(); } static const std::string __s_getDataType() { return __s_getDataType_(); }
ROSCPP_DEPRECATED const std::string __getDataType() const { return __s_ge tDataType_(); } const std::string __getDataType() const { return __s_getDataType_(); }
private: private:
static const char* __s_getMD5Sum_() { return "a9c97c1d230cfc112e270351a94 4ee47"; } static const char* __s_getMD5Sum_() { return "a9c97c1d230cfc112e270351a94 4ee47"; }
public: public:
ROSCPP_DEPRECATED static const std::string __s_getMD5Sum() { return __s_g etMD5Sum_(); } static const std::string __s_getMD5Sum() { return __s_getMD5Sum_(); }
ROSCPP_DEPRECATED const std::string __getMD5Sum() const { return __s_getM D5Sum_(); } const std::string __getMD5Sum() const { return __s_getMD5Sum_(); }
private: private:
static const char* __s_getMessageDefinition_() { return "# roslib/Clock i s used for publishing simulated time in ROS. \n\ static const char* __s_getMessageDefinition_() { return "# roslib/Clock i s used for publishing simulated time in ROS. \n\
# This message simply communicates the current time.\n\ # This message simply communicates the current time.\n\
# For more information, see http://www.ros.org/wiki/Clock\n\ # For more information, see http://www.ros.org/wiki/Clock\n\
time clock\n\ time clock\n\
\n\ \n\
"; } "; }
public: public:
ROSCPP_DEPRECATED static const std::string __s_getMessageDefinition() { r eturn __s_getMessageDefinition_(); } static const std::string __s_getMessageDefinition() { return __s_getMess ageDefinition_(); }
ROSCPP_DEPRECATED const std::string __getMessageDefinition() const { retu rn __s_getMessageDefinition_(); } const std::string __getMessageDefinition() const { return __s_getMessage Definition_(); }
ROSCPP_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const
{ {
ros::serialization::OStream stream(write_ptr, 1000000000); ros::serialization::OStream stream(write_ptr, 1000000000);
ros::serialization::serialize(stream, clock); ros::serialization::serialize(stream, clock);
return stream.getData(); return stream.getData();
} }
ROSCPP_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr) virtual uint8_t *deserialize(uint8_t *read_ptr)
{ {
ros::serialization::IStream stream(read_ptr, 1000000000); ros::serialization::IStream stream(read_ptr, 1000000000);
ros::serialization::deserialize(stream, clock); ros::serialization::deserialize(stream, clock);
return stream.getData(); return stream.getData();
} }
ROSCPP_DEPRECATED virtual uint32_t serializationLength() const virtual uint32_t serializationLength() const
{ {
uint32_t size = 0; uint32_t size = 0;
size += ros::serialization::serializationLength(clock); size += ros::serialization::serializationLength(clock);
return size; return size;
} }
typedef boost::shared_ptr< ::roslib::Clock_<ContainerAllocator> > Ptr; typedef boost::shared_ptr< ::roslib::Clock_<ContainerAllocator> > Ptr;
typedef boost::shared_ptr< ::roslib::Clock_<ContainerAllocator> const> C onstPtr; typedef boost::shared_ptr< ::roslib::Clock_<ContainerAllocator> const> C onstPtr;
}; // struct Clock }; // struct Clock
typedef ::roslib::Clock_<std::allocator<void> > Clock; typedef ::roslib::Clock_<std::allocator<void> > Clock;
 End of changes. 10 change blocks. 
11 lines changed or deleted 14 lines changed or added


 Header.h   Header.h 
/* Auto-generated by genmsg_cpp for file /home/andrey/install/ros-2.0-cturt #warning("This header has been deprecated in favor of std_msgs/Header.h")
le/ros/core/roslib/msg/Header.msg */
#ifndef ROSLIB_MESSAGE_HEADER_H
#define ROSLIB_MESSAGE_HEADER_H
#include <string>
#include <vector>
#include <ostream>
#include "ros/serialization.h"
#include "ros/builtin_message_traits.h"
#include "ros/message_operations.h"
#include "ros/message.h"
#include "ros/time.h"
namespace roslib
{
template <class ContainerAllocator>
struct Header_ : public ros::Message
{
typedef Header_<ContainerAllocator> Type;
Header_()
: seq(0)
, stamp()
, frame_id()
{
}
Header_(const ContainerAllocator& _alloc)
: seq(0)
, stamp()
, frame_id(_alloc)
{
}
typedef uint32_t _seq_type;
uint32_t seq;
typedef ros::Time _stamp_type;
ros::Time stamp;
typedef std::basic_string<char, std::char_traits<char>, typename Containe
rAllocator::template rebind<char>::other > _frame_id_type;
std::basic_string<char, std::char_traits<char>, typename ContainerAllocat
or::template rebind<char>::other > frame_id;
private:
static const char* __s_getDataType_() { return "roslib/Header"; }
public:
ROSCPP_DEPRECATED static const std::string __s_getDataType() { return __s
_getDataType_(); }
ROSCPP_DEPRECATED const std::string __getDataType() const { return __s_ge
tDataType_(); }
private:
static const char* __s_getMD5Sum_() { return "2176decaecbce78abc3b96ef049
fabed"; }
public:
ROSCPP_DEPRECATED static const std::string __s_getMD5Sum() { return __s_g
etMD5Sum_(); }
ROSCPP_DEPRECATED const std::string __getMD5Sum() const { return __s_getM
D5Sum_(); }
private:
static const char* __s_getMessageDefinition_() { return "# Standard metad
ata for higher-level stamped data types.\n\
# This is generally used to communicate timestamped data \n\
# in a particular coordinate frame.\n\
# \n\
# sequence ID: consecutively increasing ID \n\
uint32 seq\n\
#Two-integer timestamp that is expressed as:\n\
# * stamp.secs: seconds (stamp_secs) since epoch\n\
# * stamp.nsecs: nanoseconds since stamp_secs\n\
# time-handling sugar is provided by the client library\n\
time stamp\n\
#Frame this data is associated with\n\
# 0: no frame\n\
# 1: global frame\n\
string frame_id\n\
\n\
"; }
public:
ROSCPP_DEPRECATED static const std::string __s_getMessageDefinition() { r
eturn __s_getMessageDefinition_(); }
ROSCPP_DEPRECATED const std::string __getMessageDefinition() const { retu
rn __s_getMessageDefinition_(); }
ROSCPP_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t
seq) const
{
ros::serialization::OStream stream(write_ptr, 1000000000);
ros::serialization::serialize(stream, seq);
ros::serialization::serialize(stream, stamp);
ros::serialization::serialize(stream, frame_id);
return stream.getData();
}
ROSCPP_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr)
{
ros::serialization::IStream stream(read_ptr, 1000000000);
ros::serialization::deserialize(stream, seq);
ros::serialization::deserialize(stream, stamp);
ros::serialization::deserialize(stream, frame_id);
return stream.getData();
}
ROSCPP_DEPRECATED virtual uint32_t serializationLength() const
{
uint32_t size = 0;
size += ros::serialization::serializationLength(seq);
size += ros::serialization::serializationLength(stamp);
size += ros::serialization::serializationLength(frame_id);
return size;
}
typedef boost::shared_ptr< ::roslib::Header_<ContainerAllocator> > Ptr;
typedef boost::shared_ptr< ::roslib::Header_<ContainerAllocator> const>
ConstPtr;
}; // struct Header
typedef ::roslib::Header_<std::allocator<void> > Header;
typedef boost::shared_ptr< ::roslib::Header> HeaderPtr;
typedef boost::shared_ptr< ::roslib::Header const> HeaderConstPtr;
template<typename ContainerAllocator>
std::ostream& operator<<(std::ostream& s, const ::roslib::Header_<Containe
rAllocator> & v)
{
ros::message_operations::Printer< ::roslib::Header_<ContainerAllocator> >
::stream(s, "", v);
return s;}
} // namespace roslib
namespace ros
{
namespace message_traits
{
template<class ContainerAllocator>
struct MD5Sum< ::roslib::Header_<ContainerAllocator> > {
static const char* value()
{
return "2176decaecbce78abc3b96ef049fabed";
}
static const char* value(const ::roslib::Header_<ContainerAllocator> &)
{ return value(); }
static const uint64_t static_value1 = 0x2176decaecbce78aULL;
static const uint64_t static_value2 = 0xbc3b96ef049fabedULL;
};
template<class ContainerAllocator>
struct DataType< ::roslib::Header_<ContainerAllocator> > {
static const char* value()
{
return "roslib/Header";
}
static const char* value(const ::roslib::Header_<ContainerAllocator> &)
{ return value(); }
};
template<class ContainerAllocator>
struct Definition< ::roslib::Header_<ContainerAllocator> > {
static const char* value()
{
return "# Standard metadata for higher-level stamped data types.\n\
# This is generally used to communicate timestamped data \n\
# in a particular coordinate frame.\n\
# \n\
# sequence ID: consecutively increasing ID \n\
uint32 seq\n\
#Two-integer timestamp that is expressed as:\n\
# * stamp.secs: seconds (stamp_secs) since epoch\n\
# * stamp.nsecs: nanoseconds since stamp_secs\n\
# time-handling sugar is provided by the client library\n\
time stamp\n\
#Frame this data is associated with\n\
# 0: no frame\n\
# 1: global frame\n\
string frame_id\n\
\n\
";
}
static const char* value(const ::roslib::Header_<ContainerAllocator> &)
{ return value(); }
};
} // namespace message_traits
} // namespace ros
namespace ros
{
namespace serialization
{
template<class ContainerAllocator> struct Serializer< ::roslib::Header_<Con
tainerAllocator> >
{
template<typename Stream, typename T> inline static void allInOne(Stream&
stream, T m)
{
stream.next(m.seq);
stream.next(m.stamp);
stream.next(m.frame_id);
}
ROS_DECLARE_ALLINONE_SERIALIZER;
}; // struct Header_
} // namespace serialization
} // namespace ros
namespace ros
{
namespace message_operations
{
template<class ContainerAllocator>
struct Printer< ::roslib::Header_<ContainerAllocator> >
{
template<typename Stream> static void stream(Stream& s, const std::string
& indent, const ::roslib::Header_<ContainerAllocator> & v)
{
s << indent << "seq: ";
Printer<uint32_t>::stream(s, indent + " ", v.seq);
s << indent << "stamp: ";
Printer<ros::Time>::stream(s, indent + " ", v.stamp);
s << indent << "frame_id: ";
Printer<std::basic_string<char, std::char_traits<char>, typename Contai
nerAllocator::template rebind<char>::other > >::stream(s, indent + " ", v.
frame_id);
}
};
} // namespace message_operations
} // namespace ros
#endif // ROSLIB_MESSAGE_HEADER_H #include <std_msgs/Header.h>
 End of changes. 2 change blocks. 
240 lines changed or deleted 1 lines changed or added


 Log.h   Log.h 
/* Auto-generated by genmsg_cpp for file /home/andrey/install/ros-2.0-cturt #warning("This header has been deprecated in favor of rosgraph_msgs/Log.h")
le/ros/core/roslib/msg/Log.msg */
/* Auto-generated by genmsg_cpp for file /Users/kwc/ros/core/roslib/msg/Log
.msg */
#ifndef ROSLIB_MESSAGE_LOG_H #ifndef ROSLIB_MESSAGE_LOG_H
#define ROSLIB_MESSAGE_LOG_H #define ROSLIB_MESSAGE_LOG_H
#include <string> #include <string>
#include <vector> #include <vector>
#include <ostream> #include <ostream>
#include "ros/serialization.h" #include "ros/serialization.h"
#include "ros/builtin_message_traits.h" #include "ros/builtin_message_traits.h"
#include "ros/message_operations.h" #include "ros/message_operations.h"
#include "ros/message.h" #include "ros/message.h"
#include "ros/time.h" #include "ros/time.h"
skipping to change at line 76 skipping to change at line 78
typedef std::vector<std::basic_string<char, std::char_traits<char>, typen ame ContainerAllocator::template rebind<char>::other > , typename Container Allocator::template rebind<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::other > _to pics_type; typedef std::vector<std::basic_string<char, std::char_traits<char>, typen ame ContainerAllocator::template rebind<char>::other > , typename Container Allocator::template rebind<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::other > _to pics_type;
std::vector<std::basic_string<char, std::char_traits<char>, typename Cont ainerAllocator::template rebind<char>::other > , typename ContainerAllocato r::template rebind<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::other > topics; std::vector<std::basic_string<char, std::char_traits<char>, typename Cont ainerAllocator::template rebind<char>::other > , typename ContainerAllocato r::template rebind<std::basic_string<char, std::char_traits<char>, typename ContainerAllocator::template rebind<char>::other > >::other > topics;
enum { DEBUG = 1 }; enum { DEBUG = 1 };
enum { INFO = 2 }; enum { INFO = 2 };
enum { WARN = 4 }; enum { WARN = 4 };
enum { ERROR = 8 }; enum { ERROR = 8 };
enum { FATAL = 16 }; enum { FATAL = 16 };
ROSCPP_DEPRECATED uint32_t get_topics_size() const { return (uint32_t)top uint32_t get_topics_size() const { return (uint32_t)topics.size(); }
ics.size(); } void set_topics_size(uint32_t size) { topics.resize((size_t)size); }
ROSCPP_DEPRECATED void set_topics_size(uint32_t size) { topics.resize((si void get_topics_vec(std::vector<std::basic_string<char, std::char_traits
ze_t)size); } <char>, typename ContainerAllocator::template rebind<char>::other > , typen
ROSCPP_DEPRECATED void get_topics_vec(std::vector<std::basic_string<char, ame ContainerAllocator::template rebind<std::basic_string<char, std::char_t
std::char_traits<char>, typename ContainerAllocator::template rebind<char> raits<char>, typename ContainerAllocator::template rebind<char>::other > >:
::other > , typename ContainerAllocator::template rebind<std::basic_string< :other > & vec) const { vec = this->topics; }
char, std::char_traits<char>, typename ContainerAllocator::template rebind< void set_topics_vec(const std::vector<std::basic_string<char, std::char_
char>::other > >::other > & vec) const { vec = this->topics; } traits<char>, typename ContainerAllocator::template rebind<char>::other > ,
ROSCPP_DEPRECATED void set_topics_vec(const std::vector<std::basic_string typename ContainerAllocator::template rebind<std::basic_string<char, std::
<char, std::char_traits<char>, typename ContainerAllocator::template rebind char_traits<char>, typename ContainerAllocator::template rebind<char>::othe
<char>::other > , typename ContainerAllocator::template rebind<std::basic_s r > >::other > & vec) { this->topics = vec; }
tring<char, std::char_traits<char>, typename ContainerAllocator::template r
ebind<char>::other > >::other > & vec) { this->topics = vec; }
private: private:
static const char* __s_getDataType_() { return "roslib/Log"; } static const char* __s_getDataType_() { return "roslib/Log"; }
public: public:
ROSCPP_DEPRECATED static const std::string __s_getDataType() { return __s _getDataType_(); } static const std::string __s_getDataType() { return __s_getDataType_(); }
ROSCPP_DEPRECATED const std::string __getDataType() const { return __s_ge tDataType_(); } const std::string __getDataType() const { return __s_getDataType_(); }
private: private:
static const char* __s_getMD5Sum_() { return "acffd30cd6b6de30f120938c17c 593fb"; } static const char* __s_getMD5Sum_() { return "acffd30cd6b6de30f120938c17c 593fb"; }
public: public:
ROSCPP_DEPRECATED static const std::string __s_getMD5Sum() { return __s_g etMD5Sum_(); } static const std::string __s_getMD5Sum() { return __s_getMD5Sum_(); }
ROSCPP_DEPRECATED const std::string __getMD5Sum() const { return __s_getM D5Sum_(); } const std::string __getMD5Sum() const { return __s_getMD5Sum_(); }
private: private:
static const char* __s_getMessageDefinition_() { return "##\n\ static const char* __s_getMessageDefinition_() { return "##\n\
## Severity level constants\n\ ## Severity level constants\n\
##\n\ ##\n\
byte DEBUG=1 #debug level\n\ byte DEBUG=1 #debug level\n\
byte INFO=2 #general level\n\ byte INFO=2 #general level\n\
byte WARN=4 #warning level\n\ byte WARN=4 #warning level\n\
byte ERROR=8 #error level\n\ byte ERROR=8 #error level\n\
byte FATAL=16 #fatal/critical level\n\ byte FATAL=16 #fatal/critical level\n\
skipping to change at line 135 skipping to change at line 137
# * stamp.nsecs: nanoseconds since stamp_secs\n\ # * stamp.nsecs: nanoseconds since stamp_secs\n\
# time-handling sugar is provided by the client library\n\ # time-handling sugar is provided by the client library\n\
time stamp\n\ time stamp\n\
#Frame this data is associated with\n\ #Frame this data is associated with\n\
# 0: no frame\n\ # 0: no frame\n\
# 1: global frame\n\ # 1: global frame\n\
string frame_id\n\ string frame_id\n\
\n\ \n\
"; } "; }
public: public:
ROSCPP_DEPRECATED static const std::string __s_getMessageDefinition() { r eturn __s_getMessageDefinition_(); } static const std::string __s_getMessageDefinition() { return __s_getMess ageDefinition_(); }
ROSCPP_DEPRECATED const std::string __getMessageDefinition() const { retu rn __s_getMessageDefinition_(); } const std::string __getMessageDefinition() const { return __s_getMessage Definition_(); }
ROSCPP_DEPRECATED virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const virtual uint8_t *serialize(uint8_t *write_ptr, uint32_t seq) const
{ {
ros::serialization::OStream stream(write_ptr, 1000000000); ros::serialization::OStream stream(write_ptr, 1000000000);
ros::serialization::serialize(stream, header); ros::serialization::serialize(stream, header);
ros::serialization::serialize(stream, level); ros::serialization::serialize(stream, level);
ros::serialization::serialize(stream, name); ros::serialization::serialize(stream, name);
ros::serialization::serialize(stream, msg); ros::serialization::serialize(stream, msg);
ros::serialization::serialize(stream, file); ros::serialization::serialize(stream, file);
ros::serialization::serialize(stream, function); ros::serialization::serialize(stream, function);
ros::serialization::serialize(stream, line); ros::serialization::serialize(stream, line);
ros::serialization::serialize(stream, topics); ros::serialization::serialize(stream, topics);
return stream.getData(); return stream.getData();
} }
ROSCPP_DEPRECATED virtual uint8_t *deserialize(uint8_t *read_ptr) virtual uint8_t *deserialize(uint8_t *read_ptr)
{ {
ros::serialization::IStream stream(read_ptr, 1000000000); ros::serialization::IStream stream(read_ptr, 1000000000);
ros::serialization::deserialize(stream, header); ros::serialization::deserialize(stream, header);
ros::serialization::deserialize(stream, level); ros::serialization::deserialize(stream, level);
ros::serialization::deserialize(stream, name); ros::serialization::deserialize(stream, name);
ros::serialization::deserialize(stream, msg); ros::serialization::deserialize(stream, msg);
ros::serialization::deserialize(stream, file); ros::serialization::deserialize(stream, file);
ros::serialization::deserialize(stream, function); ros::serialization::deserialize(stream, function);
ros::serialization::deserialize(stream, line); ros::serialization::deserialize(stream, line);
ros::serialization::deserialize(stream, topics); ros::serialization::deserialize(stream, topics);
return stream.getData(); return stream.getData();
} }
ROSCPP_DEPRECATED virtual uint32_t serializationLength() const virtual uint32_t serializationLength() const
{ {
uint32_t size = 0; uint32_t size = 0;
size += ros::serialization::serializationLength(header); size += ros::serialization::serializationLength(header);
size += ros::serialization::serializationLength(level); size += ros::serialization::serializationLength(level);
size += ros::serialization::serializationLength(name); size += ros::serialization::serializationLength(name);
size += ros::serialization::serializationLength(msg); size += ros::serialization::serializationLength(msg);
size += ros::serialization::serializationLength(file); size += ros::serialization::serializationLength(file);
size += ros::serialization::serializationLength(function); size += ros::serialization::serializationLength(function);
size += ros::serialization::serializationLength(line); size += ros::serialization::serializationLength(line);
size += ros::serialization::serializationLength(topics); size += ros::serialization::serializationLength(topics);
 End of changes. 11 change blocks. 
25 lines changed or deleted 25 lines changed or added


 common.h   common.h 
skipping to change at line 43 skipping to change at line 43
#include <stddef.h> #include <stddef.h>
#include <string> #include <string>
#include "ros/assert.h" #include "ros/assert.h"
#include "ros/forwards.h" #include "ros/forwards.h"
#include "ros/serialized_message.h" #include "ros/serialized_message.h"
#include <boost/shared_array.hpp> #include <boost/shared_array.hpp>
#define ROS_VERSION_MAJOR 1 #define ROS_VERSION_MAJOR 1
#define ROS_VERSION_MINOR 2 #define ROS_VERSION_MINOR 4
#define ROS_VERSION_PATCH 6 #define ROS_VERSION_PATCH 5
#define ROS_VERSION_COMBINED(major, minor, patch) (((major) << 20) | ((mino r) << 10) | (patch)) #define ROS_VERSION_COMBINED(major, minor, patch) (((major) << 20) | ((mino r) << 10) | (patch))
#define ROS_VERSION ROS_VERSION_COMBINED(ROS_VERSION_MAJOR, ROS_VERSION_MIN OR, ROS_VERSION_PATCH) #define ROS_VERSION ROS_VERSION_COMBINED(ROS_VERSION_MAJOR, ROS_VERSION_MIN OR, ROS_VERSION_PATCH)
#define ROS_VERSION_GE(major1, minor1, patch1, major2, minor2, patch2) (ROS _VERSION_COMBINED(major1, minor1, patch1) >= ROS_VERSION_COMBINED(major2, m inor2, patch2)) #define ROS_VERSION_GE(major1, minor1, patch1, major2, minor2, patch2) (ROS _VERSION_COMBINED(major1, minor1, patch1) >= ROS_VERSION_COMBINED(major2, m inor2, patch2))
#define ROS_VERSION_MINIMUM(major, minor, patch) ROS_VERSION_GE(ROS_VERSION _MAJOR, ROS_VERSION_MINOR, ROS_VERSION_PATCH, major, minor, patch) #define ROS_VERSION_MINIMUM(major, minor, patch) ROS_VERSION_GE(ROS_VERSION _MAJOR, ROS_VERSION_MINOR, ROS_VERSION_PATCH, major, minor, patch)
namespace ros namespace ros
{ {
void disableAllSignalsInThisThread(); void disableAllSignalsInThisThread();
 End of changes. 1 change blocks. 
2 lines changed or deleted 2 lines changed or added


 console.h   console.h 
skipping to change at line 77 skipping to change at line 77
namespace boost namespace boost
{ {
template<typename T> class shared_array; template<typename T> class shared_array;
} }
namespace ros namespace ros
{ {
namespace console namespace console
{ {
void shutdown(); // disables future logging calls
namespace levels namespace levels
{ {
enum Level enum Level
{ {
Debug, Debug,
Info, Info,
Warn, Warn,
Error, Error,
Fatal, Fatal,
skipping to change at line 103 skipping to change at line 104
extern log4cxx::LevelPtr g_level_lookup[]; extern log4cxx::LevelPtr g_level_lookup[];
/** /**
* \brief Only exported because the macros need it. Do not use directly. * \brief Only exported because the macros need it. Do not use directly.
*/ */
extern bool g_initialized; extern bool g_initialized;
/** /**
* \brief Don't call this directly. Performs any required initialization/c onfiguration. Happens automatically when using the macro API. * \brief Don't call this directly. Performs any required initialization/c onfiguration. Happens automatically when using the macro API.
* *
* If you're going to be using log4cxx or any of the ros::console functions , and need the system to be initialized, use the * If you're going to be using log4cxx or any of the ::ros::console functio ns, and need the system to be initialized, use the
* ROSCONSOLE_AUTOINIT macro. * ROSCONSOLE_AUTOINIT macro.
*/ */
void initialize(); void initialize();
struct FilterBase; class FilterBase;
/** /**
* \brief Don't call this directly. Use the ROS_LOG() macro instead. * \brief Don't call this directly. Use the ROS_LOG() macro instead.
* @param level Logging level * @param level Logging level
* @param file File this logging statement is from (usually generated with __FILE__) * @param file File this logging statement is from (usually generated with __FILE__)
* @param line Line of code this logging statement is from (usually generat ed with __LINE__) * @param line Line of code this logging statement is from (usually generat ed with __LINE__)
* @param fmt Format string * @param fmt Format string
*/ */
void print(FilterBase* filter, log4cxx::Logger* logger, Level level, const char* file, int line, const char* function, const char* fmt, ...) ROSCONSOL E_PRINTF_ATTRIBUTE(7, 8); void print(FilterBase* filter, log4cxx::Logger* logger, Level level, const char* file, int line, const char* function, const char* fmt, ...) ROSCONSOL E_PRINTF_ATTRIBUTE(7, 8);
void print(FilterBase* filter, log4cxx::Logger* logger, Level level, const std::stringstream& str, const char* file, int line, const char* function); void print(FilterBase* filter, log4cxx::Logger* logger, Level level, const std::stringstream& str, const char* file, int line, const char* function);
skipping to change at line 220 skipping to change at line 221
*/ */
void checkLogLocationEnabled(LogLocation* loc); void checkLogLocationEnabled(LogLocation* loc);
/** /**
* \brief Internal * \brief Internal
*/ */
struct LogLocation struct LogLocation
{ {
bool initialized_; bool initialized_;
bool logger_enabled_; bool logger_enabled_;
ros::console::Level level_; ::ros::console::Level level_;
log4cxx::Logger* logger_; log4cxx::Logger* logger_;
}; };
void vformatToBuffer(boost::shared_array<char>& buffer, size_t& buffer_size , const char* fmt, va_list args); void vformatToBuffer(boost::shared_array<char>& buffer, size_t& buffer_size , const char* fmt, va_list args);
void formatToBuffer(boost::shared_array<char>& buffer, size_t& buffer_size, const char* fmt, ...); void formatToBuffer(boost::shared_array<char>& buffer, size_t& buffer_size, const char* fmt, ...);
std::string formatToString(const char* fmt, ...); std::string formatToString(const char* fmt, ...);
} // namespace console } // namespace console
} // namespace ros } // namespace ros
skipping to change at line 281 skipping to change at line 282
#define ROSCONSOLE_MIN_SEVERITY ROSCONSOLE_SEVERITY_DEBUG #define ROSCONSOLE_MIN_SEVERITY ROSCONSOLE_SEVERITY_DEBUG
#endif #endif
/** /**
* \def ROSCONSOLE_AUTOINIT * \def ROSCONSOLE_AUTOINIT
* \brief Initializes the rosconsole library. Usually unnecessary to call directly. * \brief Initializes the rosconsole library. Usually unnecessary to call directly.
*/ */
#define ROSCONSOLE_AUTOINIT \ #define ROSCONSOLE_AUTOINIT \
do \ do \
{ \ { \
if (ROS_UNLIKELY(!ros::console::g_initialized)) \ if (ROS_UNLIKELY(!::ros::console::g_initialized)) \
{ \ { \
ros::console::initialize(); \ ::ros::console::initialize(); \
} \ } \
} while(0) } while(0)
#define ROSCONSOLE_DEFINE_LOCATION(cond, level, name) \ #define ROSCONSOLE_DEFINE_LOCATION(cond, level, name) \
ROSCONSOLE_AUTOINIT; \ ROSCONSOLE_AUTOINIT; \
static ros::console::LogLocation loc = {false, false, ros::console::level s::Count, 0}; /* Initialized at compile-time */ \ static ::ros::console::LogLocation loc = {false, false, ::ros::console::l evels::Count, 0}; /* Initialized at compile-time */ \
if (ROS_UNLIKELY(!loc.initialized_)) \ if (ROS_UNLIKELY(!loc.initialized_)) \
{ \ { \
initializeLogLocation(&loc, name, level); \ initializeLogLocation(&loc, name, level); \
} \ } \
if (ROS_UNLIKELY(loc.level_ != level)) \ if (ROS_UNLIKELY(loc.level_ != level)) \
{ \ { \
setLogLocationLevel(&loc, level); \ setLogLocationLevel(&loc, level); \
checkLogLocationEnabled(&loc); \ checkLogLocationEnabled(&loc); \
} \ } \
bool enabled = loc.logger_enabled_ && (cond); bool enabled = loc.logger_enabled_ && (cond);
#define ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER(filter, ...) \ #define ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER(filter, ...) \
ros::console::print(filter, loc.logger_, loc.level_, __FILE__, __LINE__ , __ROSCONSOLE_FUNCTION__, __VA_ARGS__) ::ros::console::print(filter, loc.logger_, loc.level_, __FILE__, __LINE __, __ROSCONSOLE_FUNCTION__, __VA_ARGS__)
#define ROSCONSOLE_PRINT_AT_LOCATION(...) \ #define ROSCONSOLE_PRINT_AT_LOCATION(...) \
ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER(0, __VA_ARGS__) ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER(0, __VA_ARGS__)
#define ROSCONSOLE_PRINT_STREAM_AT_LOCATION_WITH_FILTER(filter, args) \ #define ROSCONSOLE_PRINT_STREAM_AT_LOCATION_WITH_FILTER(filter, args) \
do \ do \
{ \ { \
std::stringstream ss; \ std::stringstream ss; \
ss << args; \ ss << args; \
ros::console::print(filter, loc.logger_, loc.level_, ss, __FILE__, __LI NE__, __ROSCONSOLE_FUNCTION__); \ ::ros::console::print(filter, loc.logger_, loc.level_, ss, __FILE__, __ LINE__, __ROSCONSOLE_FUNCTION__); \
} while (0) } while (0)
#define ROSCONSOLE_PRINT_STREAM_AT_LOCATION(args) \ #define ROSCONSOLE_PRINT_STREAM_AT_LOCATION(args) \
ROSCONSOLE_PRINT_STREAM_AT_LOCATION_WITH_FILTER(0, args) ROSCONSOLE_PRINT_STREAM_AT_LOCATION_WITH_FILTER(0, args)
/** /**
* \brief Log to a given named logger at a given verbosity level, only if a given condition has been met, with printf-style formatting * \brief Log to a given named logger at a given verbosity level, only if a given condition has been met, with printf-style formatting
* *
* \note The condition will only be evaluated if this logging statement is enabled * \note The condition will only be evaluated if this logging statement is enabled
* *
* \param cond Boolean condition to be evaluated * \param cond Boolean condition to be evaluated
* \param level One of the levels specified in ros::console::levels::Level * \param level One of the levels specified in ::ros::console::levels::Leve l
* \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name. * \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name.
*/ */
#define ROS_LOG_COND(cond, level, name, ...) \ #define ROS_LOG_COND(cond, level, name, ...) \
do \ do \
{ \ { \
ROSCONSOLE_DEFINE_LOCATION(cond, level, name); \ ROSCONSOLE_DEFINE_LOCATION(cond, level, name); \
\ \
if (ROS_UNLIKELY(enabled)) \ if (ROS_UNLIKELY(enabled)) \
{ \ { \
ROSCONSOLE_PRINT_AT_LOCATION(__VA_ARGS__); \ ROSCONSOLE_PRINT_AT_LOCATION(__VA_ARGS__); \
} \ } \
} while(0) } while(0)
/** /**
* \brief Log to a given named logger at a given verbosity level, only if a given condition has been met, with stream-style formatting * \brief Log to a given named logger at a given verbosity level, only if a given condition has been met, with stream-style formatting
* *
* \note The condition will only be evaluated if this logging statement is enabled * \note The condition will only be evaluated if this logging statement is enabled
* *
* \param cond Boolean condition to be evaluated * \param cond Boolean condition to be evaluated
* \param level One of the levels specified in ros::console::levels::Level * \param level One of the levels specified in ::ros::console::levels::Leve l
* \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name. * \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name.
*/ */
#define ROS_LOG_STREAM_COND(cond, level, name, args) \ #define ROS_LOG_STREAM_COND(cond, level, name, args) \
do \ do \
{ \ { \
ROSCONSOLE_DEFINE_LOCATION(cond, level, name); \ ROSCONSOLE_DEFINE_LOCATION(cond, level, name); \
if (ROS_UNLIKELY(enabled)) \ if (ROS_UNLIKELY(enabled)) \
{ \ { \
ROSCONSOLE_PRINT_STREAM_AT_LOCATION(args); \ ROSCONSOLE_PRINT_STREAM_AT_LOCATION(args); \
} \ } \
} while(0) } while(0)
/** /**
* \brief Log to a given named logger at a given verbosity level, only the first time it is hit when enabled, with printf-style formatting * \brief Log to a given named logger at a given verbosity level, only the first time it is hit when enabled, with printf-style formatting
* *
* \param level One of the levels specified in ros::console::levels::Level * \param level One of the levels specified in ::ros::console::levels::Leve l
* \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name. * \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name.
*/ */
#define ROS_LOG_ONCE(level, name, ...) \ #define ROS_LOG_ONCE(level, name, ...) \
do \ do \
{ \ { \
ROSCONSOLE_DEFINE_LOCATION(true, level, name); \ ROSCONSOLE_DEFINE_LOCATION(true, level, name); \
static bool hit = false; \ static bool hit = false; \
if (ROS_UNLIKELY(enabled) && ROS_UNLIKELY(!hit)) \ if (ROS_UNLIKELY(enabled) && ROS_UNLIKELY(!hit)) \
{ \ { \
hit = true; \ hit = true; \
ROSCONSOLE_PRINT_AT_LOCATION(__VA_ARGS__); \ ROSCONSOLE_PRINT_AT_LOCATION(__VA_ARGS__); \
} \ } \
} while(0) } while(0)
/** /**
* \brief Log to a given named logger at a given verbosity level, only the first time it is hit when enabled, with printf-style formatting * \brief Log to a given named logger at a given verbosity level, only the first time it is hit when enabled, with printf-style formatting
* *
* \param level One of the levels specified in ros::console::levels::Level * \param level One of the levels specified in ::ros::console::levels::Leve l
* \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name. * \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name.
*/ */
#define ROS_LOG_STREAM_ONCE(level, name, args) \ #define ROS_LOG_STREAM_ONCE(level, name, args) \
do \ do \
{ \ { \
ROSCONSOLE_DEFINE_LOCATION(true, level, name); \ ROSCONSOLE_DEFINE_LOCATION(true, level, name); \
static bool hit = false; \ static bool hit = false; \
if (ROS_UNLIKELY(enabled) && ROS_UNLIKELY(!hit)) \ if (ROS_UNLIKELY(enabled) && ROS_UNLIKELY(!hit)) \
{ \ { \
hit = true; \ hit = true; \
ROSCONSOLE_PRINT_STREAM_AT_LOCATION(args); \ ROSCONSOLE_PRINT_STREAM_AT_LOCATION(args); \
} \ } \
} while(0) } while(0)
/** /**
* \brief Log to a given named logger at a given verbosity level, limited t o a specific rate of printing, with printf-style formatting * \brief Log to a given named logger at a given verbosity level, limited t o a specific rate of printing, with printf-style formatting
* *
* \param level One of the levels specified in ros::console::levels::Level * \param level One of the levels specified in ::ros::console::levels::Leve l
* \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name. * \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name.
* \param rate The rate it should actually trigger at * \param rate The rate it should actually trigger at
*/ */
#define ROS_LOG_THROTTLE(rate, level, name, ...) \ #define ROS_LOG_THROTTLE(rate, level, name, ...) \
do \ do \
{ \ { \
ROSCONSOLE_DEFINE_LOCATION(true, level, name); \ ROSCONSOLE_DEFINE_LOCATION(true, level, name); \
static double last_hit = 0.0; \ static double last_hit = 0.0; \
ros::Time now = ros::Time::now(); \ ::ros::Time now = ::ros::Time::now(); \
if (ROS_UNLIKELY(enabled) && ROS_UNLIKELY(last_hit + rate <= now.toSec( ))) \ if (ROS_UNLIKELY(enabled) && ROS_UNLIKELY(last_hit + rate <= now.toSec( ))) \
{ \ { \
last_hit = now.toSec(); \ last_hit = now.toSec(); \
ROSCONSOLE_PRINT_AT_LOCATION(__VA_ARGS__); \ ROSCONSOLE_PRINT_AT_LOCATION(__VA_ARGS__); \
} \ } \
} while(0) } while(0)
/** /**
* \brief Log to a given named logger at a given verbosity level, limited t o a specific rate of printing, with printf-style formatting * \brief Log to a given named logger at a given verbosity level, limited t o a specific rate of printing, with printf-style formatting
* *
* \param level One of the levels specified in ros::console::levels::Level * \param level One of the levels specified in ::ros::console::levels::Leve l
* \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name. * \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name.
* \param rate The rate it should actually trigger at * \param rate The rate it should actually trigger at
*/ */
#define ROS_LOG_STREAM_THROTTLE(rate, level, name, args) \ #define ROS_LOG_STREAM_THROTTLE(rate, level, name, args) \
do \ do \
{ \ { \
ROSCONSOLE_DEFINE_LOCATION(true, level, name); \ ROSCONSOLE_DEFINE_LOCATION(true, level, name); \
static double last_hit = 0.0; \ static double last_hit = 0.0; \
ros::Time now = ros::Time::now(); \ ::ros::Time now = ::ros::Time::now(); \
if (ROS_UNLIKELY(enabled) && ROS_UNLIKELY(last_hit + rate <= now.toSec( ))) \ if (ROS_UNLIKELY(enabled) && ROS_UNLIKELY(last_hit + rate <= now.toSec( ))) \
{ \ { \
last_hit = now.toSec(); \ last_hit = now.toSec(); \
ROSCONSOLE_PRINT_STREAM_AT_LOCATION(args); \ ROSCONSOLE_PRINT_STREAM_AT_LOCATION(args); \
} \ } \
} while(0) } while(0)
/** /**
* \brief Log to a given named logger at a given verbosity level, with user -defined filtering, with printf-style formatting * \brief Log to a given named logger at a given verbosity level, with user -defined filtering, with printf-style formatting
* *
* \param filter pointer to the filter to be used * \param filter pointer to the filter to be used
* \param level One of the levels specified in ros::console::levels::Level * \param level One of the levels specified in ::ros::console::levels::Leve l
* \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name. * \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name.
*/ */
#define ROS_LOG_FILTER(filter, level, name, ...) \ #define ROS_LOG_FILTER(filter, level, name, ...) \
do \ do \
{ \ { \
ROSCONSOLE_DEFINE_LOCATION(true, level, name); \ ROSCONSOLE_DEFINE_LOCATION(true, level, name); \
if (ROS_UNLIKELY(enabled) && (filter)->isEnabled()) \ if (ROS_UNLIKELY(enabled) && (filter)->isEnabled()) \
{ \ { \
ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER(filter, __VA_ARGS__); \ ROSCONSOLE_PRINT_AT_LOCATION_WITH_FILTER(filter, __VA_ARGS__); \
} \ } \
} while(0) } while(0)
/** /**
* \brief Log to a given named logger at a given verbosity level, with user -defined filtering, with stream-style formatting * \brief Log to a given named logger at a given verbosity level, with user -defined filtering, with stream-style formatting
* *
* \param cond Boolean condition to be evaluated * \param cond Boolean condition to be evaluated
* \param level One of the levels specified in ros::console::levels::Level * \param level One of the levels specified in ::ros::console::levels::Leve l
* \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name. * \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name.
*/ */
#define ROS_LOG_STREAM_FILTER(filter, level, name, args) \ #define ROS_LOG_STREAM_FILTER(filter, level, name, args) \
do \ do \
{ \ { \
ROSCONSOLE_DEFINE_LOCATION(true, level, name); \ ROSCONSOLE_DEFINE_LOCATION(true, level, name); \
if (ROS_UNLIKELY(enabled) && (filter)->isEnabled()) \ if (ROS_UNLIKELY(enabled) && (filter)->isEnabled()) \
{ \ { \
ROSCONSOLE_PRINT_STREAM_AT_LOCATION_WITH_FILTER(filter, args); \ ROSCONSOLE_PRINT_STREAM_AT_LOCATION_WITH_FILTER(filter, args); \
} \ } \
} while(0) } while(0)
/** /**
* \brief Log to a given named logger at a given verbosity level, with prin tf-style formatting * \brief Log to a given named logger at a given verbosity level, with prin tf-style formatting
* *
* \param level One of the levels specified in ros::console::levels::Level * \param level One of the levels specified in ::ros::console::levels::Leve l
* \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name. * \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name.
*/ */
#define ROS_LOG(level, name, ...) ROS_LOG_COND(true, level, name, __VA_ARGS __) #define ROS_LOG(level, name, ...) ROS_LOG_COND(true, level, name, __VA_ARGS __)
/** /**
* \brief Log to a given named logger at a given verbosity level, with stre am-style formatting * \brief Log to a given named logger at a given verbosity level, with stre am-style formatting
* *
* \param level One of the levels specified in ros::console::levels::Level * \param level One of the levels specified in ::ros::console::levels::Leve l
* \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name. * \param name Name of the logger. Note that this is the fully qualified n ame, and does NOT include "ros.<package_name>". Use ROSCONSOLE_DEFAULT_NAM E if you would like to use the default name.
*/ */
#define ROS_LOG_STREAM(level, name, args) ROS_LOG_STREAM_COND(true, level, name, args) #define ROS_LOG_STREAM(level, name, args) ROS_LOG_STREAM_COND(true, level, name, args)
#include "rosconsole/macros_generated.h" #include "rosconsole/macros_generated.h"
#endif // ROSCONSOLE_ROSCONSOLE_H #endif // ROSCONSOLE_ROSCONSOLE_H
 End of changes. 21 change blocks. 
20 lines changed or deleted 21 lines changed or added


 debug.h   debug.h 
skipping to change at line 32 skipping to change at line 32
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T HE * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T HE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
#ifndef ROSLIB_DEBUG_H #ifndef ROSLIB_DEBUG_H
#define ROSLIB_DEBUG_H #define ROSLIB_DEBUG_H
#include <string> #include <string>
#include <vector>
namespace ros namespace ros
{ {
namespace debug namespace debug
{ {
typedef std::vector<void*> V_void;
typedef std::vector<std::string> V_string;
std::string getBacktrace(); std::string getBacktrace();
std::string backtraceToString(const V_void& addresses);
void getBacktrace(V_void& addresses);
void translateAddresses(const V_void& addresses, V_string& lines);
void demangleBacktrace(const V_string& names, V_string& demangled);
std::string demangleBacktrace(const V_string& names);
std::string demangleName(const std::string& name);
} }
} }
#endif #endif
 End of changes. 3 change blocks. 
0 lines changed or deleted 10 lines changed or added


 duration.h   duration.h 
skipping to change at line 44 skipping to change at line 44
#ifndef ROS_DURATION_H #ifndef ROS_DURATION_H
#define ROS_DURATION_H #define ROS_DURATION_H
#include <iostream> #include <iostream>
#include <math.h> #include <math.h>
#include <stdexcept> #include <stdexcept>
#include <climits> #include <climits>
#include <stdint.h> #include <stdint.h>
#ifdef WIN32
#include <windows.h>
#endif
namespace ros namespace ros
{ {
inline void normalizeSecNSecSigned(int64_t& sec, int64_t& nsec) inline void normalizeSecNSecSigned(int64_t& sec, int64_t& nsec)
{ {
int64_t nsec_part = nsec; int64_t nsec_part = nsec;
int64_t sec_part = sec; int64_t sec_part = sec;
while (nsec_part > 1000000000L) while (nsec_part > 1000000000L)
{ {
 End of changes. 1 change blocks. 
4 lines changed or deleted 0 lines changed or added


 forwards.h   forwards.h 
skipping to change at line 42 skipping to change at line 42
#include <vector> #include <vector>
#include <map> #include <map>
#include <set> #include <set>
#include <list> #include <list>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp> #include <boost/weak_ptr.hpp>
#include <boost/function.hpp> #include <boost/function.hpp>
#include <ros/time.h> #include <ros/time.h>
#include "macros.h" #include <ros/macros.h>
#include "exceptions.h" #include "exceptions.h"
namespace ros namespace ros
{ {
typedef boost::shared_ptr<void> VoidPtr; typedef boost::shared_ptr<void> VoidPtr;
typedef boost::weak_ptr<void> VoidWPtr; typedef boost::weak_ptr<void> VoidWPtr;
typedef boost::shared_ptr<void const> VoidConstPtr; typedef boost::shared_ptr<void const> VoidConstPtr;
typedef boost::weak_ptr<void const> VoidConstWPtr; typedef boost::weak_ptr<void const> VoidConstWPtr;
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 macros.h   macros.h 
/* /*
* Copyright (C) 2008, Willow Garage, Inc. * Copyright (C) 2010, Willow Garage, Inc.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are m et: * modification, are permitted provided that the following conditions are m et:
* * Redistributions of source code must retain the above copyright notic e, * * Redistributions of source code must retain the above copyright notic e,
* this list of conditions and the following disclaimer. * this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright * * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the * notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution. * documentation and/or other materials provided with the distribution.
* * Neither the names of Willow Garage, Inc. nor the names of its * * Neither the names of Willow Garage, Inc. nor the names of its
* contributors may be used to endorse or promote products derived from * contributors may be used to endorse or promote products derived from
skipping to change at line 28 skipping to change at line 28
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T HE * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T HE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
#ifndef ROSCPP_MACROS_H #ifndef ROSLIB_MACROS_H
#define ROSCPP_MACROS_H #define ROSLIB_MACROS_H
#if defined(__GNUC__) #if defined(__GNUC__)
#define ROSCPP_DEPRECATED __attribute__((deprecated)) #define ROS_DEPRECATED __attribute__((deprecated))
#define ROSCPP_FORCEINLINE __attribute__((always_inline)) #define ROS_FORCE_INLINE __attribute__((always_inline))
#elif defined(MSVC) #elif defined(MSVC)
#define ROSCPP_DEPRECATED #define ROS_DEPRECATED
#define ROSCPP_FORCEINLINE __forceinline #define ROS_FORCE_INLINE __forceinline
#else #else
#define ROSCPP_DEPRECATED #define ROS_DEPRECATED
#define ROSCPP_FORCEINLINE #define ROS_FORCE_INLINE inline
#endif #endif
#endif #endif
 End of changes. 5 change blocks. 
9 lines changed or deleted 9 lines changed or added


 macros_generated.h   macros_generated.h 
skipping to change at line 54 skipping to change at line 54
#define ROS_DEBUG_STREAM_ONCE_NAMED(name, args) #define ROS_DEBUG_STREAM_ONCE_NAMED(name, args)
#define ROS_DEBUG_THROTTLE(rate, ...) #define ROS_DEBUG_THROTTLE(rate, ...)
#define ROS_DEBUG_STREAM_THROTTLE(rate, args) #define ROS_DEBUG_STREAM_THROTTLE(rate, args)
#define ROS_DEBUG_THROTTLE_NAMED(rate, name, ...) #define ROS_DEBUG_THROTTLE_NAMED(rate, name, ...)
#define ROS_DEBUG_STREAM_THROTTLE_NAMED(rate, name, args) #define ROS_DEBUG_STREAM_THROTTLE_NAMED(rate, name, args)
#define ROS_DEBUG_FILTER(filter, ...) #define ROS_DEBUG_FILTER(filter, ...)
#define ROS_DEBUG_STREAM_FILTER(filter, args) #define ROS_DEBUG_STREAM_FILTER(filter, args)
#define ROS_DEBUG_FILTER_NAMED(filter, name, ...) #define ROS_DEBUG_FILTER_NAMED(filter, name, ...)
#define ROS_DEBUG_STREAM_FILTER_NAMED(filter, name, args) #define ROS_DEBUG_STREAM_FILTER_NAMED(filter, name, args)
#else #else
#define ROS_DEBUG(...) ROS_LOG(ros::console::levels::Debug, ROSCONSOLE_DEFA #define ROS_DEBUG(...) ROS_LOG(::ros::console::levels::Debug, ROSCONSOLE_DE
ULT_NAME, __VA_ARGS__) FAULT_NAME, __VA_ARGS__)
#define ROS_DEBUG_STREAM(args) ROS_LOG_STREAM(ros::console::levels::Debug, #define ROS_DEBUG_STREAM(args) ROS_LOG_STREAM(::ros::console::levels::Debug
ROSCONSOLE_DEFAULT_NAME, args) , ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_DEBUG_NAMED(name, ...) ROS_LOG(ros::console::levels::Debug, std #define ROS_DEBUG_NAMED(name, ...) ROS_LOG(::ros::console::levels::Debug, s
::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__) td::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__)
#define ROS_DEBUG_STREAM_NAMED(name, args) ROS_LOG_STREAM(ros::console::lev #define ROS_DEBUG_STREAM_NAMED(name, args) ROS_LOG_STREAM(::ros::console::l
els::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, args) evels::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, args)
#define ROS_DEBUG_COND(cond, ...) ROS_LOG_COND(cond, ros::console::levels:: #define ROS_DEBUG_COND(cond, ...) ROS_LOG_COND(cond, ::ros::console::levels
Debug, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) ::Debug, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_DEBUG_STREAM_COND(cond, args) ROS_LOG_STREAM_COND(cond, ros::co #define ROS_DEBUG_STREAM_COND(cond, args) ROS_LOG_STREAM_COND(cond, ::ros::
nsole::levels::Debug, ROSCONSOLE_DEFAULT_NAME, args) console::levels::Debug, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_DEBUG_COND_NAMED(cond, name, ...) ROS_LOG_COND(cond, ros::conso #define ROS_DEBUG_COND_NAMED(cond, name, ...) ROS_LOG_COND(cond, ::ros::con
le::levels::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_A sole::levels::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA
RGS__) _ARGS__)
#define ROS_DEBUG_STREAM_COND_NAMED(cond, name, args) ROS_LOG_STREAM_COND(c #define ROS_DEBUG_STREAM_COND_NAMED(cond, name, args) ROS_LOG_STREAM_COND(c
ond, ros::console::levels::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." ond, ::ros::console::levels::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "
+ name, args) ." + name, args)
#define ROS_DEBUG_ONCE(...) ROS_LOG_ONCE(ros::console::levels::Debug, ROSCO #define ROS_DEBUG_ONCE(...) ROS_LOG_ONCE(::ros::console::levels::Debug, ROS
NSOLE_DEFAULT_NAME, __VA_ARGS__) CONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_DEBUG_STREAM_ONCE(args) ROS_LOG_STREAM_ONCE(ros::console::level #define ROS_DEBUG_STREAM_ONCE(args) ROS_LOG_STREAM_ONCE(::ros::console::lev
s::Debug, ROSCONSOLE_DEFAULT_NAME, args) els::Debug, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_DEBUG_ONCE_NAMED(name, ...) ROS_LOG_ONCE(ros::console::levels:: #define ROS_DEBUG_ONCE_NAMED(name, ...) ROS_LOG_ONCE(::ros::console::levels
Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__) ::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__)
#define ROS_DEBUG_STREAM_ONCE_NAMED(name, args) ROS_LOG_STREAM_ONCE(ros::co #define ROS_DEBUG_STREAM_ONCE_NAMED(name, args) ROS_LOG_STREAM_ONCE(::ros::
nsole::levels::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, arg console::levels::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, a
s) rgs)
#define ROS_DEBUG_THROTTLE(rate, ...) ROS_LOG_THROTTLE(rate, ros::console:: #define ROS_DEBUG_THROTTLE(rate, ...) ROS_LOG_THROTTLE(rate, ::ros::console
levels::Debug, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) ::levels::Debug, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_DEBUG_STREAM_THROTTLE(rate, args) ROS_LOG_STREAM_THROTTLE(rate, #define ROS_DEBUG_STREAM_THROTTLE(rate, args) ROS_LOG_STREAM_THROTTLE(rate,
ros::console::levels::Debug, ROSCONSOLE_DEFAULT_NAME, args) ::ros::console::levels::Debug, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_DEBUG_THROTTLE_NAMED(rate, name, ...) ROS_LOG_THROTTLE(rate, ro #define ROS_DEBUG_THROTTLE_NAMED(rate, name, ...) ROS_LOG_THROTTLE(rate, ::
s::console::levels::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name ros::console::levels::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." + na
, __VA_ARGS__) me, __VA_ARGS__)
#define ROS_DEBUG_STREAM_THROTTLE_NAMED(rate, name, args) ROS_LOG_STREAM_TH #define ROS_DEBUG_STREAM_THROTTLE_NAMED(rate, name, args) ROS_LOG_STREAM_TH
ROTTLE(rate, ros::console::levels::Debug, std::string(ROSCONSOLE_NAME_PREFI ROTTLE(rate, ::ros::console::levels::Debug, std::string(ROSCONSOLE_NAME_PRE
X) + "." + name, args) FIX) + "." + name, args)
#define ROS_DEBUG_FILTER(filter, ...) ROS_LOG_FILTER(filter, ros::console:: #define ROS_DEBUG_FILTER(filter, ...) ROS_LOG_FILTER(filter, ::ros::console
levels::Debug, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) ::levels::Debug, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_DEBUG_STREAM_FILTER(filter, args) ROS_LOG_STREAM_FILTER(filter, #define ROS_DEBUG_STREAM_FILTER(filter, args) ROS_LOG_STREAM_FILTER(filter,
ros::console::levels::Debug, ROSCONSOLE_DEFAULT_NAME, args) ::ros::console::levels::Debug, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_DEBUG_FILTER_NAMED(filter, name, ...) ROS_LOG_FILTER(filter, ro #define ROS_DEBUG_FILTER_NAMED(filter, name, ...) ROS_LOG_FILTER(filter, ::
s::console::levels::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name ros::console::levels::Debug, std::string(ROSCONSOLE_NAME_PREFIX) + "." + na
, __VA_ARGS__) me, __VA_ARGS__)
#define ROS_DEBUG_STREAM_FILTER_NAMED(filter, name, args) ROS_LOG_STREAM_FI #define ROS_DEBUG_STREAM_FILTER_NAMED(filter, name, args) ROS_LOG_STREAM_FI
LTER(filter, ros::console::levels::Debug, std::string(ROSCONSOLE_NAME_PREFI LTER(filter, ::ros::console::levels::Debug, std::string(ROSCONSOLE_NAME_PRE
X) + "." + name, args) FIX) + "." + name, args)
#endif #endif
#if (ROSCONSOLE_MIN_SEVERITY > ROSCONSOLE_SEVERITY_INFO) #if (ROSCONSOLE_MIN_SEVERITY > ROSCONSOLE_SEVERITY_INFO)
#define ROS_INFO(...) #define ROS_INFO(...)
#define ROS_INFO_STREAM(args) #define ROS_INFO_STREAM(args)
#define ROS_INFO_NAMED(name, ...) #define ROS_INFO_NAMED(name, ...)
#define ROS_INFO_STREAM_NAMED(name, args) #define ROS_INFO_STREAM_NAMED(name, args)
#define ROS_INFO_COND(cond, ...) #define ROS_INFO_COND(cond, ...)
#define ROS_INFO_STREAM_COND(cond, args) #define ROS_INFO_STREAM_COND(cond, args)
#define ROS_INFO_COND_NAMED(cond, name, ...) #define ROS_INFO_COND_NAMED(cond, name, ...)
skipping to change at line 98 skipping to change at line 98
#define ROS_INFO_STREAM_ONCE_NAMED(name, args) #define ROS_INFO_STREAM_ONCE_NAMED(name, args)
#define ROS_INFO_THROTTLE(rate, ...) #define ROS_INFO_THROTTLE(rate, ...)
#define ROS_INFO_STREAM_THROTTLE(rate, args) #define ROS_INFO_STREAM_THROTTLE(rate, args)
#define ROS_INFO_THROTTLE_NAMED(rate, name, ...) #define ROS_INFO_THROTTLE_NAMED(rate, name, ...)
#define ROS_INFO_STREAM_THROTTLE_NAMED(rate, name, args) #define ROS_INFO_STREAM_THROTTLE_NAMED(rate, name, args)
#define ROS_INFO_FILTER(filter, ...) #define ROS_INFO_FILTER(filter, ...)
#define ROS_INFO_STREAM_FILTER(filter, args) #define ROS_INFO_STREAM_FILTER(filter, args)
#define ROS_INFO_FILTER_NAMED(filter, name, ...) #define ROS_INFO_FILTER_NAMED(filter, name, ...)
#define ROS_INFO_STREAM_FILTER_NAMED(filter, name, args) #define ROS_INFO_STREAM_FILTER_NAMED(filter, name, args)
#else #else
#define ROS_INFO(...) ROS_LOG(ros::console::levels::Info, ROSCONSOLE_DEFAUL #define ROS_INFO(...) ROS_LOG(::ros::console::levels::Info, ROSCONSOLE_DEFA
T_NAME, __VA_ARGS__) ULT_NAME, __VA_ARGS__)
#define ROS_INFO_STREAM(args) ROS_LOG_STREAM(ros::console::levels::Info, RO #define ROS_INFO_STREAM(args) ROS_LOG_STREAM(::ros::console::levels::Info,
SCONSOLE_DEFAULT_NAME, args) ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_INFO_NAMED(name, ...) ROS_LOG(ros::console::levels::Info, std:: #define ROS_INFO_NAMED(name, ...) ROS_LOG(::ros::console::levels::Info, std
string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__) ::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__)
#define ROS_INFO_STREAM_NAMED(name, args) ROS_LOG_STREAM(ros::console::leve #define ROS_INFO_STREAM_NAMED(name, args) ROS_LOG_STREAM(::ros::console::le
ls::Info, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, args) vels::Info, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, args)
#define ROS_INFO_COND(cond, ...) ROS_LOG_COND(cond, ros::console::levels::I #define ROS_INFO_COND(cond, ...) ROS_LOG_COND(cond, ::ros::console::levels:
nfo, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) :Info, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_INFO_STREAM_COND(cond, args) ROS_LOG_STREAM_COND(cond, ros::con #define ROS_INFO_STREAM_COND(cond, args) ROS_LOG_STREAM_COND(cond, ::ros::c
sole::levels::Info, ROSCONSOLE_DEFAULT_NAME, args) onsole::levels::Info, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_INFO_COND_NAMED(cond, name, ...) ROS_LOG_COND(cond, ros::consol #define ROS_INFO_COND_NAMED(cond, name, ...) ROS_LOG_COND(cond, ::ros::cons
e::levels::Info, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARG ole::levels::Info, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_A
S__) RGS__)
#define ROS_INFO_STREAM_COND_NAMED(cond, name, args) ROS_LOG_STREAM_COND(co #define ROS_INFO_STREAM_COND_NAMED(cond, name, args) ROS_LOG_STREAM_COND(co
nd, ros::console::levels::Info, std::string(ROSCONSOLE_NAME_PREFIX) + "." + nd, ::ros::console::levels::Info, std::string(ROSCONSOLE_NAME_PREFIX) + "."
name, args) + name, args)
#define ROS_INFO_ONCE(...) ROS_LOG_ONCE(ros::console::levels::Info, ROSCONS #define ROS_INFO_ONCE(...) ROS_LOG_ONCE(::ros::console::levels::Info, ROSCO
OLE_DEFAULT_NAME, __VA_ARGS__) NSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_INFO_STREAM_ONCE(args) ROS_LOG_STREAM_ONCE(ros::console::levels #define ROS_INFO_STREAM_ONCE(args) ROS_LOG_STREAM_ONCE(::ros::console::leve
::Info, ROSCONSOLE_DEFAULT_NAME, args) ls::Info, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_INFO_ONCE_NAMED(name, ...) ROS_LOG_ONCE(ros::console::levels::I #define ROS_INFO_ONCE_NAMED(name, ...) ROS_LOG_ONCE(::ros::console::levels:
nfo, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__) :Info, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__)
#define ROS_INFO_STREAM_ONCE_NAMED(name, args) ROS_LOG_STREAM_ONCE(ros::con #define ROS_INFO_STREAM_ONCE_NAMED(name, args) ROS_LOG_STREAM_ONCE(::ros::c
sole::levels::Info, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, args) onsole::levels::Info, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, arg
#define ROS_INFO_THROTTLE(rate, ...) ROS_LOG_THROTTLE(rate, ros::console::l s)
evels::Info, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) #define ROS_INFO_THROTTLE(rate, ...) ROS_LOG_THROTTLE(rate, ::ros::console:
#define ROS_INFO_STREAM_THROTTLE(rate, args) ROS_LOG_STREAM_THROTTLE(rate, :levels::Info, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
ros::console::levels::Info, ROSCONSOLE_DEFAULT_NAME, args) #define ROS_INFO_STREAM_THROTTLE(rate, args) ROS_LOG_STREAM_THROTTLE(rate,
#define ROS_INFO_THROTTLE_NAMED(rate, name, ...) ROS_LOG_THROTTLE(rate, ros ::ros::console::levels::Info, ROSCONSOLE_DEFAULT_NAME, args)
::console::levels::Info, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, #define ROS_INFO_THROTTLE_NAMED(rate, name, ...) ROS_LOG_THROTTLE(rate, ::r
__VA_ARGS__) os::console::levels::Info, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name
#define ROS_INFO_STREAM_THROTTLE_NAMED(rate, name, args) ROS_LOG_STREAM_THR , __VA_ARGS__)
OTTLE(rate, ros::console::levels::Info, std::string(ROSCONSOLE_NAME_PREFIX) #define ROS_INFO_STREAM_THROTTLE_NAMED(rate, name, args) ROS_LOG_STREAM_THR
+ "." + name, args) OTTLE(rate, ::ros::console::levels::Info, std::string(ROSCONSOLE_NAME_PREFI
#define ROS_INFO_FILTER(filter, ...) ROS_LOG_FILTER(filter, ros::console::l X) + "." + name, args)
evels::Info, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) #define ROS_INFO_FILTER(filter, ...) ROS_LOG_FILTER(filter, ::ros::console:
#define ROS_INFO_STREAM_FILTER(filter, args) ROS_LOG_STREAM_FILTER(filter, :levels::Info, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
ros::console::levels::Info, ROSCONSOLE_DEFAULT_NAME, args) #define ROS_INFO_STREAM_FILTER(filter, args) ROS_LOG_STREAM_FILTER(filter,
#define ROS_INFO_FILTER_NAMED(filter, name, ...) ROS_LOG_FILTER(filter, ros ::ros::console::levels::Info, ROSCONSOLE_DEFAULT_NAME, args)
::console::levels::Info, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, #define ROS_INFO_FILTER_NAMED(filter, name, ...) ROS_LOG_FILTER(filter, ::r
__VA_ARGS__) os::console::levels::Info, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name
#define ROS_INFO_STREAM_FILTER_NAMED(filter, name, args) ROS_LOG_STREAM_FIL , __VA_ARGS__)
TER(filter, ros::console::levels::Info, std::string(ROSCONSOLE_NAME_PREFIX) #define ROS_INFO_STREAM_FILTER_NAMED(filter, name, args) ROS_LOG_STREAM_FIL
+ "." + name, args) TER(filter, ::ros::console::levels::Info, std::string(ROSCONSOLE_NAME_PREFI
X) + "." + name, args)
#endif #endif
#if (ROSCONSOLE_MIN_SEVERITY > ROSCONSOLE_SEVERITY_WARN) #if (ROSCONSOLE_MIN_SEVERITY > ROSCONSOLE_SEVERITY_WARN)
#define ROS_WARN(...) #define ROS_WARN(...)
#define ROS_WARN_STREAM(args) #define ROS_WARN_STREAM(args)
#define ROS_WARN_NAMED(name, ...) #define ROS_WARN_NAMED(name, ...)
#define ROS_WARN_STREAM_NAMED(name, args) #define ROS_WARN_STREAM_NAMED(name, args)
#define ROS_WARN_COND(cond, ...) #define ROS_WARN_COND(cond, ...)
#define ROS_WARN_STREAM_COND(cond, args) #define ROS_WARN_STREAM_COND(cond, args)
#define ROS_WARN_COND_NAMED(cond, name, ...) #define ROS_WARN_COND_NAMED(cond, name, ...)
skipping to change at line 142 skipping to change at line 142
#define ROS_WARN_STREAM_ONCE_NAMED(name, args) #define ROS_WARN_STREAM_ONCE_NAMED(name, args)
#define ROS_WARN_THROTTLE(rate, ...) #define ROS_WARN_THROTTLE(rate, ...)
#define ROS_WARN_STREAM_THROTTLE(rate, args) #define ROS_WARN_STREAM_THROTTLE(rate, args)
#define ROS_WARN_THROTTLE_NAMED(rate, name, ...) #define ROS_WARN_THROTTLE_NAMED(rate, name, ...)
#define ROS_WARN_STREAM_THROTTLE_NAMED(rate, name, args) #define ROS_WARN_STREAM_THROTTLE_NAMED(rate, name, args)
#define ROS_WARN_FILTER(filter, ...) #define ROS_WARN_FILTER(filter, ...)
#define ROS_WARN_STREAM_FILTER(filter, args) #define ROS_WARN_STREAM_FILTER(filter, args)
#define ROS_WARN_FILTER_NAMED(filter, name, ...) #define ROS_WARN_FILTER_NAMED(filter, name, ...)
#define ROS_WARN_STREAM_FILTER_NAMED(filter, name, args) #define ROS_WARN_STREAM_FILTER_NAMED(filter, name, args)
#else #else
#define ROS_WARN(...) ROS_LOG(ros::console::levels::Warn, ROSCONSOLE_DEFAUL #define ROS_WARN(...) ROS_LOG(::ros::console::levels::Warn, ROSCONSOLE_DEFA
T_NAME, __VA_ARGS__) ULT_NAME, __VA_ARGS__)
#define ROS_WARN_STREAM(args) ROS_LOG_STREAM(ros::console::levels::Warn, RO #define ROS_WARN_STREAM(args) ROS_LOG_STREAM(::ros::console::levels::Warn,
SCONSOLE_DEFAULT_NAME, args) ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_WARN_NAMED(name, ...) ROS_LOG(ros::console::levels::Warn, std:: #define ROS_WARN_NAMED(name, ...) ROS_LOG(::ros::console::levels::Warn, std
string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__) ::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__)
#define ROS_WARN_STREAM_NAMED(name, args) ROS_LOG_STREAM(ros::console::leve #define ROS_WARN_STREAM_NAMED(name, args) ROS_LOG_STREAM(::ros::console::le
ls::Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, args) vels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, args)
#define ROS_WARN_COND(cond, ...) ROS_LOG_COND(cond, ros::console::levels::W #define ROS_WARN_COND(cond, ...) ROS_LOG_COND(cond, ::ros::console::levels:
arn, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) :Warn, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_WARN_STREAM_COND(cond, args) ROS_LOG_STREAM_COND(cond, ros::con #define ROS_WARN_STREAM_COND(cond, args) ROS_LOG_STREAM_COND(cond, ::ros::c
sole::levels::Warn, ROSCONSOLE_DEFAULT_NAME, args) onsole::levels::Warn, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_WARN_COND_NAMED(cond, name, ...) ROS_LOG_COND(cond, ros::consol #define ROS_WARN_COND_NAMED(cond, name, ...) ROS_LOG_COND(cond, ::ros::cons
e::levels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARG ole::levels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_A
S__) RGS__)
#define ROS_WARN_STREAM_COND_NAMED(cond, name, args) ROS_LOG_STREAM_COND(co #define ROS_WARN_STREAM_COND_NAMED(cond, name, args) ROS_LOG_STREAM_COND(co
nd, ros::console::levels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + nd, ::ros::console::levels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "."
name, args) + name, args)
#define ROS_WARN_ONCE(...) ROS_LOG_ONCE(ros::console::levels::Warn, ROSCONS #define ROS_WARN_ONCE(...) ROS_LOG_ONCE(::ros::console::levels::Warn, ROSCO
OLE_DEFAULT_NAME, __VA_ARGS__) NSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_WARN_STREAM_ONCE(args) ROS_LOG_STREAM_ONCE(ros::console::levels #define ROS_WARN_STREAM_ONCE(args) ROS_LOG_STREAM_ONCE(::ros::console::leve
::Warn, ROSCONSOLE_DEFAULT_NAME, args) ls::Warn, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_WARN_ONCE_NAMED(name, ...) ROS_LOG_ONCE(ros::console::levels::W #define ROS_WARN_ONCE_NAMED(name, ...) ROS_LOG_ONCE(::ros::console::levels:
arn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__) :Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__)
#define ROS_WARN_STREAM_ONCE_NAMED(name, args) ROS_LOG_STREAM_ONCE(ros::con #define ROS_WARN_STREAM_ONCE_NAMED(name, args) ROS_LOG_STREAM_ONCE(::ros::c
sole::levels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, args) onsole::levels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, arg
#define ROS_WARN_THROTTLE(rate, ...) ROS_LOG_THROTTLE(rate, ros::console::l s)
evels::Warn, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) #define ROS_WARN_THROTTLE(rate, ...) ROS_LOG_THROTTLE(rate, ::ros::console:
#define ROS_WARN_STREAM_THROTTLE(rate, args) ROS_LOG_STREAM_THROTTLE(rate, :levels::Warn, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
ros::console::levels::Warn, ROSCONSOLE_DEFAULT_NAME, args) #define ROS_WARN_STREAM_THROTTLE(rate, args) ROS_LOG_STREAM_THROTTLE(rate,
#define ROS_WARN_THROTTLE_NAMED(rate, name, ...) ROS_LOG_THROTTLE(rate, ros ::ros::console::levels::Warn, ROSCONSOLE_DEFAULT_NAME, args)
::console::levels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, #define ROS_WARN_THROTTLE_NAMED(rate, name, ...) ROS_LOG_THROTTLE(rate, ::r
__VA_ARGS__) os::console::levels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name
#define ROS_WARN_STREAM_THROTTLE_NAMED(rate, name, args) ROS_LOG_STREAM_THR , __VA_ARGS__)
OTTLE(rate, ros::console::levels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) #define ROS_WARN_STREAM_THROTTLE_NAMED(rate, name, args) ROS_LOG_STREAM_THR
+ "." + name, args) OTTLE(rate, ::ros::console::levels::Warn, std::string(ROSCONSOLE_NAME_PREFI
#define ROS_WARN_FILTER(filter, ...) ROS_LOG_FILTER(filter, ros::console::l X) + "." + name, args)
evels::Warn, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) #define ROS_WARN_FILTER(filter, ...) ROS_LOG_FILTER(filter, ::ros::console:
#define ROS_WARN_STREAM_FILTER(filter, args) ROS_LOG_STREAM_FILTER(filter, :levels::Warn, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
ros::console::levels::Warn, ROSCONSOLE_DEFAULT_NAME, args) #define ROS_WARN_STREAM_FILTER(filter, args) ROS_LOG_STREAM_FILTER(filter,
#define ROS_WARN_FILTER_NAMED(filter, name, ...) ROS_LOG_FILTER(filter, ros ::ros::console::levels::Warn, ROSCONSOLE_DEFAULT_NAME, args)
::console::levels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, #define ROS_WARN_FILTER_NAMED(filter, name, ...) ROS_LOG_FILTER(filter, ::r
__VA_ARGS__) os::console::levels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name
#define ROS_WARN_STREAM_FILTER_NAMED(filter, name, args) ROS_LOG_STREAM_FIL , __VA_ARGS__)
TER(filter, ros::console::levels::Warn, std::string(ROSCONSOLE_NAME_PREFIX) #define ROS_WARN_STREAM_FILTER_NAMED(filter, name, args) ROS_LOG_STREAM_FIL
+ "." + name, args) TER(filter, ::ros::console::levels::Warn, std::string(ROSCONSOLE_NAME_PREFI
X) + "." + name, args)
#endif #endif
#if (ROSCONSOLE_MIN_SEVERITY > ROSCONSOLE_SEVERITY_ERROR) #if (ROSCONSOLE_MIN_SEVERITY > ROSCONSOLE_SEVERITY_ERROR)
#define ROS_ERROR(...) #define ROS_ERROR(...)
#define ROS_ERROR_STREAM(args) #define ROS_ERROR_STREAM(args)
#define ROS_ERROR_NAMED(name, ...) #define ROS_ERROR_NAMED(name, ...)
#define ROS_ERROR_STREAM_NAMED(name, args) #define ROS_ERROR_STREAM_NAMED(name, args)
#define ROS_ERROR_COND(cond, ...) #define ROS_ERROR_COND(cond, ...)
#define ROS_ERROR_STREAM_COND(cond, args) #define ROS_ERROR_STREAM_COND(cond, args)
#define ROS_ERROR_COND_NAMED(cond, name, ...) #define ROS_ERROR_COND_NAMED(cond, name, ...)
skipping to change at line 186 skipping to change at line 186
#define ROS_ERROR_STREAM_ONCE_NAMED(name, args) #define ROS_ERROR_STREAM_ONCE_NAMED(name, args)
#define ROS_ERROR_THROTTLE(rate, ...) #define ROS_ERROR_THROTTLE(rate, ...)
#define ROS_ERROR_STREAM_THROTTLE(rate, args) #define ROS_ERROR_STREAM_THROTTLE(rate, args)
#define ROS_ERROR_THROTTLE_NAMED(rate, name, ...) #define ROS_ERROR_THROTTLE_NAMED(rate, name, ...)
#define ROS_ERROR_STREAM_THROTTLE_NAMED(rate, name, args) #define ROS_ERROR_STREAM_THROTTLE_NAMED(rate, name, args)
#define ROS_ERROR_FILTER(filter, ...) #define ROS_ERROR_FILTER(filter, ...)
#define ROS_ERROR_STREAM_FILTER(filter, args) #define ROS_ERROR_STREAM_FILTER(filter, args)
#define ROS_ERROR_FILTER_NAMED(filter, name, ...) #define ROS_ERROR_FILTER_NAMED(filter, name, ...)
#define ROS_ERROR_STREAM_FILTER_NAMED(filter, name, args) #define ROS_ERROR_STREAM_FILTER_NAMED(filter, name, args)
#else #else
#define ROS_ERROR(...) ROS_LOG(ros::console::levels::Error, ROSCONSOLE_DEFA #define ROS_ERROR(...) ROS_LOG(::ros::console::levels::Error, ROSCONSOLE_DE
ULT_NAME, __VA_ARGS__) FAULT_NAME, __VA_ARGS__)
#define ROS_ERROR_STREAM(args) ROS_LOG_STREAM(ros::console::levels::Error, #define ROS_ERROR_STREAM(args) ROS_LOG_STREAM(::ros::console::levels::Error
ROSCONSOLE_DEFAULT_NAME, args) , ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_ERROR_NAMED(name, ...) ROS_LOG(ros::console::levels::Error, std #define ROS_ERROR_NAMED(name, ...) ROS_LOG(::ros::console::levels::Error, s
::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__) td::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__)
#define ROS_ERROR_STREAM_NAMED(name, args) ROS_LOG_STREAM(ros::console::lev #define ROS_ERROR_STREAM_NAMED(name, args) ROS_LOG_STREAM(::ros::console::l
els::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, args) evels::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, args)
#define ROS_ERROR_COND(cond, ...) ROS_LOG_COND(cond, ros::console::levels:: #define ROS_ERROR_COND(cond, ...) ROS_LOG_COND(cond, ::ros::console::levels
Error, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) ::Error, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_ERROR_STREAM_COND(cond, args) ROS_LOG_STREAM_COND(cond, ros::co #define ROS_ERROR_STREAM_COND(cond, args) ROS_LOG_STREAM_COND(cond, ::ros::
nsole::levels::Error, ROSCONSOLE_DEFAULT_NAME, args) console::levels::Error, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_ERROR_COND_NAMED(cond, name, ...) ROS_LOG_COND(cond, ros::conso #define ROS_ERROR_COND_NAMED(cond, name, ...) ROS_LOG_COND(cond, ::ros::con
le::levels::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_A sole::levels::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA
RGS__) _ARGS__)
#define ROS_ERROR_STREAM_COND_NAMED(cond, name, args) ROS_LOG_STREAM_COND(c #define ROS_ERROR_STREAM_COND_NAMED(cond, name, args) ROS_LOG_STREAM_COND(c
ond, ros::console::levels::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." ond, ::ros::console::levels::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "
+ name, args) ." + name, args)
#define ROS_ERROR_ONCE(...) ROS_LOG_ONCE(ros::console::levels::Error, ROSCO #define ROS_ERROR_ONCE(...) ROS_LOG_ONCE(::ros::console::levels::Error, ROS
NSOLE_DEFAULT_NAME, __VA_ARGS__) CONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_ERROR_STREAM_ONCE(args) ROS_LOG_STREAM_ONCE(ros::console::level #define ROS_ERROR_STREAM_ONCE(args) ROS_LOG_STREAM_ONCE(::ros::console::lev
s::Error, ROSCONSOLE_DEFAULT_NAME, args) els::Error, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_ERROR_ONCE_NAMED(name, ...) ROS_LOG_ONCE(ros::console::levels:: #define ROS_ERROR_ONCE_NAMED(name, ...) ROS_LOG_ONCE(::ros::console::levels
Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__) ::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__)
#define ROS_ERROR_STREAM_ONCE_NAMED(name, args) ROS_LOG_STREAM_ONCE(ros::co #define ROS_ERROR_STREAM_ONCE_NAMED(name, args) ROS_LOG_STREAM_ONCE(::ros::
nsole::levels::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, arg console::levels::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, a
s) rgs)
#define ROS_ERROR_THROTTLE(rate, ...) ROS_LOG_THROTTLE(rate, ros::console:: #define ROS_ERROR_THROTTLE(rate, ...) ROS_LOG_THROTTLE(rate, ::ros::console
levels::Error, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) ::levels::Error, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_ERROR_STREAM_THROTTLE(rate, args) ROS_LOG_STREAM_THROTTLE(rate, #define ROS_ERROR_STREAM_THROTTLE(rate, args) ROS_LOG_STREAM_THROTTLE(rate,
ros::console::levels::Error, ROSCONSOLE_DEFAULT_NAME, args) ::ros::console::levels::Error, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_ERROR_THROTTLE_NAMED(rate, name, ...) ROS_LOG_THROTTLE(rate, ro #define ROS_ERROR_THROTTLE_NAMED(rate, name, ...) ROS_LOG_THROTTLE(rate, ::
s::console::levels::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name ros::console::levels::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." + na
, __VA_ARGS__) me, __VA_ARGS__)
#define ROS_ERROR_STREAM_THROTTLE_NAMED(rate, name, args) ROS_LOG_STREAM_TH #define ROS_ERROR_STREAM_THROTTLE_NAMED(rate, name, args) ROS_LOG_STREAM_TH
ROTTLE(rate, ros::console::levels::Error, std::string(ROSCONSOLE_NAME_PREFI ROTTLE(rate, ::ros::console::levels::Error, std::string(ROSCONSOLE_NAME_PRE
X) + "." + name, args) FIX) + "." + name, args)
#define ROS_ERROR_FILTER(filter, ...) ROS_LOG_FILTER(filter, ros::console:: #define ROS_ERROR_FILTER(filter, ...) ROS_LOG_FILTER(filter, ::ros::console
levels::Error, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) ::levels::Error, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_ERROR_STREAM_FILTER(filter, args) ROS_LOG_STREAM_FILTER(filter, #define ROS_ERROR_STREAM_FILTER(filter, args) ROS_LOG_STREAM_FILTER(filter,
ros::console::levels::Error, ROSCONSOLE_DEFAULT_NAME, args) ::ros::console::levels::Error, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_ERROR_FILTER_NAMED(filter, name, ...) ROS_LOG_FILTER(filter, ro #define ROS_ERROR_FILTER_NAMED(filter, name, ...) ROS_LOG_FILTER(filter, ::
s::console::levels::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name ros::console::levels::Error, std::string(ROSCONSOLE_NAME_PREFIX) + "." + na
, __VA_ARGS__) me, __VA_ARGS__)
#define ROS_ERROR_STREAM_FILTER_NAMED(filter, name, args) ROS_LOG_STREAM_FI #define ROS_ERROR_STREAM_FILTER_NAMED(filter, name, args) ROS_LOG_STREAM_FI
LTER(filter, ros::console::levels::Error, std::string(ROSCONSOLE_NAME_PREFI LTER(filter, ::ros::console::levels::Error, std::string(ROSCONSOLE_NAME_PRE
X) + "." + name, args) FIX) + "." + name, args)
#endif #endif
#if (ROSCONSOLE_MIN_SEVERITY > ROSCONSOLE_SEVERITY_FATAL) #if (ROSCONSOLE_MIN_SEVERITY > ROSCONSOLE_SEVERITY_FATAL)
#define ROS_FATAL(...) #define ROS_FATAL(...)
#define ROS_FATAL_STREAM(args) #define ROS_FATAL_STREAM(args)
#define ROS_FATAL_NAMED(name, ...) #define ROS_FATAL_NAMED(name, ...)
#define ROS_FATAL_STREAM_NAMED(name, args) #define ROS_FATAL_STREAM_NAMED(name, args)
#define ROS_FATAL_COND(cond, ...) #define ROS_FATAL_COND(cond, ...)
#define ROS_FATAL_STREAM_COND(cond, args) #define ROS_FATAL_STREAM_COND(cond, args)
#define ROS_FATAL_COND_NAMED(cond, name, ...) #define ROS_FATAL_COND_NAMED(cond, name, ...)
skipping to change at line 230 skipping to change at line 230
#define ROS_FATAL_STREAM_ONCE_NAMED(name, args) #define ROS_FATAL_STREAM_ONCE_NAMED(name, args)
#define ROS_FATAL_THROTTLE(rate, ...) #define ROS_FATAL_THROTTLE(rate, ...)
#define ROS_FATAL_STREAM_THROTTLE(rate, args) #define ROS_FATAL_STREAM_THROTTLE(rate, args)
#define ROS_FATAL_THROTTLE_NAMED(rate, name, ...) #define ROS_FATAL_THROTTLE_NAMED(rate, name, ...)
#define ROS_FATAL_STREAM_THROTTLE_NAMED(rate, name, args) #define ROS_FATAL_STREAM_THROTTLE_NAMED(rate, name, args)
#define ROS_FATAL_FILTER(filter, ...) #define ROS_FATAL_FILTER(filter, ...)
#define ROS_FATAL_STREAM_FILTER(filter, args) #define ROS_FATAL_STREAM_FILTER(filter, args)
#define ROS_FATAL_FILTER_NAMED(filter, name, ...) #define ROS_FATAL_FILTER_NAMED(filter, name, ...)
#define ROS_FATAL_STREAM_FILTER_NAMED(filter, name, args) #define ROS_FATAL_STREAM_FILTER_NAMED(filter, name, args)
#else #else
#define ROS_FATAL(...) ROS_LOG(ros::console::levels::Fatal, ROSCONSOLE_DEFA #define ROS_FATAL(...) ROS_LOG(::ros::console::levels::Fatal, ROSCONSOLE_DE
ULT_NAME, __VA_ARGS__) FAULT_NAME, __VA_ARGS__)
#define ROS_FATAL_STREAM(args) ROS_LOG_STREAM(ros::console::levels::Fatal, #define ROS_FATAL_STREAM(args) ROS_LOG_STREAM(::ros::console::levels::Fatal
ROSCONSOLE_DEFAULT_NAME, args) , ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_FATAL_NAMED(name, ...) ROS_LOG(ros::console::levels::Fatal, std #define ROS_FATAL_NAMED(name, ...) ROS_LOG(::ros::console::levels::Fatal, s
::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__) td::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__)
#define ROS_FATAL_STREAM_NAMED(name, args) ROS_LOG_STREAM(ros::console::lev #define ROS_FATAL_STREAM_NAMED(name, args) ROS_LOG_STREAM(::ros::console::l
els::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, args) evels::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, args)
#define ROS_FATAL_COND(cond, ...) ROS_LOG_COND(cond, ros::console::levels:: #define ROS_FATAL_COND(cond, ...) ROS_LOG_COND(cond, ::ros::console::levels
Fatal, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) ::Fatal, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_FATAL_STREAM_COND(cond, args) ROS_LOG_STREAM_COND(cond, ros::co #define ROS_FATAL_STREAM_COND(cond, args) ROS_LOG_STREAM_COND(cond, ::ros::
nsole::levels::Fatal, ROSCONSOLE_DEFAULT_NAME, args) console::levels::Fatal, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_FATAL_COND_NAMED(cond, name, ...) ROS_LOG_COND(cond, ros::conso #define ROS_FATAL_COND_NAMED(cond, name, ...) ROS_LOG_COND(cond, ::ros::con
le::levels::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_A sole::levels::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA
RGS__) _ARGS__)
#define ROS_FATAL_STREAM_COND_NAMED(cond, name, args) ROS_LOG_STREAM_COND(c #define ROS_FATAL_STREAM_COND_NAMED(cond, name, args) ROS_LOG_STREAM_COND(c
ond, ros::console::levels::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." ond, ::ros::console::levels::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "
+ name, args) ." + name, args)
#define ROS_FATAL_ONCE(...) ROS_LOG_ONCE(ros::console::levels::Fatal, ROSCO #define ROS_FATAL_ONCE(...) ROS_LOG_ONCE(::ros::console::levels::Fatal, ROS
NSOLE_DEFAULT_NAME, __VA_ARGS__) CONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_FATAL_STREAM_ONCE(args) ROS_LOG_STREAM_ONCE(ros::console::level #define ROS_FATAL_STREAM_ONCE(args) ROS_LOG_STREAM_ONCE(::ros::console::lev
s::Fatal, ROSCONSOLE_DEFAULT_NAME, args) els::Fatal, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_FATAL_ONCE_NAMED(name, ...) ROS_LOG_ONCE(ros::console::levels:: #define ROS_FATAL_ONCE_NAMED(name, ...) ROS_LOG_ONCE(::ros::console::levels
Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__) ::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, __VA_ARGS__)
#define ROS_FATAL_STREAM_ONCE_NAMED(name, args) ROS_LOG_STREAM_ONCE(ros::co #define ROS_FATAL_STREAM_ONCE_NAMED(name, args) ROS_LOG_STREAM_ONCE(::ros::
nsole::levels::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, arg console::levels::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name, a
s) rgs)
#define ROS_FATAL_THROTTLE(rate, ...) ROS_LOG_THROTTLE(rate, ros::console:: #define ROS_FATAL_THROTTLE(rate, ...) ROS_LOG_THROTTLE(rate, ::ros::console
levels::Fatal, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) ::levels::Fatal, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_FATAL_STREAM_THROTTLE(rate, args) ROS_LOG_STREAM_THROTTLE(rate, #define ROS_FATAL_STREAM_THROTTLE(rate, args) ROS_LOG_STREAM_THROTTLE(rate,
ros::console::levels::Fatal, ROSCONSOLE_DEFAULT_NAME, args) ::ros::console::levels::Fatal, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_FATAL_THROTTLE_NAMED(rate, name, ...) ROS_LOG_THROTTLE(rate, ro #define ROS_FATAL_THROTTLE_NAMED(rate, name, ...) ROS_LOG_THROTTLE(rate, ::
s::console::levels::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name ros::console::levels::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." + na
, __VA_ARGS__) me, __VA_ARGS__)
#define ROS_FATAL_STREAM_THROTTLE_NAMED(rate, name, args) ROS_LOG_STREAM_TH #define ROS_FATAL_STREAM_THROTTLE_NAMED(rate, name, args) ROS_LOG_STREAM_TH
ROTTLE(rate, ros::console::levels::Fatal, std::string(ROSCONSOLE_NAME_PREFI ROTTLE(rate, ::ros::console::levels::Fatal, std::string(ROSCONSOLE_NAME_PRE
X) + "." + name, args) FIX) + "." + name, args)
#define ROS_FATAL_FILTER(filter, ...) ROS_LOG_FILTER(filter, ros::console:: #define ROS_FATAL_FILTER(filter, ...) ROS_LOG_FILTER(filter, ::ros::console
levels::Fatal, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__) ::levels::Fatal, ROSCONSOLE_DEFAULT_NAME, __VA_ARGS__)
#define ROS_FATAL_STREAM_FILTER(filter, args) ROS_LOG_STREAM_FILTER(filter, #define ROS_FATAL_STREAM_FILTER(filter, args) ROS_LOG_STREAM_FILTER(filter,
ros::console::levels::Fatal, ROSCONSOLE_DEFAULT_NAME, args) ::ros::console::levels::Fatal, ROSCONSOLE_DEFAULT_NAME, args)
#define ROS_FATAL_FILTER_NAMED(filter, name, ...) ROS_LOG_FILTER(filter, ro #define ROS_FATAL_FILTER_NAMED(filter, name, ...) ROS_LOG_FILTER(filter, ::
s::console::levels::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." + name ros::console::levels::Fatal, std::string(ROSCONSOLE_NAME_PREFIX) + "." + na
, __VA_ARGS__) me, __VA_ARGS__)
#define ROS_FATAL_STREAM_FILTER_NAMED(filter, name, args) ROS_LOG_STREAM_FI #define ROS_FATAL_STREAM_FILTER_NAMED(filter, name, args) ROS_LOG_STREAM_FI
LTER(filter, ros::console::levels::Fatal, std::string(ROSCONSOLE_NAME_PREFI LTER(filter, ::ros::console::levels::Fatal, std::string(ROSCONSOLE_NAME_PRE
X) + "." + name, args) FIX) + "." + name, args)
#endif #endif
 End of changes. 5 change blocks. 
233 lines changed or deleted 235 lines changed or added


 message.h   message.h 
skipping to change at line 31 skipping to change at line 31
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T HE * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T HE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
#ifndef ROSCPP_MESSAGE_H #ifndef ROSCPP_MESSAGE_H
#define ROSCPP_MESSAGE_H #define ROSCPP_MESSAGE_H
#include "macros.h" #include "ros/macros.h"
#include "ros/assert.h" #include "ros/assert.h"
#include <string> #include <string>
#include <string.h> #include <string.h>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#include <boost/array.hpp> #include <boost/array.hpp>
#include <stdint.h> #include <stdint.h>
#define ROSCPP_MESSAGE_HAS_DEFINITION #define ROSCPP_MESSAGE_HAS_DEFINITION
namespace ros namespace ros
{ {
typedef std::map<std::string, std::string> M_string; typedef std::map<std::string, std::string> M_string;
/** /**
* \brief Base-class for all roscpp messages * \deprecated This base-class is deprecated in favor of a template-based s erialization and traits system
*/ */
class Message class Message
{ {
public: public:
typedef boost::shared_ptr<Message> Ptr; typedef boost::shared_ptr<Message> Ptr;
typedef boost::shared_ptr<Message const> ConstPtr; typedef boost::shared_ptr<Message const> ConstPtr;
Message() Message()
{ {
} }
virtual ~Message() virtual ~Message()
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 message_event.h   message_event.h 
skipping to change at line 50 skipping to change at line 50
#include <boost/type_traits/add_const.hpp> #include <boost/type_traits/add_const.hpp>
#include <boost/type_traits/remove_const.hpp> #include <boost/type_traits/remove_const.hpp>
#include <boost/utility/enable_if.hpp> #include <boost/utility/enable_if.hpp>
#include <boost/function.hpp> #include <boost/function.hpp>
#include <boost/make_shared.hpp> #include <boost/make_shared.hpp>
namespace ros namespace ros
{ {
template<typename M> template<typename M>
inline boost::shared_ptr<M> defaultMessageCreateFunction() struct DefaultMessageCreator
{ {
return boost::make_shared<M>(); boost::shared_ptr<M> operator()()
{
return boost::make_shared<M>();
}
};
template<typename M>
ROS_DEPRECATED inline boost::shared_ptr<M> defaultMessageCreateFunction()
{
return DefaultMessageCreator<M>()();
} }
/** /**
* \brief Event type for subscriptions, const ros::MessageEvent<M const>& c an be used in your callback instead of const boost::shared_ptr<M const>& * \brief Event type for subscriptions, const ros::MessageEvent<M const>& c an be used in your callback instead of const boost::shared_ptr<M const>&
* *
* Useful if you need to retrieve meta-data about the message, such as the full connection header, or the publisher's node name * Useful if you need to retrieve meta-data about the message, such as the full connection header, or the publisher's node name
*/ */
template<typename M> template<typename M>
class MessageEvent class MessageEvent
{ {
skipping to change at line 106 skipping to change at line 115
MessageEvent(const MessageEvent<void const>& rhs, const CreateFunction& c reate) MessageEvent(const MessageEvent<void const>& rhs, const CreateFunction& c reate)
{ {
init(boost::const_pointer_cast<Message>(boost::static_pointer_cast<Cons tMessage>(rhs.getMessage())), rhs.getConnectionHeaderPtr(), rhs.getReceiptT ime(), rhs.nonConstWillCopy(), create); init(boost::const_pointer_cast<Message>(boost::static_pointer_cast<Cons tMessage>(rhs.getMessage())), rhs.getConnectionHeaderPtr(), rhs.getReceiptT ime(), rhs.nonConstWillCopy(), create);
} }
/** /**
* \todo Make this explicit in ROS 2.0. Keep as auto-converting for now to maintain backwards compatibility in some places (message_filters) * \todo Make this explicit in ROS 2.0. Keep as auto-converting for now to maintain backwards compatibility in some places (message_filters)
*/ */
MessageEvent(const ConstMessagePtr& message) MessageEvent(const ConstMessagePtr& message)
{ {
init(message, getConnectionHeader(message.get()), ros::Time::now(), tru e, ros::defaultMessageCreateFunction<Message>); init(message, getConnectionHeader(message.get()), ros::Time::now(), tru e, ros::DefaultMessageCreator<Message>());
} }
MessageEvent(const ConstMessagePtr& message, const boost::shared_ptr<M_st ring>& connection_header, ros::Time receipt_time) MessageEvent(const ConstMessagePtr& message, const boost::shared_ptr<M_st ring>& connection_header, ros::Time receipt_time)
{ {
init(message, connection_header, receipt_time, true, ros::defaultMessag eCreateFunction<Message>); init(message, connection_header, receipt_time, true, ros::DefaultMessag eCreator<Message>());
} }
MessageEvent(const ConstMessagePtr& message, ros::Time receipt_time) MessageEvent(const ConstMessagePtr& message, ros::Time receipt_time)
{ {
init(message, getConnectionHeader(message.get()), receipt_time, true, r os::defaultMessageCreateFunction<Message>); init(message, getConnectionHeader(message.get()), receipt_time, true, r os::DefaultMessageCreator<Message>());
} }
MessageEvent(const ConstMessagePtr& message, const boost::shared_ptr<M_st ring>& connection_header, ros::Time receipt_time, bool nonconst_need_copy, const CreateFunction& create) MessageEvent(const ConstMessagePtr& message, const boost::shared_ptr<M_st ring>& connection_header, ros::Time receipt_time, bool nonconst_need_copy, const CreateFunction& create)
{ {
init(message, connection_header, receipt_time, nonconst_need_copy, crea te); init(message, connection_header, receipt_time, nonconst_need_copy, crea te);
} }
void init(const ConstMessagePtr& message, const boost::shared_ptr<M_strin g>& connection_header, ros::Time receipt_time, bool nonconst_need_copy, con st CreateFunction& create) void init(const ConstMessagePtr& message, const boost::shared_ptr<M_strin g>& connection_header, ros::Time receipt_time, bool nonconst_need_copy, con st CreateFunction& create)
{ {
message_ = message; message_ = message;
 End of changes. 5 change blocks. 
5 lines changed or deleted 14 lines changed or added


 message_traits.h   message_traits.h 
skipping to change at line 37 skipping to change at line 37
#ifndef ROSLIB_MESSAGE_TRAITS_H #ifndef ROSLIB_MESSAGE_TRAITS_H
#define ROSLIB_MESSAGE_TRAITS_H #define ROSLIB_MESSAGE_TRAITS_H
#include "message_forward.h" #include "message_forward.h"
#include <ros/time.h> #include <ros/time.h>
#include <string> #include <string>
#include <boost/utility/enable_if.hpp> #include <boost/utility/enable_if.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/type_traits/remove_reference.hpp>
namespace roslib namespace std_msgs
{ {
ROS_DECLARE_MESSAGE(Header); ROS_DECLARE_MESSAGE(Header);
} }
#define ROS_IMPLEMENT_SIMPLE_TOPIC_TRAITS(msg, md5sum, datatype, definition ) \ #define ROS_IMPLEMENT_SIMPLE_TOPIC_TRAITS(msg, md5sum, datatype, definition ) \
namespace ros \ namespace ros \
{ \ { \
namespace message_traits \ namespace message_traits \
{ \ { \
template<> struct MD5Sum<msg> \ template<> struct MD5Sum<msg> \
skipping to change at line 163 skipping to change at line 165
} }
}; };
/** /**
* \brief Header trait. In the default implementation pointer() * \brief Header trait. In the default implementation pointer()
* returns &m.header if HasHeader<M>::value is true, otherwise returns NULL * returns &m.header if HasHeader<M>::value is true, otherwise returns NULL
*/ */
template<typename M, typename Enable = void> template<typename M, typename Enable = void>
struct Header struct Header
{ {
static roslib::Header* pointer(M& m) { return 0; } static std_msgs::Header* pointer(M& m) { return 0; }
static roslib::Header const* pointer(const M& m) { return 0; } static std_msgs::Header const* pointer(const M& m) { return 0; }
}; };
template<typename M> template<typename M>
struct Header<M, typename boost::enable_if<HasHeader<M> >::type > struct Header<M, typename boost::enable_if<HasHeader<M> >::type >
{ {
static roslib::Header* pointer(M& m) { return &m.header; } static std_msgs::Header* pointer(M& m) { return &m.header; }
static roslib::Header const* pointer(const M& m) { return &m.header; } static std_msgs::Header const* pointer(const M& m) { return &m.header; }
}; };
/** /**
* \brief FrameId trait. In the default implementation pointer() * \brief FrameId trait. In the default implementation pointer()
* returns &m.header.frame_id if HasHeader<M>::value is true, otherwise ret urns NULL. value() * returns &m.header.frame_id if HasHeader<M>::value is true, otherwise ret urns NULL. value()
* does not exist, and causes a compile error * does not exist, and causes a compile error
*/ */
template<typename M, typename Enable = void> template<typename M, typename Enable = void>
struct FrameId struct FrameId
{ {
skipping to change at line 209 skipping to change at line 211
template<typename M, typename Enable = void> template<typename M, typename Enable = void>
struct TimeStamp struct TimeStamp
{ {
static ros::Time* pointer(M& m) { return 0; } static ros::Time* pointer(M& m) { return 0; }
static ros::Time const* pointer(const M& m) { return 0; } static ros::Time const* pointer(const M& m) { return 0; }
}; };
template<typename M> template<typename M>
struct TimeStamp<M, typename boost::enable_if<HasHeader<M> >::type > struct TimeStamp<M, typename boost::enable_if<HasHeader<M> >::type >
{ {
static ros::Time* pointer(M& m) { return &m.header.stamp; } static ros::Time* pointer(typename boost::remove_const<M>::type &m) { ret urn &m.header.stamp; }
static ros::Time const* pointer(const M& m) { return &m.header.stamp; } static ros::Time const* pointer(const M& m) { return &m.header.stamp; }
static ros::Time value(const M& m) { return m.header.stamp; } static ros::Time value(const M& m) { return m.header.stamp; }
}; };
/** /**
* \brief returns MD5Sum<M>::value(); * \brief returns MD5Sum<M>::value();
*/ */
template<typename M> template<typename M>
inline const char* md5sum() inline const char* md5sum()
{ {
return MD5Sum<M>::value(); return MD5Sum<typename boost::remove_reference<typename boost::remove_con st<M>::type>::type>::value();
} }
/** /**
* \brief returns DataType<M>::value(); * \brief returns DataType<M>::value();
*/ */
template<typename M> template<typename M>
inline const char* datatype() inline const char* datatype()
{ {
return DataType<M>::value(); return DataType<typename boost::remove_reference<typename boost::remove_c onst<M>::type>::type>::value();
} }
/** /**
* \brief returns Definition<M>::value(); * \brief returns Definition<M>::value();
*/ */
template<typename M> template<typename M>
inline const char* definition() inline const char* definition()
{ {
return Definition<M>::value(); return Definition<typename boost::remove_reference<typename boost::remove _const<M>::type>::type>::value();
} }
/** /**
* \brief returns MD5Sum<M>::value(m); * \brief returns MD5Sum<M>::value(m);
*/ */
template<typename M> template<typename M>
inline const char* md5sum(const M& m) inline const char* md5sum(const M& m)
{ {
return MD5Sum<M>::value(m); return MD5Sum<typename boost::remove_reference<typename boost::remove_con st<M>::type>::type>::value(m);
} }
/** /**
* \brief returns DataType<M>::value(m); * \brief returns DataType<M>::value(m);
*/ */
template<typename M> template<typename M>
inline const char* datatype(const M& m) inline const char* datatype(const M& m)
{ {
return DataType<M>::value(m); return DataType<typename boost::remove_reference<typename boost::remove_c onst<M>::type>::type>::value(m);
} }
/** /**
* \brief returns Definition<M>::value(m); * \brief returns Definition<M>::value(m);
*/ */
template<typename M> template<typename M>
inline const char* definition(const M& m) inline const char* definition(const M& m)
{ {
return Definition<M>::value(m); return Definition<typename boost::remove_reference<typename boost::remove _const<M>::type>::type>::value(m);
} }
/** /**
* \brief returns Header<M>::pointer(m); * \brief returns Header<M>::pointer(m);
*/ */
template<typename M> template<typename M>
inline roslib::Header* header(M& m) inline std_msgs::Header* header(M& m)
{ {
return Header<M>::pointer(m); return Header<typename boost::remove_reference<typename boost::remove_con st<M>::type>::type>::pointer(m);
} }
/** /**
* \brief returns Header<M>::pointer(m); * \brief returns Header<M>::pointer(m);
*/ */
template<typename M> template<typename M>
inline roslib::Header const* header(const M& m) inline std_msgs::Header const* header(const M& m)
{ {
return Header<M>::pointer(m); return Header<typename boost::remove_reference<typename boost::remove_con st<M>::type>::type>::pointer(m);
} }
/** /**
* \brief returns FrameId<M>::pointer(m); * \brief returns FrameId<M>::pointer(m);
*/ */
template<typename M> template<typename M>
inline std::string* frameId(M& m) inline std::string* frameId(M& m)
{ {
return FrameId<M>::pointer(m); return FrameId<typename boost::remove_reference<typename boost::remove_co nst<M>::type>::type>::pointer(m);
} }
/** /**
* \brief returns FrameId<M>::pointer(m); * \brief returns FrameId<M>::pointer(m);
*/ */
template<typename M> template<typename M>
inline std::string const* frameId(const M& m) inline std::string const* frameId(const M& m)
{ {
return FrameId<M>::pointer(m); return FrameId<typename boost::remove_reference<typename boost::remove_co nst<M>::type>::type>::pointer(m);
} }
/** /**
* \brief returns TimeStamp<M>::pointer(m); * \brief returns TimeStamp<M>::pointer(m);
*/ */
template<typename M> template<typename M>
inline ros::Time* timeStamp(M& m) inline ros::Time* timeStamp(M& m)
{ {
return TimeStamp<M>::pointer(m); return TimeStamp<typename boost::remove_reference<typename boost::remove_ const<M>::type>::type>::pointer(m);
} }
/** /**
* \brief returns TimeStamp<M>::pointer(m); * \brief returns TimeStamp<M>::pointer(m);
*/ */
template<typename M> template<typename M>
inline ros::Time const* timeStamp(const M& m) inline ros::Time const* timeStamp(const M& m)
{ {
return TimeStamp<M>::pointer(m); return TimeStamp<typename boost::remove_reference<typename boost::remove_ const<M>::type>::type>::pointer(m);
} }
/** /**
* \brief returns IsSimple<M>::value; * \brief returns IsSimple<M>::value;
*/ */
template<typename M> template<typename M>
inline bool isSimple() inline bool isSimple()
{ {
return IsSimple<M>::value; return IsSimple<typename boost::remove_reference<typename boost::remove_c onst<M>::type>::type>::value;
} }
/** /**
* \brief returns IsFixedSize<M>::value; * \brief returns IsFixedSize<M>::value;
*/ */
template<typename M> template<typename M>
inline bool isFixedSize() inline bool isFixedSize()
{ {
return IsFixedSize<M>::value; return IsFixedSize<typename boost::remove_reference<typename boost::remov e_const<M>::type>::type>::value;
} }
/** /**
* \brief returns HasHeader<M>::value; * \brief returns HasHeader<M>::value;
*/ */
template<typename M> template<typename M>
inline bool hasHeader() inline bool hasHeader()
{ {
return HasHeader<M>::value; return HasHeader<typename boost::remove_reference<typename boost::remove_ const<M>::type>::type>::value;
} }
} // namespace message_traits } // namespace message_traits
} // namespace ros } // namespace ros
#endif // ROSLIB_MESSAGE_TRAITS_H #endif // ROSLIB_MESSAGE_TRAITS_H
 End of changes. 22 change blocks. 
23 lines changed or deleted 25 lines changed or added


 names.h   names.h 
skipping to change at line 84 skipping to change at line 84
*/ */
std::string remap(const std::string& name); std::string remap(const std::string& name);
/** /**
* \brief Validate a name against the name spec * \brief Validate a name against the name spec
*/ */
bool validate(const std::string& name, std::string& error); bool validate(const std::string& name, std::string& error);
const M_string& getRemappings(); const M_string& getRemappings();
const M_string& getUnresolvedRemappings(); const M_string& getUnresolvedRemappings();
/**
* \brief Get the parent namespace of a name
* \param name The namespace of which to get the parent namespace.
* \throws InvalidNameException if the name passed is not a valid graph res
ource name
*/
std::string parentNamespace(const std::string& name);
} // namespace names } // namespace names
} // namespace ros } // namespace ros
#endif // ROSCPP_NAMES_H #endif // ROSCPP_NAMES_H
 End of changes. 1 change blocks. 
0 lines changed or deleted 8 lines changed or added


 publisher.h   publisher.h 
skipping to change at line 80 skipping to change at line 80
ROS_ASSERT_MSG(false, "Call to publish() on an invalid Publisher (top ic [%s])", impl_->topic_.c_str()); ROS_ASSERT_MSG(false, "Call to publish() on an invalid Publisher (top ic [%s])", impl_->topic_.c_str());
return; return;
} }
if (!impl_->isValid()) if (!impl_->isValid())
{ {
ROS_ASSERT_MSG(false, "Call to publish() on an invalid Publisher (top ic [%s])", impl_->topic_.c_str()); ROS_ASSERT_MSG(false, "Call to publish() on an invalid Publisher (top ic [%s])", impl_->topic_.c_str());
return; return;
} }
ROS_ASSERT_MSG(impl_->md5sum_ != "*" || impl_->md5sum_ == mt::md5sum<M>
(*message), "Trying to publish message of type [%s/%s] on a publisher with
type [%s/%s]",
impl_->datatype_.c_str(), impl_->md5sum_.c_str(), mt::da
tatype<M>(*message), mt::md5sum<M>(*message));
SerializedMessage m; SerializedMessage m;
m.type_info = &typeid(M); m.type_info = &typeid(M);
m.message = message; m.message = message;
publish(boost::bind(serializeMessage<M>, boost::ref(*message)), m); publish(boost::bind(serializeMessage<M>, boost::ref(*message)), m);
} }
/** /**
* \brief Publish a message on the topic associated with this Publisher. * \brief Publish a message on the topic associated with this Publisher.
*/ */
template<typename M> template<typename M>
void publish(const M& message) const void publish(const M& message) const
{ {
using namespace serialization; using namespace serialization;
namespace mt = ros::message_traits;
if (!impl_) if (!impl_)
{ {
ROS_ASSERT_MSG(false, "Call to publish() on an invalid Publisher (top ic [%s])", impl_->topic_.c_str()); ROS_ASSERT_MSG(false, "Call to publish() on an invalid Publisher (top ic [%s])", impl_->topic_.c_str());
return; return;
} }
if (!impl_->isValid()) if (!impl_->isValid())
{ {
ROS_ASSERT_MSG(false, "Call to publish() on an invalid Publisher (top ic [%s])", impl_->topic_.c_str()); ROS_ASSERT_MSG(false, "Call to publish() on an invalid Publisher (top ic [%s])", impl_->topic_.c_str());
return; return;
} }
ROS_ASSERT_MSG(impl_->md5sum_ != "*" || impl_->md5sum_ == mt::md5sum<M>
(message), "Trying to publish message of type [%s/%s] on a publisher with t
ype [%s/%s]",
impl_->datatype_.c_str(), impl_->md5sum_.c_str(), mt::da
tatype<M>(message), mt::md5sum<M>(message));
SerializedMessage m; SerializedMessage m;
publish(boost::bind(serializeMessage<M>, boost::ref(message)), m); publish(boost::bind(serializeMessage<M>, boost::ref(message)), m);
} }
/** /**
* \brief Shutdown the advertisement associated with this Publisher * \brief Shutdown the advertisement associated with this Publisher
* *
* This method usually does not need to be explicitly called, as automati c shutdown happens when * This method usually does not need to be explicitly called, as automati c shutdown happens when
* all copies of this Publisher go out of scope * all copies of this Publisher go out of scope
* *
skipping to change at line 156 skipping to change at line 163
{ {
return impl_ == rhs.impl_; return impl_ == rhs.impl_;
} }
bool operator!=(const Publisher& rhs) const bool operator!=(const Publisher& rhs) const
{ {
return impl_ != rhs.impl_; return impl_ != rhs.impl_;
} }
private: private:
Publisher(const std::string& topic, const NodeHandle& node_handle, const SubscriberCallbacksPtr& callbacks); Publisher(const std::string& topic, const std::string& md5sum, const std: :string& datatype, const NodeHandle& node_handle, const SubscriberCallbacks Ptr& callbacks);
void publish(const boost::function<SerializedMessage(void)>& serfunc, Ser ializedMessage& m) const; void publish(const boost::function<SerializedMessage(void)>& serfunc, Ser ializedMessage& m) const;
void incrementSequence() const; void incrementSequence() const;
class Impl class Impl
{ {
public: public:
Impl(); Impl();
~Impl(); ~Impl();
void unadvertise(); void unadvertise();
bool isValid() const; bool isValid() const;
std::string topic_; std::string topic_;
std::string md5sum_;
std::string datatype_;
NodeHandlePtr node_handle_; NodeHandlePtr node_handle_;
SubscriberCallbacksPtr callbacks_; SubscriberCallbacksPtr callbacks_;
bool unadvertised_; bool unadvertised_;
double constructed_; double constructed_;
}; };
typedef boost::shared_ptr<Impl> ImplPtr; typedef boost::shared_ptr<Impl> ImplPtr;
typedef boost::weak_ptr<Impl> ImplWPtr; typedef boost::weak_ptr<Impl> ImplWPtr;
ImplPtr impl_; ImplPtr impl_;
 End of changes. 5 change blocks. 
1 lines changed or deleted 16 lines changed or added


 rosout_appender.h   rosout_appender.h 
skipping to change at line 38 skipping to change at line 38
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
#ifndef ROSCPP_ROSOUT_APPENDER_H #ifndef ROSCPP_ROSOUT_APPENDER_H
#define ROSCPP_ROSOUT_APPENDER_H #define ROSCPP_ROSOUT_APPENDER_H
#include <ros/message_forward.h>
#include "log4cxx/appenderskeleton.h" #include "log4cxx/appenderskeleton.h"
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp> #include <boost/weak_ptr.hpp>
#include <roslib/Log.h>
#include <boost/thread.hpp> #include <boost/thread.hpp>
namespace rosgraph_msgs
{
ROS_DECLARE_MESSAGE(Log);
}
namespace ros namespace ros
{ {
class Publication; class Publication;
typedef boost::shared_ptr<Publication> PublicationPtr; typedef boost::shared_ptr<Publication> PublicationPtr;
typedef boost::weak_ptr<Publication> PublicationWPtr; typedef boost::weak_ptr<Publication> PublicationWPtr;
class ROSOutAppender : public log4cxx::AppenderSkeleton class ROSOutAppender : public log4cxx::AppenderSkeleton
{ {
public: public:
skipping to change at line 70 skipping to change at line 77
protected: protected:
virtual void append(const log4cxx::spi::LoggingEventPtr& event, log4cxx:: helpers::Pool& pool); virtual void append(const log4cxx::spi::LoggingEventPtr& event, log4cxx:: helpers::Pool& pool);
virtual void close() {} virtual void close() {}
virtual bool requiresLayout() const { return false; } virtual bool requiresLayout() const { return false; }
void logThread(); void logThread();
std::string last_error_; std::string last_error_;
typedef std::vector<roslib::LogPtr> V_Log; typedef std::vector<rosgraph_msgs::LogPtr> V_Log;
V_Log log_queue_; V_Log log_queue_;
boost::mutex queue_mutex_; boost::mutex queue_mutex_;
boost::condition_variable queue_condition_; boost::condition_variable queue_condition_;
bool shutting_down_; bool shutting_down_;
boost::thread publish_thread_; boost::thread publish_thread_;
}; };
LOG4CXX_PTR_DEF(ROSOutAppender); LOG4CXX_PTR_DEF(ROSOutAppender);
 End of changes. 5 change blocks. 
2 lines changed or deleted 9 lines changed or added


 rospack.h   rospack.h 
skipping to change at line 135 skipping to change at line 135
\subsection rospack rospack \subsection rospack rospack
%rospack is the command-line tool that provides package management services . %rospack is the command-line tool that provides package management services .
%rospack crawls the directory ROS_ROOT and the colon-separated directories %rospack crawls the directory ROS_ROOT and the colon-separated directories
in ROS_PACKAGE_PATH, determining a directory to be package if it contains a in ROS_PACKAGE_PATH, determining a directory to be package if it contains a
file called @b manifest.xml. file called @b manifest.xml.
*/ */
#if defined(WIN32)
#if defined(ROS_STATIC)
#define ROSPACK_EXPORT
#elif defined(rospack_EXPORTS)
#define ROSPACK_EXPORT __declspec(dllexport)
#else
#define ROSPACK_EXPORT __declspec(dllimport)
#endif
#else
#define ROSPACK_EXPORT
#endif
#include <string> #include <string>
#include <vector> #include <vector>
#include <list> #include <list>
#include "tinyxml-2.5.3/tinyxml.h" #include "tinyxml-2.5.3/tinyxml.h"
namespace rospack namespace rospack
{ {
class Package; class Package;
skipping to change at line 158 skipping to change at line 170
extern const char *fs_delim; extern const char *fs_delim;
Package *g_get_pkg(const std::string &name); Package *g_get_pkg(const std::string &name);
typedef std::vector<Package *> VecPkg; typedef std::vector<Package *> VecPkg;
typedef std::list<Package*> Acc; typedef std::list<Package*> Acc;
typedef std::list<Acc> AccList; typedef std::list<Acc> AccList;
/** /**
* The Package class contains information about a single package * The Package class contains information about a single package
*/ */
class Package class ROSPACK_EXPORT Package
{ {
public: public:
enum traversal_order_t { POSTORDER, PREORDER }; enum traversal_order_t { POSTORDER, PREORDER };
std::string name, path; std::string name, path;
// These will cause warnings on Windows when compiling the DLL because th
ey
// are static. They should more correctly be accessed via accessor functi
ons
// that are exported from the class, rather than directly, in order to
// "prevent data corruption." Since main.cpp is currently the only known
// client and it doesn't use them, I'm not caring about the warnings yet.
static std::vector<Package *> pkgs; static std::vector<Package *> pkgs;
static std::vector<Package *> deleted_pkgs; static std::vector<Package *> deleted_pkgs;
Package(std::string _path); Package(std::string _path);
static bool is_package(std::string path); static bool is_package(std::string path);
static bool is_no_subdirs(std::string path); static bool is_no_subdirs(std::string path);
const VecPkg &deps1(); const VecPkg &deps1();
const VecPkg &deps(traversal_order_t order, int depth=0); const VecPkg &deps(traversal_order_t order, int depth=0);
std::string manifest_path(); std::string manifest_path();
std::string flags(std::string lang, std::string attrib); std::string flags(std::string lang, std::string attrib);
skipping to change at line 207 skipping to change at line 224
bool has_parent(std::string pkg); bool has_parent(std::string pkg);
const std::vector<Package *> &direct_deps(bool missing_pkg_as_warning=fal se); const std::vector<Package *> &direct_deps(bool missing_pkg_as_warning=fal se);
std::string direct_flags(std::string lang, std::string attrib); std::string direct_flags(std::string lang, std::string attrib);
void load_manifest(); void load_manifest();
}; };
/** /**
* The ROSPack class contains information the entire package dependency * The ROSPack class contains information the entire package dependency
* tree. * tree.
*/ */
class ROSPack class ROSPACK_EXPORT ROSPack
{ {
public: public:
static const char* usage(); static const char* usage();
char *ros_root; char *ros_root;
ROSPack(); ROSPack();
~ROSPack(); ~ROSPack();
skipping to change at line 274 skipping to change at line 291
*/ */
int run(int argc, char **argv); int run(int argc, char **argv);
// Another form of run, which takes the arguments as a single string. // Another form of run, which takes the arguments as a single string.
// WARNING: this method does naive string-splitting on spaces. // WARNING: this method does naive string-splitting on spaces.
int run(const std::string& cmd); int run(const std::string& cmd);
// Get the accumulated output // Get the accumulated output
std::string getOutput() { return output_acc; } std::string getOutput() { return output_acc; }
// is -q (quiet) provided ?
bool is_quiet() { return opt_quiet; }
int cmd_print_package_list(bool print_path); int cmd_print_package_list(bool print_path);
int cmd_list_duplicates();
int cmd_print_langs_list(); int cmd_print_langs_list();
void crawl_for_packages(bool force_crawl = false); void crawl_for_packages(bool force_crawl = false);
VecPkg partial_crawl(const std::string &path); VecPkg partial_crawl(const std::string &path);
// Exposed for testing purposes only // Exposed for testing purposes only
std::string deduplicate_tokens(const std::string& s); std::string deduplicate_tokens(const std::string& s);
// Storage for --foo options // Storage for --foo options
// --deps-only // --deps-only
skipping to change at line 305 skipping to change at line 327
// The package name // The package name
std::string opt_package; std::string opt_package;
// --target= // --target=
std::string opt_target; std::string opt_target;
// the number of entries to list in the profile table // the number of entries to list in the profile table
int opt_profile_length; int opt_profile_length;
// only display zombie directories in profile? // only display zombie directories in profile?
bool opt_profile_zombie_only; bool opt_profile_zombie_only;
// display warnings about missing dependencies? // display warnings about missing dependencies?
bool opt_warn_on_missing_deps; bool opt_warn_on_missing_deps;
// display pairs of duplicate packages?
bool opt_display_duplicate_pkgs;
private: private:
// is quiet
bool opt_quiet;
bool cache_lock_failed; bool cache_lock_failed;
bool crawled; bool crawled;
std::string getCachePath(); std::string getCachePath();
// Storage for list of path components, used in add_package. We keep it
// here to avoid reallocation in every run of add_package.
std::vector<std::string> path_components;
// Add package, filtering out duplicates. // Add package, filtering out duplicates.
Package* add_package(std::string path); Package* add_package(std::string path);
/** tests if the cache exists, is new enough, and is valid */ /** tests if the cache exists, is new enough, and is valid */
bool cache_is_good(); bool cache_is_good();
/** returns a double representing the seconds since the Epoch */ /** returns a double representing the seconds since the Epoch */
static double time_since_epoch(); static double time_since_epoch();
/** remove trailing slashes */ /** remove trailing slashes */
void sanitize_rppvec(std::vector<std::string> &rppvec); void sanitize_rppvec(std::vector<std::string> &rppvec);
// Output accumulates here // Output accumulates here
std::string output_acc; std::string output_acc;
// A place to store heap-allocated argv, in case we were passed a // A place to store heap-allocated argv, in case we were passed a
// std::string in run(). It'll be freed on destruction. // std::string in run(). It'll be freed on destruction.
int my_argc; int my_argc;
char** my_argv; char** my_argv;
void freeArgv(); void freeArgv();
// Total number of packages found, including duplicates. Used in // Total number of packages found, including duplicates. Used in
// determining whether a directory is a zombie. // determining whether a directory is a zombie.
int total_num_pkgs; int total_num_pkgs;
// Were there any duplicate pkgs found in the crawl?
bool duplicate_packages_found;
}; };
} }
#endif #endif
 End of changes. 10 change blocks. 
2 lines changed or deleted 35 lines changed or added


 rosstack.h   rosstack.h 
skipping to change at line 43 skipping to change at line 43
/** /**
\mainpage \mainpage
\htmlinclude manifest.html \htmlinclude manifest.html
\section overview Overview \section overview Overview
\b %rosstack is a ROS dependency and distribution tool. The %rosstack pack age contains \b %rosstack is a ROS dependency and distribution tool. The %rosstack pack age contains
a single binary, called \b %rosstack. a single binary, called \b %rosstack.
*/ */
#if defined(WIN32)
#if defined(ROS_STATIC)
#define ROSSTACK_EXPORT
#elif defined(rosstack_EXPORTS)
#define ROSSTACK_EXPORT __declspec(dllexport)
#else
#define ROSSTACK_EXPORT __declspec(dllimport)
#endif
#else
#define ROSSTACK_EXPORT
#endif
#include <string> #include <string>
#include <vector> #include <vector>
#include "tinyxml-2.5.3/tinyxml.h" #include "tinyxml-2.5.3/tinyxml.h"
#include "rospack/rospack.h" #include "rospack/rospack.h"
namespace rosstack namespace rosstack
{ {
class Stack; class ROSSTACK_EXPORT Stack;
// global helper functions // global helper functions
void string_split(const std::string &s, std::vector<std::string> &t, const std::string &d); void string_split(const std::string &s, std::vector<std::string> &t, const std::string &d);
bool file_exists(const std::string &fname); bool file_exists(const std::string &fname);
extern const char *fs_delim; extern const char *fs_delim;
extern const char *path_delim;
Stack *g_get_stack(const std::string &name); Stack *g_get_stack(const std::string &name);
typedef std::vector<Stack *> VecStack; typedef std::vector<Stack *> VecStack;
/** /**
* The Stack class contains information about a single stack * The Stack class contains information about a single stack
*/ */
class Stack class ROSSTACK_EXPORT Stack
{ {
public: public:
enum traversal_order_t { POSTORDER, PREORDER }; enum traversal_order_t { POSTORDER, PREORDER };
std::string name, path; std::string name, path;
static std::vector<Stack *> stacks; static std::vector<Stack *> stacks;
Stack(std::string _path); Stack(std::string _path);
static bool is_stack(const std::string &path); static bool is_stack(const std::string &path);
static bool is_package(const std::string &path); static bool is_package(const std::string &path);
static bool is_no_subdirs(const std::string &path); static bool is_no_subdirs(const std::string &path);
skipping to change at line 98 skipping to change at line 111
bool has_parent(std::string stk); bool has_parent(std::string stk);
const VecStack &direct_deps(bool missing_pkg_as_warning=false); const VecStack &direct_deps(bool missing_pkg_as_warning=false);
void load_manifest(); void load_manifest();
}; };
/** /**
* The ROSStack class contains information the entire stack dependency * The ROSStack class contains information the entire stack dependency
* tree. * tree.
*/ */
class ROSStack class ROSSTACK_EXPORT ROSStack
{ {
public: public:
static const char* usage(); static const char* usage();
char *ros_root; char *ros_root;
rospack::ROSPack rp; rospack::ROSPack rp;
ROSStack(); ROSStack();
~ROSStack(); ~ROSStack();
Stack *get_stack(const std::string &name); Stack *get_stack(const std::string &name);
int cmd_depends_on(bool include_indirect); int cmd_depends_on(bool include_indirect);
 End of changes. 5 change blocks. 
3 lines changed or deleted 16 lines changed or added


 serialization.h   serialization.h 
skipping to change at line 31 skipping to change at line 31
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T HE * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T HE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
#ifndef ROSCPP_SERIALIZATION_H #ifndef ROSCPP_SERIALIZATION_H
#define ROSCPP_SERIALIZATION_H #define ROSCPP_SERIALIZATION_H
#include "types.h" #include <ros/types.h>
#include <ros/time.h>
#include "serialized_message.h" #include "serialized_message.h"
#include "message_traits.h" #include "ros/message_traits.h"
#include "builtin_message_traits.h" #include "ros/builtin_message_traits.h"
#include "time.h" #include "ros/exception.h"
#include "exception.h" #include "ros/macros.h"
#include "macros.h"
#include <vector> #include <vector>
#include <boost/array.hpp> #include <boost/array.hpp>
#include <boost/call_traits.hpp> #include <boost/call_traits.hpp>
#include <boost/utility/enable_if.hpp> #include <boost/utility/enable_if.hpp>
#include <boost/mpl/and.hpp> #include <boost/mpl/and.hpp>
#include <boost/mpl/or.hpp> #include <boost/mpl/or.hpp>
#include <boost/mpl/not.hpp> #include <boost/mpl/not.hpp>
#include <cstring>
#define ROS_NEW_SERIALIZATION_API 1 #define ROS_NEW_SERIALIZATION_API 1
/** /**
* \brief Declare your serializer to use an allInOne member instead of requ iring 3 different serialization * \brief Declare your serializer to use an allInOne member instead of requ iring 3 different serialization
* functions. * functions.
* *
* The allinone method has the form: * The allinone method has the form:
\verbatim \verbatim
template<typename Stream, typename T> template<typename Stream, typename T>
inline static void allInOne(Stream& stream, T t) inline static void allInOne(Stream& stream, T t)
 End of changes. 3 change blocks. 
6 lines changed or deleted 9 lines changed or added


 serialized_message.h   serialized_message.h 
skipping to change at line 31 skipping to change at line 31
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T HE * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T HE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
#ifndef ROSLIB_SERIALIZED_MESSAGE_H #ifndef ROSLIB_SERIALIZED_MESSAGE_H
#define ROSLIB_SERIALIZED_MESSAGE_H #define ROSLIB_SERIALIZED_MESSAGE_H
#include "types.h" #include "ros/types.h"
#include <boost/shared_array.hpp> #include <boost/shared_array.hpp>
#include <boost/shared_ptr.hpp> #include <boost/shared_ptr.hpp>
namespace ros namespace ros
{ {
class SerializedMessage class SerializedMessage
{ {
public: public:
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 service_callback_helper.h   service_callback_helper.h 
skipping to change at line 168 skipping to change at line 168
{ {
public: public:
typedef typename Spec::RequestType RequestType; typedef typename Spec::RequestType RequestType;
typedef typename Spec::ResponseType ResponseType; typedef typename Spec::ResponseType ResponseType;
typedef typename Spec::RequestPtr RequestPtr; typedef typename Spec::RequestPtr RequestPtr;
typedef typename Spec::ResponsePtr ResponsePtr; typedef typename Spec::ResponsePtr ResponsePtr;
typedef typename Spec::CallbackType Callback; typedef typename Spec::CallbackType Callback;
typedef boost::function<RequestPtr()> ReqCreateFunction; typedef boost::function<RequestPtr()> ReqCreateFunction;
typedef boost::function<ResponsePtr()> ResCreateFunction; typedef boost::function<ResponsePtr()> ResCreateFunction;
ServiceCallbackHelperT(const Callback& callback, const ReqCreateFunction& ServiceCallbackHelperT(const Callback& callback,
create_req = defaultServiceCreateFunction<RequestType>, const ResCreateFun const ReqCreateFunction& create_req =
ction& create_res = defaultServiceCreateFunction<ResponseType>) // these static casts are legally unnecessary, but
// here to keep clang 2.8 from getting confused
static_cast<RequestPtr(*)()>(defaultServiceCreateF
unction<RequestType>),
const ResCreateFunction& create_res =
static_cast<ResponsePtr(*)()>(defaultServiceCreate
Function<ResponseType>))
: callback_(callback) : callback_(callback)
, create_req_(create_req) , create_req_(create_req)
, create_res_(create_res) , create_res_(create_res)
{ {
} }
virtual bool call(ServiceCallbackHelperCallParams& params) virtual bool call(ServiceCallbackHelperCallParams& params)
{ {
namespace ser = serialization; namespace ser = serialization;
RequestPtr req(create_req_()); RequestPtr req(create_req_());
 End of changes. 1 change blocks. 
3 lines changed or deleted 9 lines changed or added


 service_traits.h   service_traits.h 
skipping to change at line 31 skipping to change at line 31
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T HE * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF T HE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*/ */
#ifndef ROSCPP_SERVICE_TRAITS_H #ifndef ROSCPP_SERVICE_TRAITS_H
#define ROSCPP_SERVICE_TRAITS_H #define ROSCPP_SERVICE_TRAITS_H
#include <boost/type_traits/remove_reference.hpp>
#include <boost/type_traits/remove_const.hpp>
namespace ros namespace ros
{ {
namespace service_traits namespace service_traits
{ {
/** /**
* \brief Specialize to provide the md5sum for a service * \brief Specialize to provide the md5sum for a service
*/ */
template<typename M> template<typename M>
struct MD5Sum struct MD5Sum
skipping to change at line 76 skipping to change at line 79
return m.__getServiceDataType().c_str(); return m.__getServiceDataType().c_str();
} }
}; };
/** /**
* \brief return MD5Sum<M>::value(); * \brief return MD5Sum<M>::value();
*/ */
template<typename M> template<typename M>
inline const char* md5sum() inline const char* md5sum()
{ {
return MD5Sum<M>::value(); return MD5Sum<typename boost::remove_reference<typename boost::remove_con st<M>::type>::type>::value();
} }
/** /**
* \brief return DataType<M>::value(); * \brief return DataType<M>::value();
*/ */
template<typename M> template<typename M>
inline const char* datatype() inline const char* datatype()
{ {
return DataType<M>::value(); return DataType<typename boost::remove_reference<typename boost::remove_c onst<M>::type>::type>::value();
} }
/** /**
* \brief return MD5Sum<M>::value(m); * \brief return MD5Sum<M>::value(m);
*/ */
template<typename M> template<typename M>
inline const char* md5sum(const M& m) inline const char* md5sum(const M& m)
{ {
return MD5Sum<M>::value(m); return MD5Sum<typename boost::remove_reference<typename boost::remove_con st<M>::type>::type>::value(m);
} }
/** /**
* \brief return DataType<M>::value(); * \brief return DataType<M>::value();
*/ */
template<typename M> template<typename M>
inline const char* datatype(const M& m) inline const char* datatype(const M& m)
{ {
return DataType<M>::value(m); return DataType<typename boost::remove_reference<typename boost::remove_c onst<M>::type>::type>::value(m);
} }
} // namespace message_traits } // namespace message_traits
} // namespace ros } // namespace ros
#endif // ROSCPP_SERVICE_TRAITS_H #endif // ROSCPP_SERVICE_TRAITS_H
 End of changes. 5 change blocks. 
4 lines changed or deleted 7 lines changed or added


 subscribe_options.h   subscribe_options.h 
skipping to change at line 83 skipping to change at line 83
* \brief Templated initialization, templated on callback parameter type. Supports any callback parameters supported by the SubscriptionCallbackAda pter * \brief Templated initialization, templated on callback parameter type. Supports any callback parameters supported by the SubscriptionCallbackAda pter
* \param _topic Topic to subscribe on * \param _topic Topic to subscribe on
* \param _queue_size Number of incoming messages to queue up for * \param _queue_size Number of incoming messages to queue up for
* processing (messages in excess of this queue capacity will be * processing (messages in excess of this queue capacity will be
* discarded). * discarded).
* \param _callback Callback to call when a message arrives on this topic * \param _callback Callback to call when a message arrives on this topic
*/ */
template<class P> template<class P>
void initByFullCallbackType(const std::string& _topic, uint32_t _queue_si ze, void initByFullCallbackType(const std::string& _topic, uint32_t _queue_si ze,
const boost::function<void (P)>& _callback, const boost::function<void (P)>& _callback,
const boost::function<boost::shared_ptr<typename ParameterAdapter<P> ::Message>(void)>& factory_fn = defaultMessageCreateFunction<typename Param eterAdapter<P>::Message>) const boost::function<boost::shared_ptr<typename ParameterAdapter<P> ::Message>(void)>& factory_fn = DefaultMessageCreator<typename ParameterAda pter<P>::Message>())
{ {
typedef typename ParameterAdapter<P>::Message MessageType; typedef typename ParameterAdapter<P>::Message MessageType;
topic = _topic; topic = _topic;
queue_size = _queue_size; queue_size = _queue_size;
md5sum = message_traits::md5sum<MessageType>(); md5sum = message_traits::md5sum<MessageType>();
datatype = message_traits::datatype<MessageType>(); datatype = message_traits::datatype<MessageType>();
helper = SubscriptionCallbackHelperPtr(new SubscriptionCallbackHelperT< P>(_callback, factory_fn)); helper = SubscriptionCallbackHelperPtr(new SubscriptionCallbackHelperT< P>(_callback, factory_fn));
} }
/** /**
* \brief Templated initialization, templated on message type. Only supp orts "const boost::shared_ptr<M const>&" callback types * \brief Templated initialization, templated on message type. Only supp orts "const boost::shared_ptr<M const>&" callback types
* \param _topic Topic to subscribe on * \param _topic Topic to subscribe on
* \param _queue_size Number of incoming messages to queue up for * \param _queue_size Number of incoming messages to queue up for
* processing (messages in excess of this queue capacity will be * processing (messages in excess of this queue capacity will be
* discarded). * discarded).
* \param _callback Callback to call when a message arrives on this topic * \param _callback Callback to call when a message arrives on this topic
*/ */
template<class M> template<class M>
void init(const std::string& _topic, uint32_t _queue_size, void init(const std::string& _topic, uint32_t _queue_size,
const boost::function<void (const boost::shared_ptr<M const>&)>& _ca llback, const boost::function<void (const boost::shared_ptr<M const>&)>& _ca llback,
const boost::function<boost::shared_ptr<M>(void)>& factory_fn = defa ultMessageCreateFunction<M>) const boost::function<boost::shared_ptr<M>(void)>& factory_fn = Defa ultMessageCreator<M>())
{ {
typedef typename ParameterAdapter<M>::Message MessageType; typedef typename ParameterAdapter<M>::Message MessageType;
topic = _topic; topic = _topic;
queue_size = _queue_size; queue_size = _queue_size;
md5sum = message_traits::md5sum<MessageType>(); md5sum = message_traits::md5sum<MessageType>();
datatype = message_traits::datatype<MessageType>(); datatype = message_traits::datatype<MessageType>();
helper = SubscriptionCallbackHelperPtr(new SubscriptionCallbackHelperT< const boost::shared_ptr<MessageType const>&>(_callback, factory_fn)); helper = SubscriptionCallbackHelperPtr(new SubscriptionCallbackHelperT< const boost::shared_ptr<MessageType const>&>(_callback, factory_fn));
} }
std::string topic; ///< To pic to subscribe to std::string topic; ///< To pic to subscribe to
 End of changes. 2 change blocks. 
2 lines changed or deleted 2 lines changed or added


 subscription_callback_helper.h   subscription_callback_helper.h 
skipping to change at line 135 skipping to change at line 135
typedef typename ParameterAdapter<P>::Event Event; typedef typename ParameterAdapter<P>::Event Event;
typedef typename boost::add_const<NonConstType>::type ConstType; typedef typename boost::add_const<NonConstType>::type ConstType;
typedef boost::shared_ptr<NonConstType> NonConstTypePtr; typedef boost::shared_ptr<NonConstType> NonConstTypePtr;
typedef boost::shared_ptr<ConstType> ConstTypePtr; typedef boost::shared_ptr<ConstType> ConstTypePtr;
static const bool is_const = ParameterAdapter<P>::is_const; static const bool is_const = ParameterAdapter<P>::is_const;
typedef boost::function<void(typename Adapter::Parameter)> Callback; typedef boost::function<void(typename Adapter::Parameter)> Callback;
typedef boost::function<NonConstTypePtr()> CreateFunction; typedef boost::function<NonConstTypePtr()> CreateFunction;
SubscriptionCallbackHelperT(const Callback& callback, const CreateFunctio n& create = defaultMessageCreateFunction<NonConstType>) SubscriptionCallbackHelperT(const Callback& callback, const CreateFunctio n& create = DefaultMessageCreator<NonConstType>())
: callback_(callback) : callback_(callback)
, create_(create) , create_(create)
{} {}
void setCreateFunction(const CreateFunction& create) void setCreateFunction(const CreateFunction& create)
{ {
create_ = create; create_ = create;
} }
virtual VoidConstPtr deserialize(const SubscriptionCallbackHelperDeserial izeParams& params) virtual VoidConstPtr deserialize(const SubscriptionCallbackHelperDeserial izeParams& params)
 End of changes. 1 change blocks. 
1 lines changed or deleted 1 lines changed or added


 time.h   time.h 
skipping to change at line 38 skipping to change at line 38
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE. * POSSIBILITY OF SUCH DAMAGE.
*********************************************************************/ *********************************************************************/
#ifndef ROS_TIME_H #ifndef ROS_TIME_H
#define ROS_TIME_H #define ROS_TIME_H
#include "duration.h" /*********************************************************************
#include "exception.h" ** Headers
*********************************************************************/
#include <iostream> #include <iostream>
#include <math.h> #include <cmath>
#include <ros/exception.h>
#include "duration.h"
//Ros types also needs to be moved out of roscpp... /*********************************************************************
//#include "ros/types.h" ** Cross Platform Headers
*********************************************************************/
#ifdef WIN32 #ifdef WIN32
#include <windows.h> #include <windows.h>
#include <sys/timeb.h>
#else
#include <sys/time.h>
#endif #endif
namespace ros namespace ros
{ {
/*********************************************************************
** Exceptions
*********************************************************************/
/**
* @brief Thrown if the ros subsystem hasn't been initialised before use.
*/
class TimeNotInitializedException : public Exception class TimeNotInitializedException : public Exception
{ {
public: public:
TimeNotInitializedException() TimeNotInitializedException()
: Exception("Cannot use ros::Time::now() before the first NodeHandle has been created or ros::start() has been called. " : Exception("Cannot use ros::Time::now() before the first NodeHand le has been created or ros::start() has been called. "
"If this is a standalone app or test that just uses ros::Time and does not communicate over ROS, you may also call ros::Time::init()") "If this is a standalone app or test that just uses ros::Time and does not communicate over ROS, you may also call ros::Time::init()")
{} {}
}; };
/**
* @brief Thrown if windoze high perf. timestamping is unavailable.
*
* @sa getWallTime
*/
class NoHighPerformanceTimersException : public Exception
{
public:
NoHighPerformanceTimersException()
: Exception("This windows platform does not "
"support the high-performance timing api.")
{}
};
/*********************************************************************
** Functions
*********************************************************************/
inline void normalizeSecNSec(uint64_t& sec, uint64_t& nsec) inline void normalizeSecNSec(uint64_t& sec, uint64_t& nsec)
{ {
uint64_t nsec_part = nsec % 1000000000UL; uint64_t nsec_part = nsec % 1000000000UL;
uint64_t sec_part = nsec / 1000000000UL; uint64_t sec_part = nsec / 1000000000UL;
if (sec_part > UINT_MAX) if (sec_part > UINT_MAX)
throw std::runtime_error("Time is out of dual 32-bit range"); throw std::runtime_error("Time is out of dual 32-bit range");
sec += sec_part; sec += sec_part;
nsec = nsec_part; nsec = nsec_part;
skipping to change at line 109 skipping to change at line 141
--sec_part; --sec_part;
} }
if (sec_part < 0 || sec_part > INT_MAX) if (sec_part < 0 || sec_part > INT_MAX)
throw std::runtime_error("Time is out of dual 32-bit range"); throw std::runtime_error("Time is out of dual 32-bit range");
sec = sec_part; sec = sec_part;
nsec = nsec_part; nsec = nsec_part;
} }
/*********************************************************************
** Time Classes
*********************************************************************/
/** /**
* \brief Base class for Time implementations. Provides storage, common fu nctions and operator overloads. * \brief Base class for Time implementations. Provides storage, common fu nctions and operator overloads.
* This should not need to be used directly. * This should not need to be used directly.
*/ */
template<class T, class D> template<class T, class D>
class TimeBase class TimeBase
{ {
public: public:
uint32_t sec, nsec; uint32_t sec, nsec;
skipping to change at line 181 skipping to change at line 217
/** /**
* \brief Sleep until a specific time has been reached. * \brief Sleep until a specific time has been reached.
*/ */
static bool sleepUntil(const Time& end); static bool sleepUntil(const Time& end);
static void init(); static void init();
static void shutdown(); static void shutdown();
static void setNow(const Time& new_now); static void setNow(const Time& new_now);
static bool useSystemTime(); static bool useSystemTime();
static bool isSimTime(); static bool isSimTime();
static bool isSystemTime();
/** /**
* \brief Returns whether or not the current time is valid. Time is vali d if it is non-zero. * \brief Returns whether or not the current time is valid. Time is vali d if it is non-zero.
*/ */
static bool isValid(); static bool isValid();
/** /**
* \brief Wait for time to become valid * \brief Wait for time to become valid
*/ */
static bool waitForValid(); static bool waitForValid();
/** /**
skipping to change at line 226 skipping to change at line 263
/** /**
* \brief Returns the current wall clock time. * \brief Returns the current wall clock time.
*/ */
static WallTime now(); static WallTime now();
/** /**
* \brief Sleep until a specific time has been reached. * \brief Sleep until a specific time has been reached.
*/ */
static bool sleepUntil(const WallTime& end); static bool sleepUntil(const WallTime& end);
static bool isSystemTime() { return true; }
}; };
std::ostream &operator <<(std::ostream &os, const Time &rhs); std::ostream &operator <<(std::ostream &os, const Time &rhs);
std::ostream &operator <<(std::ostream &os, const WallTime &rhs); std::ostream &operator <<(std::ostream &os, const WallTime &rhs);
template<class T, class D> template<class T, class D>
T& TimeBase<T, D>::fromNSec(uint64_t t) T& TimeBase<T, D>::fromNSec(uint64_t t)
{ {
sec = (int32_t)(t / 1000000000); sec = (int32_t)(t / 1000000000);
nsec = (int32_t)(t % 1000000000); nsec = (int32_t)(t % 1000000000);
 End of changes. 10 change blocks. 
7 lines changed or deleted 46 lines changed or added


 timer_manager.h   timer_manager.h 
skipping to change at line 218 skipping to change at line 218
TimerManager<T, D, E>::TimerManager() : TimerManager<T, D, E>::TimerManager() :
new_timer_(false), id_counter_(0), thread_started_(false), quit_(false) new_timer_(false), id_counter_(0), thread_started_(false), quit_(false)
{ {
} }
template<class T, class D, class E> template<class T, class D, class E>
TimerManager<T, D, E>::~TimerManager() TimerManager<T, D, E>::~TimerManager()
{ {
quit_ = true; quit_ = true;
{
boost::mutex::scoped_lock lock(timers_mutex_);
timers_cond_.notify_all();
}
if (thread_started_) if (thread_started_)
{ {
thread_.join(); thread_.join();
} }
} }
template<class T, class D, class E> template<class T, class D, class E>
bool TimerManager<T, D, E>::waitingCompare(int32_t lhs, int32_t rhs) bool TimerManager<T, D, E>::waitingCompare(int32_t lhs, int32_t rhs)
{ {
TimerInfoPtr infol = findTimer(lhs); TimerInfoPtr infol = findTimer(lhs);
skipping to change at line 312 skipping to change at line 316
{ {
boost::mutex::scoped_lock lock(timers_mutex_); boost::mutex::scoped_lock lock(timers_mutex_);
timers_.push_back(info); timers_.push_back(info);
if (!thread_started_) if (!thread_started_)
{ {
thread_ = boost::thread(boost::bind(&TimerManager::threadFunc, this)) ; thread_ = boost::thread(boost::bind(&TimerManager::threadFunc, this)) ;
thread_started_ = true; thread_started_ = true;
} }
}
{ {
boost::mutex::scoped_lock lock(waiting_mutex_); boost::mutex::scoped_lock lock(waiting_mutex_);
waiting_.push_back(info->handle); waiting_.push_back(info->handle);
waiting_.sort(boost::bind(&TimerManager::waitingCompare, this, _1, _2)) waiting_.sort(boost::bind(&TimerManager::waitingCompare, this, _1, _2
; ));
} }
new_timer_ = true; new_timer_ = true;
timers_cond_.notify_all(); timers_cond_.notify_all();
}
return info->handle; return info->handle;
} }
template<class T, class D, class E> template<class T, class D, class E>
void TimerManager<T, D, E>::remove(int32_t handle) void TimerManager<T, D, E>::remove(int32_t handle)
{ {
boost::mutex::scoped_lock lock(timers_mutex_); boost::mutex::scoped_lock lock(timers_mutex_);
typename V_TimerInfo::iterator it = timers_.begin(); typename V_TimerInfo::iterator it = timers_.begin();
skipping to change at line 372 skipping to change at line 376
if (info->removed) if (info->removed)
{ {
return; return;
} }
updateNext(info, T::now()); updateNext(info, T::now());
waiting_.push_back(info->handle); waiting_.push_back(info->handle);
waiting_.sort(boost::bind(&TimerManager::waitingCompare, this, _1, _2)) ; waiting_.sort(boost::bind(&TimerManager::waitingCompare, this, _1, _2)) ;
} }
new_timer_ = true; {
timers_cond_.notify_one(); boost::mutex::scoped_lock lock(timers_mutex_);
new_timer_ = true;
timers_cond_.notify_one();
}
} }
template<class T, class D, class E> template<class T, class D, class E>
void TimerManager<T, D, E>::updateNext(const TimerManager<T, D, E>::TimerIn foPtr& info, const T& current_time) void TimerManager<T, D, E>::updateNext(const TimerManager<T, D, E>::TimerIn foPtr& info, const T& current_time)
{ {
if (info->oneshot) if (info->oneshot)
{ {
info->next_expected = T(INT_MAX, 999999999); info->next_expected = T(INT_MAX, 999999999);
} }
else else
skipping to change at line 508 skipping to change at line 515
// detect backwards jumps in time // detect backwards jumps in time
if (T::now() < current) if (T::now() < current)
{ {
ROSCPP_LOG_DEBUG("Time jumped backwards, breaking out of sleep"); ROSCPP_LOG_DEBUG("Time jumped backwards, breaking out of sleep");
break; break;
} }
current = T::now(); current = T::now();
timers_cond_.timed_wait(lock, boost::posix_time::milliseconds(1)); if (current >= sleep_end)
{
break;
}
// If we're on simulation time we need to check now() against sleep_e
nd more often than on system time,
// since simulation time may be running faster than real time.
if (!T::isSystemTime())
{
timers_cond_.timed_wait(lock, boost::posix_time::milliseconds(1));
}
else
{
// On system time we can simply sleep for the rest of the wait time
, since anything else requiring processing will
// signal the condition variable
int32_t remaining_time = std::max((int32_t)((sleep_end - current).t
oSec() * 1000.0f), 1);
timers_cond_.timed_wait(lock, boost::posix_time::milliseconds(remai
ning_time));
}
} }
new_timer_ = false; new_timer_ = false;
} }
} }
} }
#endif #endif
 End of changes. 6 change blocks. 
12 lines changed or deleted 40 lines changed or added


 topic_manager.h   topic_manager.h 
skipping to change at line 45 skipping to change at line 45
#include "XmlRpcValue.h" #include "XmlRpcValue.h"
#include <boost/thread/mutex.hpp> #include <boost/thread/mutex.hpp>
#include <boost/thread/recursive_mutex.hpp> #include <boost/thread/recursive_mutex.hpp>
namespace ros namespace ros
{ {
class Message; class Message;
class SubscribeOptions; struct SubscribeOptions;
class AdvertiseOptions; struct AdvertiseOptions;
class TopicManager; class TopicManager;
typedef boost::shared_ptr<TopicManager> TopicManagerPtr; typedef boost::shared_ptr<TopicManager> TopicManagerPtr;
class PollManager; class PollManager;
typedef boost::shared_ptr<PollManager> PollManagerPtr; typedef boost::shared_ptr<PollManager> PollManagerPtr;
class XMLRPCManager; class XMLRPCManager;
typedef boost::shared_ptr<XMLRPCManager> XMLRPCManagerPtr; typedef boost::shared_ptr<XMLRPCManager> XMLRPCManagerPtr;
skipping to change at line 184 skipping to change at line 184
void getBusStats(XmlRpc::XmlRpcValue &stats); void getBusStats(XmlRpc::XmlRpcValue &stats);
/** @brief Compute the info for the node's connectivity /** @brief Compute the info for the node's connectivity
* *
* This is the implementation of the xml-rpc getBusInfo function; * This is the implementation of the xml-rpc getBusInfo function;
* it populates the XmlRpcValue object sent to it with various info * it populates the XmlRpcValue object sent to it with various info
* about the node's connectivity. * about the node's connectivity.
*/ */
void getBusInfo(XmlRpc::XmlRpcValue &info); void getBusInfo(XmlRpc::XmlRpcValue &info);
/** @brief Return the list of subcriptions for the node
*
* This is the implementation of the xml-rpc getSubscriptions
* function; it populates the XmlRpcValue object sent to it with the
* list of subscribed topics and their datatypes.
*/
void getSubscriptions(XmlRpc::XmlRpcValue &subscriptions);
/** @brief Return the list of advertised topics for the node
*
* This is the implementation of the xml-rpc getPublications
* function; it populates the XmlRpcValue object sent to it with the
* list of advertised topics and their datatypes.
*/
void getPublications(XmlRpc::XmlRpcValue &publications);
/** @brief Update local publisher lists. /** @brief Update local publisher lists.
* *
* Use this method to update address information for publishers on a * Use this method to update address information for publishers on a
* given topic. * given topic.
* *
* @param topic The topic of interest * @param topic The topic of interest
* @param pubs The list of publishers to update. * @param pubs The list of publishers to update.
* *
* @return true on success, false otherwise. * @return true on success, false otherwise.
*/ */
bool pubUpdate(const std::string &topic, const std::vector<std::string> & pubs); bool pubUpdate(const std::string &topic, const std::vector<std::string> & pubs);
void pubUpdateCallback(XmlRpc::XmlRpcValue& params, XmlRpc::XmlRpcValue& result); void pubUpdateCallback(XmlRpc::XmlRpcValue& params, XmlRpc::XmlRpcValue& result);
void requestTopicCallback(XmlRpc::XmlRpcValue& params, XmlRpc::XmlRpcValu e& result); void requestTopicCallback(XmlRpc::XmlRpcValue& params, XmlRpc::XmlRpcValu e& result);
void getBusStatsCallback(XmlRpc::XmlRpcValue& params, XmlRpc::XmlRpcValue & result); void getBusStatsCallback(XmlRpc::XmlRpcValue& params, XmlRpc::XmlRpcValue & result);
void getBusInfoCallback(XmlRpc::XmlRpcValue& params, XmlRpc::XmlRpcValue& result); void getBusInfoCallback(XmlRpc::XmlRpcValue& params, XmlRpc::XmlRpcValue& result);
void getSubscriptionsCallback(XmlRpc::XmlRpcValue& params, XmlRpc::XmlRpc
Value& result);
void getPublicationsCallback(XmlRpc::XmlRpcValue& params, XmlRpc::XmlRpcV
alue& result);
bool isShuttingDown() { return shutting_down_; } bool isShuttingDown() { return shutting_down_; }
boost::mutex subs_mutex_; boost::mutex subs_mutex_;
L_Subscription subscriptions_; L_Subscription subscriptions_;
boost::recursive_mutex advertised_topics_mutex_; boost::recursive_mutex advertised_topics_mutex_;
V_Publication advertised_topics_; V_Publication advertised_topics_;
std::list<std::string> advertised_topic_names_; std::list<std::string> advertised_topic_names_;
boost::mutex advertised_topic_names_mutex_; boost::mutex advertised_topic_names_mutex_;
 End of changes. 3 change blocks. 
2 lines changed or deleted 22 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/