44 new ImplV(identifier, constantMembers, variableMembers)));
48 std::string& definition) {
50 new ImplV(identifier, definition)));
60 BOOST_ASSERT(boost::dynamic_pointer_cast<Impl>(*
impl));
69 constantMembers(constantMembers),
70 variableMembers(variableMembers) {
71 for (
size_t i = 0; i < constantMembers.
getNumFields(); ++i)
72 if (!constantMembers[i].
isValid())
75 for (
size_t i = 0; i < variableMembers.
getNumFields(); ++i)
76 if (!variableMembers[i].
isValid())
82 BOOST_ASSERT(!definition.empty());
89 std::istringstream stream(definition);
92 while (std::getline(stream, line)) {
93 std::string memberName, memberType, memberValue;
97 std::string bareMemberType, memberPackage, plainMemberType;
98 bool isArrayMember =
false;
102 bareMemberType, memberSize))
103 isArrayMember =
true;
105 bareMemberType = memberType;
112 if (memberPackage.empty()) {
113 if (plainMemberType ==
"Header")
114 memberPackage =
"std_msgs";
116 memberPackage = package;
120 memberType = memberPackage+
"/"+plainMemberType+
"["+
121 boost::lexical_cast<std::string>(memberSize)+
"]";
123 memberType = memberPackage+
"/"+plainMemberType+
"[]";
126 memberType = memberPackage+
"/"+plainMemberType;
138 memberType, memberValue)) {
157 Impl(constantMembers, variableMembers),
158 identifier(identifier) {
159 std::ostringstream stream;
161 for (
size_t i = 0; i < constantMembers.
getNumFields(); ++i)
162 stream << constantMembers[i] <<
"\n";
164 for (
size_t i = 0; i < variableMembers.
getNumFields(); ++i)
165 stream << variableMembers[i] <<
"\n";
174 Impl(identifier, definition),
175 identifier(identifier),
176 definition(definition) {
191 return std::string(
"*");
304 return (boost::static_pointer_cast<Impl>(*impl)->variableMembers.
305 hasField(
"header") &&
306 (boost::static_pointer_cast<Impl>(*impl)->variableMembers[
"header"].
338 bool fixedSize =
true;
409 std::ostringstream stream;
410 stream << member <<
"\n";
421 std::ostringstream stream;
422 stream << member <<
"\n";
430 std::ostringstream stream;
443 DataType bareMemberType = memberType;
445 while (bareMemberType.
isArray()) {
452 variableMember.
getName() <<
"\n";
456 stream << messageMemberType.
getMD5Sum() <<
" " <<
457 variableMember.
getName() <<
"\n";
461 std::string md5SumText = stream.str();
462 if (!md5SumText.empty())
463 md5SumText.erase(md5SumText.size()-1);
477 BOOST_ASSERT(boost::dynamic_pointer_cast<MessageDataType::Impl>(*
impl));
Header file providing the MessageMember class interface.
Header file providing the MessageVariant class interface.
Header file providing the MessageDefinitionParser class interface.
Header file defining exceptions for the variant topic tools.
Header file providing the DataTypeRegistry class interface.
Header file providing the MessageDataType class interface.
Header file providing the MessageConstant class interface.
Header file providing the MessageTypeParser class interface.
Header file providing the MessageVariable class interface.