WebCFace
2.9.0
Web-based Communication Framework & Dashboard-like UI
Loading...
Searching...
No Matches
webcface-config.h
Go to the documentation of this file.
1
#pragma once
2
3
#define WEBCFACE_STR(v) #v
4
#define WEBCFACE_DEFAULT_PORT 7530
5
#define WEBCFACE_DEFAULT_PORT_SI(port) WEBCFACE_STR(port)
6
#define WEBCFACE_DEFAULT_PORT_S WEBCFACE_DEFAULT_PORT_SI(WEBCFACE_DEFAULT_PORT)
7
#define WEBCFACE_SERVER_NAME "webcface"
8
#define WEBCFACE_VERSION_MAJOR 2
9
#define WEBCFACE_VERSION_MINOR 9
10
#define WEBCFACE_VERSION_REVISION 0
11
#define WEBCFACE_ABI_MAJOR 23
12
#define WEBCFACE_VERSION "2.9.0"
13
#define WEBCFACE_SHARED 1
14
#define WEBCFACE_SYSTEM_DLLEXPORT 0
15
#define WEBCFACE_SYSTEM_VISIBILITY 1
16
#define WEBCFACE_SYSTEM_WCHAR_WINDOWS 0
17
#define WEBCFACE_SYSTEM_WIN32SOCKET 0
18
#define WEBCFACE_SYSTEM_PATH_WINDOWS 0
19
#define WEBCFACE_SYSTEM_ADD_DEBUG 0
20
#define WEBCFACE_EXP_FILESYSTEM 0
21
#define WEBCFACE_PTR_SIZE 8
22
23
// clang-format off
24
/*
25
* 関数の宣言 (msvc, mingw, unix)
26
WEBCFACE_DLL return_type WEBCFACE_CALL func_name(args...);
27
* クラスの定義 (msvc, mingw, unix)
28
class WEBCFACE_DLL class_name {...};
29
* テンプレートクラスの定義 (unix)
30
template <...> class WEBCFACE_DLL_TEMPLATE class_name {...};
31
* テンプレートクラスの明示的実体化の宣言 (msvc_import, mingw) (unixでは消す:gcc-10でエラー)
32
extern template class WEBCFACE_DLL_INSTANCE_DECL class_name<...>;
33
* テンプレートクラスの明示的実体化の定義 (msvc_export, unix)
34
template class WEBCFACE_DLL_INSTANCE_DEF class_name<...>;
35
* テンプレートメンバ関数の明示的実体化の宣言
36
extern template return_type class_name::func_name<...>(args...);
37
* テンプレートメンバ関数の明示的実体化の定義
38
template WEBCFACE_DLL return_type class_name::func_name<...>(args...);
39
*/
40
// clang-format on
41
42
#if WEBCFACE_SHARED
43
#if WEBCFACE_SYSTEM_DLLEXPORT
44
#ifdef WEBCFACE_BUILDING
45
#ifdef _MSC_VER
46
#define WEBCFACE_DLL __declspec(dllexport)
47
#define WEBCFACE_DLL_TEMPLATE
48
#define WEBCFACE_DLL_INSTANCE_DECL
49
#define WEBCFACE_DLL_INSTANCE_DEF WEBCFACE_DLL
50
#else
// !_MSC_VER => on MinGW
51
#define WEBCFACE_DLL __declspec(dllexport)
52
#define WEBCFACE_DLL_TEMPLATE
53
#define WEBCFACE_DLL_INSTANCE_DECL WEBCFACE_DLL
54
#define WEBCFACE_DLL_INSTANCE_DEF
55
#endif
// _MSC_VER
56
#else
// !WEBCFACE_BUILDING
57
#define WEBCFACE_DLL __declspec(dllimport)
58
#define WEBCFACE_DLL_TEMPLATE
59
#define WEBCFACE_DLL_INSTANCE_DECL WEBCFACE_DLL
60
#define WEBCFACE_DLL_INSTANCE_DEF
61
#endif
// WEBCFACE_BUILDING
62
#elif WEBCFACE_SYSTEM_VISIBILITY
63
#ifdef WEBCFACE_BUILDING
64
#define WEBCFACE_DLL __attribute__((visibility("default"
)))
65
#define WEBCFACE_DLL_TEMPLATE WEBCFACE_DLL
66
#undef WEBCFACE_DLL_INSTANCE_DECL
67
#define WEBCFACE_DLL_INSTANCE_DEF WEBCFACE_DLL
68
#else
// !WEBCFACE_BUILDING
69
#define WEBCFACE_DLL
70
#define WEBCFACE_DLL_TEMPLATE
71
#undef WEBCFACE_DLL_INSTANCE_DECL
72
#define WEBCFACE_DLL_INSTANCE_DEF
73
#endif
// WEBCFACE_BUILDING
74
#else
// DLLEXPORT, VISIBILITY
75
// clang-format off
76
#error "neither WEBCFACE_SYSTEM_DLLEXPORT nor WEBCFACE_SYSTEM_VISIBILITY is defined"
77
// clang-format on
78
#endif
79
#else
// !WEBCFACE_SHARED
80
#define WEBCFACE_DLL
81
#define WEBCFACE_DLL_TEMPLATE
82
#define WEBCFACE_DLL_INSTANCE_DECL
83
#define WEBCFACE_DLL_INSTANCE_DEF
84
#endif
// WEBCFACE_SHARED
85
86
// clang-format off
87
/*
88
calling convention
89
* 通常の関数またはstaticメンバ関数(dllexportしているもの)につける。
90
* メンバ関数はthiscallなのでつけない
91
* std::function<>の中には要る(ただし型推論ができたりできなかったりする)
92
* ただしcygwinでstd::functionの中にcdecl宣言するとmanglingがおかしなことになった(なぜ?)ので、
93
std::function<>の中では WEBCFACE_CALL_FP をつける(cygwinで消える)
94
* 関数ポインタには要る (typedef return_type (WEBCFACE_CALL *name)(args...); )
95
96
*/
97
// clang-format on
98
#if WEBCFACE_SYSTEM_DLLEXPORT
99
#define WEBCFACE_CALL __cdecl
100
#ifdef __CYGWIN__
101
#define WEBCFACE_CALL_FP
102
#else
103
#define WEBCFACE_CALL_FP WEBCFACE_CALL
104
#endif
105
#else
// !DLLEXPORT
106
#define WEBCFACE_CALL
107
#define WEBCFACE_CALL_FP
108
#endif
109
110
// gccかどうかのチェック: webcfaceを使う側でも必要なので、コンパイル時にチェックする
111
#if defined(__GNUC__) && !defined(__clang__)
112
#define WEBCFACE_COMPILER_IS_GCC
113
#endif
114
115
// doxygenを生成するときは namespace webcface だけにする
116
#ifdef WEBCFACE_DOXYGEN
117
#define WEBCFACE_NS_BEGIN namespace webcface {
118
#define WEBCFACE_NS_END }
119
120
#else
121
// コンパイル時にnamespaceにabiバージョンを埋め込む
122
123
#if WEBCFACE_SYSTEM_ADD_DEBUG
124
#ifdef _DEBUG
125
#define WEBCFACE_NS_ABI_2(ver) v##ver##_debug
126
#endif
127
#endif
128
129
#ifndef WEBCFACE_NS_ABI_2
130
#define WEBCFACE_NS_ABI_2(ver) v##ver##_
131
#endif
132
133
#define WEBCFACE_NS_ABI(ver) WEBCFACE_NS_ABI_2(ver)
134
#define WEBCFACE_NS_BEGIN \
135
namespace webcface { \
136
inline namespace WEBCFACE_NS_ABI(WEBCFACE_ABI_MAJOR) {
137
#define WEBCFACE_NS_END \
138
} \
139
}
140
141
#endif
build
webcface-config.h
Generated on Sun Feb 9 2025 08:20:27 for WebCFace by
1.9.7