KDECore
Macros | |
#define | K_GLOBAL_STATIC(TYPE, NAME) K_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ()) |
#define | K_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ARGS) |
Detailed Description
Macro Definition Documentation
◆ K_GLOBAL_STATIC
#define K_GLOBAL_STATIC | ( | TYPE, | |
NAME | |||
) | K_GLOBAL_STATIC_WITH_ARGS(TYPE, NAME, ()) |
This macro makes it easy to use non-POD types as global statics.
The object is created on first use and creation is threadsafe.
The object is destructed on library unload or application exit. Be careful with calling other objects in the destructor of the class as you have to be sure that they (or objects they depend on) are not already destructed.
- Parameters
-
TYPE The type of the global static object. Do not add a *. NAME The name of the function to get a pointer to the global static object.
If you have code that might be called after the global object has been destroyed you can check for that using the isDestroyed() function.
If needed (If the destructor of the global object calls other functions that depend on other global statics (e.g. KConfig::sync) your destructor has to be called before those global statics are destroyed. A Qt post routine does that.) you can also install a post routine (qAddPostRoutine) to clean up the object using the destroy() method. If you registered a post routine and the object is destroyed because of a lib unload you have to call qRemovePostRoutine!
Example:
A common case for the need of deletion on lib unload/app shutdown are Singleton classes. Here's an example how to do it:
in the .cpp file:
Instead of the above you can use also the following pattern (ignore the name of the namespace):
in the .cpp file:
Now code that wants to call someFunction() doesn't have to do
anymore but instead:
◆ K_GLOBAL_STATIC_WITH_ARGS
#define K_GLOBAL_STATIC_WITH_ARGS | ( | TYPE, | |
NAME, | |||
ARGS | |||
) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. This is the same as K_GLOBAL_STATIC, but can take arguments that are passed to the object's constructor.
- Parameters
-
TYPE The type of the global static object. Do not add a *. NAME The name of the function to get a pointer to the global static object. ARGS the list of arguments, between brackets
Example:
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.