mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-05-18 06:37:36 +08:00
GDTR find() overload for name only
This commit is contained in:
@@ -126,6 +126,15 @@ public:
|
||||
|
||||
/**
|
||||
* Finds data type descriptor by full data type name, e.g. "uavcan.protocol.NodeStatus".
|
||||
* Messages are searched first, then services.
|
||||
* Returns null pointer if the data type with this name is not registered.
|
||||
* @param name Full data type name
|
||||
* @return Descriptor for this data type or null pointer if not found
|
||||
*/
|
||||
const DataTypeDescriptor* find(const char* name) const;
|
||||
|
||||
/**
|
||||
* Finds data type descriptor by full data type name, e.g. "uavcan.protocol.NodeStatus", and data type kind.
|
||||
* Returns null pointer if the data type with this name is not registered.
|
||||
* @param kind Data Type Kind - message or service
|
||||
* @param name Full data type name
|
||||
|
||||
@@ -141,6 +141,16 @@ void GlobalDataTypeRegistry::freeze()
|
||||
}
|
||||
}
|
||||
|
||||
const DataTypeDescriptor* GlobalDataTypeRegistry::find(const char* name) const
|
||||
{
|
||||
const DataTypeDescriptor* desc = find(DataTypeKindMessage, name);
|
||||
if (desc == NULL)
|
||||
{
|
||||
desc = find(DataTypeKindService, name);
|
||||
}
|
||||
return desc;
|
||||
}
|
||||
|
||||
const DataTypeDescriptor* GlobalDataTypeRegistry::find(DataTypeKind kind, const char* name) const
|
||||
{
|
||||
if (!name)
|
||||
|
||||
@@ -171,6 +171,7 @@ TEST(GlobalDataTypeRegistry, Basic)
|
||||
*/
|
||||
const uavcan::DataTypeDescriptor* pdtd = NULL;
|
||||
ASSERT_FALSE(GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage, "Nonexistent"));
|
||||
ASSERT_FALSE(GlobalDataTypeRegistry::instance().find("Nonexistent"));
|
||||
ASSERT_FALSE(GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage, 987));
|
||||
// Asking for service, but this is a message:
|
||||
ASSERT_FALSE(GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindService, "my_namespace.DataTypeB"));
|
||||
@@ -178,12 +179,14 @@ TEST(GlobalDataTypeRegistry, Basic)
|
||||
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage,
|
||||
"my_namespace.DataTypeB")));
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find("my_namespace.DataTypeB")));
|
||||
ASSERT_EQ(extractDescriptor<DataTypeB>(741), *pdtd);
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage, 741)));
|
||||
ASSERT_EQ(extractDescriptor<DataTypeB>(741), *pdtd);
|
||||
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage,
|
||||
"my_namespace.DataTypeA")));
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find("my_namespace.DataTypeA")));
|
||||
ASSERT_EQ(extractDescriptor<DataTypeAMessage>(), *pdtd);
|
||||
ASSERT_TRUE((pdtd = GlobalDataTypeRegistry::instance().find(uavcan::DataTypeKindMessage, uavcan::DataTypeID(0))));
|
||||
ASSERT_EQ(extractDescriptor<DataTypeAMessage>(), *pdtd);
|
||||
|
||||
Reference in New Issue
Block a user