stmm-input-doc  0.17.0
Public Member Functions | List of all members
stmi::Capability::RegisterClass< T > Class Template Referencefinal

Template used to register capability classes. More...

Public Member Functions

 RegisterClass (const char *const &p0CapabilityClassId) noexcept
 Class registration constructor. More...
 
 ~RegisterClass () noexcept
 
const ClassgetCapabilityClass () noexcept
 Get the class of the registered type. More...
 

Detailed Description

template<class T>
class stmi::Capability::RegisterClass< T >

Template used to register capability classes.

In a subclass of Capability you want to register define (i.e. KeysCapability):

class KeysCapability : public Capability {
public:
  ...
  static const char* const s_sClassId;
  static const Capability::Class& getClass() { return s_oInstall.getCapabilityClass(); }
private:
  static RegisterClass<KeysCapability> s_oInstall;
  ...
}

with the instantiation

const char* const KeysCapability::s_sClassId = "KeysCapability";
// this instance registers the class!
Capability::RegisterClass<KeysCapability> KeysCapability::s_oInstall(s_sClassId);

Beware! No registered class should be subclass of another registered class!

Constructor & Destructor Documentation

◆ RegisterClass()

template<class T >
stmi::Capability::RegisterClass< T >::RegisterClass ( const char *const &  p0CapabilityClassId)
inlineexplicitnoexcept

Class registration constructor.

The class id must be a statically defined unique ascii string with length > 0.

Parameters
p0CapabilityClassIdThe class id. Can't be nullptr.

◆ ~RegisterClass()

template<class T >
stmi::Capability::RegisterClass< T >::~RegisterClass ( )
inlinenoexcept

Member Function Documentation

◆ getCapabilityClass()

template<class T >
const Class& stmi::Capability::RegisterClass< T >::getCapabilityClass ( )
inlinenoexcept

Get the class of the registered type.

Returns
A non-empty class.