Spicy
configuration.h
1 // Copyright (c) 2020-now by the Zeek Project. See LICENSE for details.
2 
3 #pragma once
4 
5 #include <cstddef>
6 #include <memory>
7 #include <optional>
8 #include <string>
9 
10 #include <hilti/rt/filesystem.h>
11 #include <hilti/rt/util.h>
12 
13 namespace hilti::rt {
14 
16 struct Configuration {
17  Configuration();
18 
20  size_t fiber_individual_stack_size = static_cast<size_t>(1 * 1024 * 1024);
21 
23  size_t fiber_shared_stack_size = static_cast<size_t>(1 * 1024 * 1024);
24 
26  size_t fiber_shared_stack_swap_size_min = static_cast<size_t>(10 * 1024);
27 
29  unsigned int fiber_cache_size = 200;
30 
38  size_t fiber_min_stack_size = static_cast<size_t>(20 * 1024);
39 
41  std::optional<hilti::rt::filesystem::path> debug_out;
42 
44  bool show_backtraces = false;
45 
47  bool abort_on_exceptions = false;
48 
50  bool report_resource_usage = false;
51 
57  bool enable_profiling = false;
58 
60  std::string debug_streams;
61 
63  std::optional<std::reference_wrapper<std::ostream>> cout;
64 };
65 
66 namespace configuration {
67 
68 namespace detail {
70 extern std::unique_ptr<hilti::rt::Configuration> __configuration;
71 
78 inline const Configuration& unsafeGet() {
79  assert(detail::__configuration);
80  return *detail::__configuration;
81 }
82 
83 } // namespace detail
84 
89 inline const Configuration& get() {
90  if ( ! detail::__configuration )
91  detail::__configuration = std::make_unique<hilti::rt::Configuration>();
92 
93  return *detail::__configuration;
94 }
95 
102 extern void set(Configuration cfg);
103 
104 } // namespace configuration
105 } // namespace hilti::rt
Definition: any.h:7
Definition: configuration.h:16
unsigned int fiber_cache_size
Definition: configuration.h:29
std::string debug_streams
Definition: configuration.h:60
size_t fiber_individual_stack_size
Definition: configuration.h:20
size_t fiber_min_stack_size
Definition: configuration.h:38
bool enable_profiling
Definition: configuration.h:57
bool report_resource_usage
Definition: configuration.h:50
std::optional< hilti::rt::filesystem::path > debug_out
Definition: configuration.h:41
bool abort_on_exceptions
Definition: configuration.h:47
std::optional< std::reference_wrapper< std::ostream > > cout
Definition: configuration.h:63
size_t fiber_shared_stack_swap_size_min
Definition: configuration.h:26
bool show_backtraces
Definition: configuration.h:44
size_t fiber_shared_stack_size
Definition: configuration.h:23