36class BOOST_SYMBOL_VISIBLE
builder :
public builder_api,
public std::enable_shared_from_this< builder > {
38 builder(
void *mpi_communicator_p=NULL);
41 void add_section(std::string_view name, std::shared_ptr< builder_api > section);
44 void add_header_section(std::string_view application_name);
47 void add_host_section(int32_t subsections);
52 void add_app_data_section(std::shared_ptr< builder_api > app_data);
56 void add_model_data_section(std::shared_ptr< builder_api > model_data);
60 void add_code_section(std::string tag, std::shared_ptr< builder_api >
version, std::shared_ptr< builder_api > code_details);
63 void add_code_configuration_section(std::shared_ptr< builder_api > build_details);
66 void add_exit_data_section(
int return_code, std::string status, std::shared_ptr< builder_api > status_details);
68 void add_memory_usage_section();
74 void add_mpi_section(std::string_view name,
void *mpi_comm_p,
adc_mpi_field_flags bitflags);
76 void add_workflow_section();
77 void add_workflow_children(std::vector< std::string >& child_uuids);
79 void add_slurm_section();
80 void add_slurm_section(
const std::vector< std::string >& slurmvars);
82 void add_gitlab_ci_section();
85 std::shared_ptr< builder_api > get_section(std::string_view name);
86 std::vector< std::string > get_section_names();
87 std::vector< std::string > get_field_names();
88 const field get_value(std::string_view path);
89 const char *get_value_string(std::string_view path);
90 int64_t get_value_int64(std::string_view path);
91 uint64_t get_value_uint64(std::string_view path);
94 void add(std::string_view name,
bool value);
96 void add(std::string_view name,
char value);
98 void add(std::string_view name,
char16_t value);
100 void add(std::string_view name,
char32_t value);
103 void add(std::string_view name,
char* value);
104 void add(std::string_view name,
const char* value);
105 void add(std::string_view name, std::string& value);
106 void add(std::string_view name, std::string_view value);
109 void add_path(std::string_view name,
char* value);
110 void add_path(std::string_view name,
const char* value);
111 void add_path(std::string_view name, std::string& value);
112 void add_path(std::string_view name, std::string_view value);
115 void add_json_string(std::string_view name, std::string_view value);
117 void add_yaml_string(std::string_view name, std::string_view value);
119 void add_xml_string(std::string_view name, std::string_view value);
121 void add_number_string(std::string_view name, std::string_view value);
122#if ADC_BOOST_JSON_PUBLIC
124 void add(std::string_view name, boost::json::value value);
127 void add(std::string_view name, uint8_t value);
128 void add(std::string_view name, uint16_t value);
129 void add(std::string_view name, uint32_t value);
130 void add(std::string_view name, uint64_t value);
132 void add(std::string_view name, int8_t value);
133 void add(std::string_view name, int16_t value);
134 void add(std::string_view name, int32_t value);
135 void add(std::string_view name, int64_t value);
137 void add(std::string_view name,
float value);
138 void add(std::string_view name,
const std::complex<float>& value);
139 void add(std::string_view name,
double value);
140 void add(std::string_view name,
const std::complex<double>& value);
143 void add(std::string_view name,
const struct timeval& tv);
145 void add(std::string_view name,
const struct timespec& ts);
147 void add_epoch(std::string_view name, int64_t epoch);
150 void add_from_pointer_type(std::string_view name,
void*,
enum scalar_type t);
153 void add_array(std::string_view name,
bool value[],
size_t len, std::string_view c);
156 void add_array(std::string_view name,
const char *value,
size_t len, std::string_view c);
157 void add_array(std::string_view name,
char16_t value[],
size_t len, std::string_view c);
158 void add_array(std::string_view name,
char32_t value[],
size_t len, std::string_view c);
160 void add_array(std::string_view name, uint8_t value[],
size_t len, std::string_view c);
161 void add_array(std::string_view name, uint16_t value[],
size_t len, std::string_view c);
162 void add_array(std::string_view name, uint32_t value[],
size_t len, std::string_view c);
163 void add_array(std::string_view name, uint64_t value[],
size_t len, std::string_view c);
165 void add_array(std::string_view name, int8_t value[],
size_t len, std::string_view c);
166 void add_array(std::string_view name, int16_t value[],
size_t len, std::string_view c);
167 void add_array(std::string_view name, int32_t value[],
size_t len, std::string_view c);
168 void add_array(std::string_view name, int64_t value[],
size_t len, std::string_view c);
170 void add_array(std::string_view name,
float value[],
size_t len, std::string_view c);
172 void add_array(std::string_view name,
const std::complex<float> value[],
size_t len);
174 void add_array(std::string_view name,
double value[],
size_t len, std::string_view c);
176 void add_array(std::string_view name,
const std::complex<double> value[],
size_t len);
180 void add_array(std::string_view name,
char* value[],
size_t len, std::string_view c);
181 void add_array(std::string_view name,
const char* value[],
size_t len, std::string_view c);
182 void add_array(std::string_view name, std::string value[],
size_t len, std::string_view c);
183 void add_array(std::string_view name,
const std::string value[],
size_t len, std::string_view c);
184 void add_array(std::string_view name,
const std::vector<std::string> sv, std::string_view c);
185 void add_array(std::string_view name,
const std::set<std::string> sv, std::string_view container);
186 void add_array(std::string_view name,
const std::list<std::string> sv, std::string_view container);
189 void add_array_json_string(std::string_view name,
const std::string value[],
size_t len, std::string_view c);
191 std::string serialize();
195 boost::json::object d;
197 key_type kind(std::string_view name);
199 std::map< std::string, std::shared_ptr< builder > > sections;
201 boost::json::object flatten();
205 std::vector<std::string> get_host_env_vars();