GDTR - Out of line methods

This commit is contained in:
Pavel Kirienko
2014-04-09 15:42:23 +04:00
parent 311ae8dca1
commit 6177e27f8d
@@ -72,31 +72,7 @@ public:
/// Last call wins
template <typename Type>
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 <typename Type>
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);
}
}