36 if (
impl->dataTypesByIdentifier.empty()) {
37 addBuiltinDataType<bool>(
"bool");
38 addBuiltinDataType<double>(
"float64");
39 addBuiltinDataType<float>(
"float32");
40 addBuiltinDataType<int16_t>(
"int16");
41 addBuiltinDataType<int32_t>(
"int32");
42 addBuiltinDataType<int64_t>(
"int64");
43 addBuiltinDataType<int8_t>(
"int8");
44 addBuiltinDataType<uint16_t>(
"uint16");
45 addBuiltinDataType<uint32_t>(
"uint32");
46 addBuiltinDataType<uint64_t>(
"uint64");
47 addBuiltinDataType<uint8_t>(
"uint8");
49 addBuiltinDataType<uint8_t>(
"char");
50 addBuiltinDataType<int8_t>(
"byte");
52 addBuiltinDataType<ros::Duration>(
"duration");
53 addBuiltinDataType<std::string>(
"string");
54 addBuiltinDataType<ros::Time>(
"time");
72 boost::unordered_map<std::string, DataType>::const_iterator it =
73 impl->dataTypesByIdentifier.find(identifier);
75 if (it !=
impl->dataTypesByIdentifier.end())
78 std::string name, memberType;
83 boost::unordered_map<std::string, DataType>::const_iterator jt =
84 impl->dataTypesByIdentifier.find(memberType);
86 if (jt !=
impl->dataTypesByIdentifier.end())
94 boost::unordered_map<std::string, DataType>::const_iterator it =
95 impl->dataTypesByIdentifier.find(identifier);
97 if (it !=
impl->dataTypesByIdentifier.end())
104 boost::unordered_multimap<const std::type_info*, DataType, TypeInfoHash>::
105 const_iterator it =
impl->dataTypesByInfo.find(&typeInfo);
107 if (it !=
impl->dataTypesByInfo.end())
122 return arrayDataType;
132 return messageDataType;
136 identifier,
const std::string& definition) {
140 return messageDataType;
145 boost::unordered_map<std::string, DataType>::iterator it =
148 if (it ==
impl->dataTypesByIdentifier.end()) {
149 impl->dataTypesByIdentifier.insert(
153 impl->dataTypesByInfo.insert(
154 std::make_pair(&dataType.
getTypeInfo(), dataType));
156 else if (!it->second.hasTypeInfo() && dataType.
hasTypeInfo()) {
157 it->second = dataType;
159 impl->dataTypesByInfo.insert(
160 std::make_pair(&dataType.
getTypeInfo(), dataType));
171 boost::unordered_map<std::string, DataType>::iterator it =
174 if ((it !=
impl->dataTypesByIdentifier.end()) &&
175 (it->second.impl == dataType.
impl))
176 impl->dataTypesByIdentifier.erase(it);
179 typedef boost::unordered_multimap<
const std::type_info*,
DataType,
182 std::pair<Iterator, Iterator> range =
184 for (Iterator it = range.first; it != range.second; ++it) {
185 if (it->second.impl == dataType.
impl) {
186 impl->dataTypesByInfo.erase(it);
197 impl->dataTypesByIdentifier.clear();
198 impl->dataTypesByInfo.clear();
202 for (boost::unordered_map<std::string, DataType>::const_iterator
203 it =
impl->dataTypesByIdentifier.begin();
204 it !=
impl->dataTypesByIdentifier.end(); ++it) {
205 if (it !=
impl->dataTypesByIdentifier.begin())
207 stream << it->second;
229 dataTypeRegistry.
write(stream);
Header file providing the MessageDefinitionParser class interface.
Header file defining exceptions for the variant topic tools.
Header file providing the DataTypeRegistry class interface.