ros_message.hpp
Go to the documentation of this file.
1 /*********************************************************************
2 * Software License Agreement (BSD License)
3 *
4 * Copyright 2016-2017 Davide Faconti
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
10 *
11 * * Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * * Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
17 * * Neither the name of Willow Garage, Inc. nor the names of its
18 * contributors may be used to endorse or promote products derived
19 * from this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
24 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
25 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
26 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
27 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
28 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
29 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
31 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
32 * POSSIBILITY OF SUCH DAMAGE.
33 * *******************************************************************/
34 
35 #ifndef ROS_INTROSPECTION_ROSMESSAGE_H
36 #define ROS_INTROSPECTION_ROSMESSAGE_H
37 
40 
41 namespace RosIntrospection{
42 
43 
44 class ROSMessage{
45 public:
46 
49  ROSMessage(const std::string& msg_def );
50 
54  const ROSField& field(size_t index) const { return _fields[index]; }
55 
60  const std::vector<ROSField>& fields() const { return _fields; }
61 
62  const ROSType& type() const { return _type; }
63 
64  void mutateType(const ROSType& new_type ) { _type = new_type; }
65 
66  void updateMissingPkgNames(const std::vector<const ROSType *> &all_types);
67 
68 private:
69 
71  std::vector<ROSField> _fields;
72 };
73 
76 
79 
81 {
82  StringTree string_tree;
83  MessageTree message_tree;
84  std::vector<ROSMessage> type_list;
85 };
86 
87 //------------------------------------------------
88 
89 inline std::ostream& operator<<(std::ostream &os, const ROSMessage& msg )
90 {
91  os << msg.type();
92  return os;
93 }
94 
95 inline std::ostream& operator<<(std::ostream &os, const ROSMessage* msg )
96 {
97  os << msg->type();
98  return os;
99 }
100 
101 
102 }
103 
104 #endif
const std::vector< ROSField > & fields() const
Vector of fields.
Definition: ros_message.hpp:60
std::vector< ROSMessage > type_list
Definition: ros_message.hpp:84
Element of the tree. it has a single parent and N >= 0 children.
Definition: tree.hpp:54
std::ostream & operator<<(std::ostream &os, const BuiltinType &c)
details::TreeNode< const ROSMessage * > MessageTreeNode
Definition: ros_message.hpp:77
details::Tree< std::string > StringTree
Definition: ros_message.hpp:75
details::Tree< const ROSMessage * > MessageTree
Definition: ros_message.hpp:78
void mutateType(const ROSType &new_type)
Definition: ros_message.hpp:64
ROSMessage(const std::string &msg_def)
Definition: ros_message.cpp:45
details::TreeNode< std::string > StringTreeNode
Definition: ros_message.hpp:74
const ROSField & field(size_t index) const
Get field by index.
Definition: ros_message.hpp:54
const ROSType & type() const
Definition: ros_message.hpp:62
std::vector< ROSField > _fields
Definition: ros_message.hpp:71
A ROSMessage will contain one or more ROSField(s). Each field is little more than a name / type pair...
Definition: ros_field.hpp:52
void updateMissingPkgNames(const std::vector< const ROSType * > &all_types)
Definition: ros_message.cpp:73


ros_type_introspection
Author(s): Davide Faconti
autogenerated on Thu May 16 2019 02:39:09