Cppgres
Build Postgres extensions in C++
Loading...
Searching...
No Matches
guc.hpp
Go to the documentation of this file.
1
4#pragma once
5
6#include "guard.hpp"
7#include "imports.h"
8
9extern "C" {
10#include <utils/guc.h>
11}
12
13namespace cppgres {
14
22 const char *long_desc = nullptr;
23 ::GucContext context = PGC_USERSET;
24 int flags = 0;
25 ::GucBoolCheckHook check_hook = nullptr;
26 ::GucBoolAssignHook assign_hook = nullptr;
27 ::GucShowHook show_hook = nullptr;
28};
29
37 const char *long_desc = nullptr;
38 ::GucContext context = PGC_USERSET;
39 int flags = 0;
40 ::GucStringCheckHook check_hook = nullptr;
41 ::GucStringAssignHook assign_hook = nullptr;
42 ::GucShowHook show_hook = nullptr;
43};
44
52 const char *long_desc = nullptr;
53 ::GucContext context = PGC_USERSET;
54 int flags = 0;
55 ::GucEnumCheckHook check_hook = nullptr;
56 ::GucEnumAssignHook assign_hook = nullptr;
57 ::GucShowHook show_hook = nullptr;
58};
59
66inline void define_guc(const char *name, const char *short_desc, bool *var, bool default_value,
67 const guc_bool_options &opts = {}) {
68 ffi_guard{::DefineCustomBoolVariable}(name, short_desc, opts.long_desc, var, default_value,
69 opts.context, opts.flags, opts.check_hook,
70 opts.assign_hook, opts.show_hook);
71}
72
79inline void define_guc(const char *name, const char *short_desc, char **var,
80 const char *default_value, const guc_string_options &opts = {}) {
81 ffi_guard{::DefineCustomStringVariable}(name, short_desc, opts.long_desc, var, default_value,
82 opts.context, opts.flags, opts.check_hook,
83 opts.assign_hook, opts.show_hook);
84}
85
92inline void define_guc(const char *name, const char *short_desc, int *var, int default_value,
93 const ::config_enum_entry *entries, const guc_enum_options &opts = {}) {
94 ffi_guard{::DefineCustomEnumVariable}(name, short_desc, opts.long_desc, var, default_value,
95 entries, opts.context, opts.flags, opts.check_hook,
96 opts.assign_hook, opts.show_hook);
97}
98
109inline void reserve_guc_prefix(const char *prefix) {
110#if PG_MAJORVERSION_NUM >= 15
111 ffi_guard{::MarkGUCPrefixReserved}(prefix);
112#else
113 // Postgres 14 and older have no reservation; warning on mistyped
114 // placeholders is the closest equivalent.
115 ffi_guard{::EmitWarningsOnPlaceholders}(prefix);
116#endif
117}
118
119} // namespace cppgres
void reserve_guc_prefix(const char *prefix)
Reserve a GUC prefix for this extension (MarkGUCPrefixReserved)
Definition: guc.hpp:109
void define_guc(const char *name, const char *short_desc, bool *var, bool default_value, const guc_bool_options &opts={})
Define a custom boolean GUC (DefineCustomBoolVariable)
Definition: guc.hpp:66
Definition: guard.hpp:20
Optional settings for a boolean GUC definition.
Definition: guc.hpp:21
Optional settings for an enum GUC definition.
Definition: guc.hpp:51
Optional settings for a string GUC definition.
Definition: guc.hpp:36
Definition: name.hpp:7