libpromeki 1.0.0-alpha
PROfessional MEdia toolKIt
 
Loading...
Searching...
No Matches
libraryoptions.h
Go to the documentation of this file.
1
8#pragma once
9
10
11#include <promeki/config.h>
12#if PROMEKI_ENABLE_CORE
13#include <promeki/namespace.h>
15
16PROMEKI_NAMESPACE_BEGIN
17
49class LibraryOptions : public VariantDatabase<"LibraryOptions"> {
50 public:
52 using Base = VariantDatabase<"LibraryOptions">;
53
54 using Base::Base;
55
56 // ============================================================
57 // Crash handling
58 // ============================================================
59
61 PROMEKI_DECLARE_ID(CrashHandler, VariantSpec()
62 .setType(DataTypeBool)
63 .setDefault(true)
64 .setDescription("Install crash signal handlers."));
65
67 PROMEKI_DECLARE_ID(CoreDumps, VariantSpec()
68 .setType(DataTypeBool)
69 .setDefault(false)
70 .setDescription("Enable core dumps via RLIMIT_CORE."));
71
73 PROMEKI_DECLARE_ID(CrashLogDir, VariantSpec()
74 .setType(DataTypeString)
75 .setDefault(String())
76 .setDescription("Crash log directory (empty = system temp)."));
77
81 PROMEKI_DECLARE_ID(CaptureEnvironment,
82 VariantSpec()
83 .setType(DataTypeBool)
84 .setDefault(true)
85 .setDescription("Include environment variables in crash reports."));
86
87 // ============================================================
88 // Filesystem
89 // ============================================================
90
120 PROMEKI_DECLARE_ID(TempDir, VariantSpec()
121 .setType(DataTypeString)
122 .setDefault(String())
123 .setDescription("Override for Dir::temp() (empty = OS default)."));
124
163 PROMEKI_DECLARE_ID(IpcDir,
164 VariantSpec()
165 .setType(DataTypeString)
166 .setDefault(String())
167 .setDescription("Override for Dir::ipc() (empty = platform default)."));
168
169 // ============================================================
170 // Termination signal handling
171 // ============================================================
172
181 PROMEKI_DECLARE_ID(TerminationSignalHandler,
182 VariantSpec()
183 .setType(DataTypeBool)
184 .setDefault(true)
185 .setDescription("Install termination signal handlers (Ctrl-C/kill)."));
186
195 PROMEKI_DECLARE_ID(SignalDoubleTapExit,
196 VariantSpec()
197 .setType(DataTypeBool)
198 .setDefault(true)
199 .setDescription("Force-exit on second termination signal delivery."));
200
209 static LibraryOptions &instance();
210
221 void loadFromEnvironment();
222};
223
224PROMEKI_NAMESPACE_END
225
226#endif // PROMEKI_ENABLE_CORE