Template Struct RegisterMetadata

Struct Documentation

template<class MetadataDerived>
struct RegisterMetadata

Registrar class helper to add static from_buffer() function of the concrete derived metadata class to the registry.

digraph {
   subgraph cluster_SpecificMetadataClass {
       SpecificMetadataClass [
           label="class SpecificMetadataClass",
           shape="rectangle"];
       SpecificMetadataClassType [
           label="struct MetadataTraits<SpecificMetadataClass>",
           shape="rectangle"
       ];

       SpecificMetadataClass -> SpecificMetadataClassType;
   }

   MetadataEntryHelper [
       label="class MetadataEntryHelper",
       shape="rectangle"];
   MetadataTraits [
       label="struct MetadataTraits",
       shape="rectangle"];

   SpecificMetadataClass -> MetadataEntryHelper;
   SpecificMetadataClassType -> MetadataTraits;

   MetadataEntry [
       label="MetadataEntry",
       shape="rectangle"];
   MetadataEntryRef [
       label="MetadataEntryRef",
       shape="rectangle"];

   MetadataEntry -> MetadataEntryRef;

   subgraph cluster_RegisterMetadata {
       RegisterMetadata [
           label="RegisterMetadata",
           shape="rectangle"];
       RegisterMetadata_Decoder [
           label="RegisterMetadata::registered=register_type_decoder()",
           shape="rectangle"];
       RegisterMetadata->RegisterMetadata_Decoder;
   };

   MetadataEntryHelper -> MetadataEntry;
   MetadataEntryHelper -> RegisterMetadata;

   subgraph cluster_MetadataStore {
       MetadataStore [
           label="MetadataStore",
           shape="rectangle"];
       MetadataStore_Entries [
           label="MetadataStore::metadata_entries_",
           shape="rectangle"];
       MetadataStore->MetadataStore_Entries;
   };

   MetadataEntry -> MetadataStore_Entries;
}

Template Parameters:

MetadataDerived – The derived subclass cpp type.

Public Functions

inline virtual ~RegisterMetadata()

Public Static Functions

static inline bool register_type_decoder()

Register the specific derived class decoder into the global registrar.

Returns:

true If class has been registered successfully, false otherwise.

Public Static Attributes

static const bool REGISTERED = RegisterMetadata<MetadataDerived>::register_type_decoder()

If the derived class has been registered.

This line is incredibly IMPORTANT.

This will statically run the registration for all derived classes before the class constructer is run.

Template Parameters:

MetadataDerived – The derived subclass cpp type.