Global Initialization / Termination Mechanism. More...
#include "pluginterfaces/base/ftypes.h"
Data Structures | |
class | OneTimeProcedure |
Manager for initialization & termination code. More... | |
Namespaces | |
namespace | Steinberg |
Defines | |
#define | INIT_FUNCTION_NAME(name) init##name |
Get a classes initialization procedure name. | |
#define | INIT_FUNCTION(name) bool INIT_FUNCTION_NAME(name) () |
Use this to call an initialization procedure directly. | |
#define | TERM_FUNCTION_NAME(name) term##name |
Get a classes termination procedure name. | |
#define | TERM_FUNCTION(name) bool TERM_FUNCTION_NAME(name) () |
Use this to call a termination procedure directly. Be aware that this does not unregister the procedure. It will be executed again, if terminate () is called ! | |
#define | INITIALIZE(name) |
Use this to register any initialization code. | |
#define | INITIALIZE_LEVEL(name, level) |
Same as INITIALIZE(name), but utilizes initialization levels (see enum InitLevel). | |
#define | TERMINATE(name) |
Use this to register any termination. | |
#define | TERMINATE_LEVEL(name, level) |
Same as TERMINATE(name), but utilizes levels (see enum InitLevel). | |
#define | FRIEND_INITIALIZE(name) friend INIT_FUNCTION(name); |
#define | FRIEND_TERMINATE(name) friend TERM_FUNCTION(name); |
#define | PRE_INITIALIZE(name) INITIALIZE_LEVEL(name, kInitLevelFirst) |
#define | POST_INITIALIZE(name) INITIALIZE_LEVEL(name, kInitLevelLast) |
Typedefs | |
typedef bool(* | InitTermFunc )() |
Initialization / Termination procedure format. There must not be parameters. Return true to indicate execution success. An initialization procedure returning false causes immediate initialization abort. | |
Enumerations | |
enum | InitLevel { kInitLevelFirst = 0, kInitLevelBelowStd = 25, kInitLevelStd = 50, kInitLevelAboveStd = 75, kInitLevelLast = 100 } |
With init levels, you may initialize things in different places / at different program startup stages. More... |
Global Initialization / Termination Mechanism.
#define INIT_FUNCTION_NAME | ( | name | ) | init##name |
Get a classes initialization procedure name.
#define INIT_FUNCTION | ( | name | ) | bool INIT_FUNCTION_NAME(name) () |
Use this to call an initialization procedure directly.
Be aware that this does not unregister the procedure. It will be executed again, if terminate () is called !
#define TERM_FUNCTION_NAME | ( | name | ) | term##name |
Get a classes termination procedure name.
#define TERM_FUNCTION | ( | name | ) | bool TERM_FUNCTION_NAME(name) () |
Use this to call a termination procedure directly. Be aware that this does not unregister the procedure. It will be executed again, if terminate () is called !
#define INITIALIZE | ( | name | ) |
INIT_FUNCTION(name); \ ::Steinberg::OneTimeProcedure name##Initializer (true, INIT_FUNCTION_NAME(name), #name); \ INIT_FUNCTION(name)
Use this to register any initialization code.
The name parameter must be unique in the code (for example a class name). Example:
INITIALIZE (MyViewController) { globalViewControllerRegistry->registerViewController(MyViewController::ClassId); }
#define INITIALIZE_LEVEL | ( | name, | |||
level | ) |
INIT_FUNCTION(name); \ ::Steinberg::OneTimeProcedure name##Initializer (true, INIT_FUNCTION_NAME(name), #name, level); \ bool init##name ()
Same as INITIALIZE(name), but utilizes initialization levels (see enum InitLevel).
#define TERMINATE | ( | name | ) |
TERM_FUNCTION(name); \ ::Steinberg::OneTimeProcedure name##Terminator (false, TERM_FUNCTION_NAME(name), #name); \ TERM_FUNCTION(name)
Use this to register any termination.
The name parameter must be unique in the code. Example:
TERMINATE(MyViewController) { globalViewControllerRegistry->unregisterViewController(MyViewController::ClassId); }
#define TERMINATE_LEVEL | ( | name, | |||
level | ) |
TERM_FUNCTION(name); \ ::Steinberg::OneTimeProcedure name##Terminator (false, TERM_FUNCTION_NAME(name), #name, level); \ TERM_FUNCTION(name)
Same as TERMINATE(name), but utilizes levels (see enum InitLevel).
#define FRIEND_INITIALIZE | ( | name | ) | friend INIT_FUNCTION(name); |
#define FRIEND_TERMINATE | ( | name | ) | friend TERM_FUNCTION(name); |
#define PRE_INITIALIZE | ( | name | ) | INITIALIZE_LEVEL(name, kInitLevelFirst) |
#define POST_INITIALIZE | ( | name | ) | INITIALIZE_LEVEL(name, kInitLevelLast) |