Published Objects Usage

Table of Contents

About

A published object is declared in a header file using the MAXON_DECLARATION attribute. It can be accessed and used in any source code file that includes this header file.

Usage

The following functions are automatically generated for the published object class:

  • GetId(): Returns the maxon::Id of the published object class.
  • GetInstance(): Returns a reference to the published object class instance. The returned type is maxon::Declaration.
  • IsInitialized(): Returns true if the published object is initialized.
  • GetReference(): Returns a reference to the published object.

A reference can also be obtained by using the function call operator "()".

// This example checks if the given published object is initialized.
// If so a reference to that published object is accessed.
// check if the published object "Carbon" is initialized
if (MAXON_UNLIKELY(Carbon.IsInitialized() == false))
return maxon::UnexpectedError(MAXON_SOURCE_LOCATION, "\"Carbon\" not initialized"_s);
// get reference to published object "Carbon"
const SimpleAtom& carbon = Carbon();
DiagnosticOutput("Atom: @, @, @", carbon._protonCnt, carbon._neutronCnt, carbon._electronCnt);
[published_objects_declaration]
Definition: example_declarations.h:23
maxon::Int _neutronCnt
number of neutrons
Definition: example_declarations.h:33
maxon::Int _electronCnt
number of electrons
Definition: example_declarations.h:34
maxon::Int _protonCnt
number of protons
Definition: example_declarations.h:30
#define DiagnosticOutput(formatString,...)
Definition: debugdiagnostics.h:176
#define MAXON_UNLIKELY(...)
Definition: compilerdetection.h:422
#define MAXON_SOURCE_LOCATION
Definition: memoryallocationbase.h:67

Further Reading