summaryrefslogtreecommitdiff
path: root/Runtime/Utilities/StaticInitiator.h
blob: bbcdbeebaca1a3c83842fd68dd34a2f59429a9d1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#pragma once

// 静态构造函数
#include "ThirdParty/StaticConstructor/include/StaticConstructor.h"

typedef void(*StaticFunc) ();

// 自动初始化静态数据
class StaticFuncInvoker
{
public:
	// Default Constructor:
	StaticFuncInvoker(StaticFunc func)
	{
		if (func)
			func();
	}
};

// 调用具名的static函数
#define InvokeStaticFunc(func)\
	static StaticFuncInvoker staticInvokerOf_##func(func);

// 用来初始化当前cpp里的静态变量
#define InitializeStaticVariables(lambda)\
	static StaticFuncInvoker staticInvoker(lambda);