1#pragma once
 2
 3/*
 4 * Single basic include file.
 5 */
 6
 7#include <pw_types.h>
 8#include <pw_interfaces.h>
 9
10#include <pw_args.h>
11#include <pw_branch_optimization.h>
12#include <pw_dump.h>
13#include <pw_hash.h>
14#include <pw_helper_macros.h>
15#include <pw_status.h>
16
17#include <pw_array.h>
18#include <pw_datetime.h>
19#include <pw_iterator.h>
20#include <pw_map.h>
21#include <pw_string.h>
22#include <pw_utf.h>
23
24
25/*
26 * Miscellaneous helpers
27 */
28
29#define pw_get(result, container, ...) _pw_get((result), (container) __VA_OPT__(,) __VA_ARGS__, nullptr)
30bool _pw_get(PwValuePtr result, PwValuePtr container, ...);
31
32#define pw_set(value, container, ...) _pw_set((value), (container) __VA_OPT__(,) __VA_ARGS__, nullptr)
33bool _pw_set(PwValuePtr value, PwValuePtr container, ...);
34/*
35 * Get value from container object / set value.
36 * Variadic arguments are path to value and all must have char* type because
37 * there's no simple way to distinguish types of variadic args.
38 * For maps arguments are used as keys in UTF-8 encoding.
39 * For lists arguments are converted to integer index.
40 */
41
42bool pw_read_environment(PwValuePtr result);
43/*
44 * Return map containing environment variables.
45 */