diff --git a/libuavcan/include/uavcan/node/global_data_type_registry.hpp b/libuavcan/include/uavcan/node/global_data_type_registry.hpp index f208e5e1d4..ad6ef78ee6 100644 --- a/libuavcan/include/uavcan/node/global_data_type_registry.hpp +++ b/libuavcan/include/uavcan/node/global_data_type_registry.hpp @@ -72,31 +72,7 @@ public: /// Last call wins template - RegistResult regist(DataTypeID id) - { - if (isFrozen()) - { - return RegistResultFrozen; - } - - static Entry entry; - { - const RegistResult remove_res = remove(&entry); - if (remove_res != RegistResultOk) - { - return remove_res; - } - } - entry = Entry(DataTypeKind(Type::DataTypeKind), id, Type::getDataTypeSignature(), Type::getDataTypeFullName()); - { - const RegistResult remove_res = remove(&entry); - if (remove_res != RegistResultOk) - { - return remove_res; - } - } - return registImpl(&entry); - } + RegistResult regist(DataTypeID id); /// Further calls to regist<>() will fail void freeze(); @@ -147,4 +123,36 @@ struct UAVCAN_EXPORT DefaultDataTypeRegistrator } }; +// ---------------------------------------------------------------------------- + +/* + * GlobalDataTypeRegistry + */ +template +GlobalDataTypeRegistry::RegistResult GlobalDataTypeRegistry::regist(DataTypeID id) +{ + if (isFrozen()) + { + return RegistResultFrozen; + } + + static Entry entry; + { + const RegistResult remove_res = remove(&entry); + if (remove_res != RegistResultOk) + { + return remove_res; + } + } + entry = Entry(DataTypeKind(Type::DataTypeKind), id, Type::getDataTypeSignature(), Type::getDataTypeFullName()); + { + const RegistResult remove_res = remove(&entry); + if (remove_res != RegistResultOk) + { + return remove_res; + } + } + return registImpl(&entry); +} + }