This commit is contained in:
Pavel Kirienko 2014-04-10 15:05:55 +04:00
parent d0b541e22d
commit c26c320dd9
2 changed files with 9 additions and 2 deletions

View File

@ -60,6 +60,12 @@ private:
mutable List srvs_;
bool frozen_;
/**
* We can't use function local static variable for singleton because of code size issues:
* http://stackoverflow.com/questions/22985570
*/
static GlobalDataTypeRegistry singleton;
GlobalDataTypeRegistry() : frozen_(false) { }
List* selectList(DataTypeKind kind) const;

View File

@ -10,6 +10,8 @@
namespace uavcan
{
GlobalDataTypeRegistry GlobalDataTypeRegistry::singleton;
GlobalDataTypeRegistry::List* GlobalDataTypeRegistry::selectList(DataTypeKind kind) const
{
if (kind == DataTypeKindMessage)
@ -115,8 +117,7 @@ GlobalDataTypeRegistry::RegistResult GlobalDataTypeRegistry::registImpl(Entry* d
GlobalDataTypeRegistry& GlobalDataTypeRegistry::instance()
{
static GlobalDataTypeRegistry inst;
return inst;
return singleton;
}
void GlobalDataTypeRegistry::freeze()