13 inline ModuleDependency::ModuleDependency (
void (*start) (),
void (*end) ())
18 inline ModuleDependency::~ModuleDependency ()
28 template <
typename MODULE_DATA>
29 inline void ModuleInitializer<MODULE_DATA>::Start ()
31 if (sInitCnt_++ == 0) {
33 (void)
new (&sActualModuleInitializer_Storage_) MODULE_DATA ();
36 template <
typename MODULE_DATA>
37 void ModuleInitializer<MODULE_DATA>::End ()
39 if (--sInitCnt_ == 0) {
40 destroy_at (
reinterpret_cast<MODULE_DATA*
> (&sActualModuleInitializer_Storage_));
43 template <
typename MODULE_DATA>
44 inline ModuleInitializer<MODULE_DATA>::ModuleInitializer ()
48 template <
typename MODULE_DATA>
49 inline ModuleInitializer<MODULE_DATA>::~ModuleInitializer ()
53 template <
typename MODULE_DATA>
54 inline MODULE_DATA& ModuleInitializer<MODULE_DATA>::Actual ()
56 Assert (sInitCnt_ > 0);
57 return *
reinterpret_cast<MODULE_DATA*
> (&sActualModuleInitializer_Storage_);
59 template <
typename MODULE_DATA>
60 inline ModuleDependency ModuleInitializer<MODULE_DATA>::GetDependency ()
62 return ModuleDependency (Start, End);
64 template <
typename MODULE_DATA>
65 alignas (
alignof (MODULE_DATA))
byte ModuleInitializer<MODULE_DATA>::sActualModuleInitializer_Storage_[
sizeof (MODULE_DATA)];
CONTAINER::value_type * End(CONTAINER &c)
For a contiguous container (such as a vector or basic_string) - find the pointer to the end of the co...
CONTAINER::value_type * Start(CONTAINER &c)
For a contiguous container (such as a vector or basic_string) - find the pointer to the start of the ...