From 6177e27f8dc1b7c5e7b97431f69822795dcae41c Mon Sep 17 00:00:00 2001 From: Pavel Kirienko Date: Wed, 9 Apr 2014 15:42:23 +0400 Subject: [PATCH] GDTR - Out of line methods --- .../uavcan/node/global_data_type_registry.hpp | 58 +++++++++++-------- 1 file changed, 33 insertions(+), 25 deletions(-) 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); +} + }