pals-cpp
PALS lattice parser.
 
Loading...
Searching...
No Matches
yaml_c_wrapper.h
Go to the documentation of this file.
1#ifndef YAML_C_WRAPPER_H
2#define YAML_C_WRAPPER_H
3
9#include <stdbool.h>
10#include <stddef.h>
11
12#ifdef _WIN32
13#define YAML_API __declspec(dllexport)
14#else
15#define YAML_API __attribute__((visibility("default")))
16#endif
17
18// --- CORE TYPES ---
19typedef void* YAMLTreeHandle;
20typedef size_t YAMLNodeId;
21
22// ryml uses (size_t)-1 to represent "not found" or "invalid"
23#define YAML_NULL_ID ((size_t)-1)
24
25// Pass as the index argument to add_* functions to append instead of inserting
26#define END ((size_t)-1)
27
28// struct lattices uses std::map so it must be C++ only
29#ifdef __cplusplus
30#include <map>
31struct lattices {
32 YAMLTreeHandle original; // Raw tree mapping each file (including includes)
33 // to its unparsed contents
34 YAMLTreeHandle included; // Tree with all "include" directives resolved and
35 // spliced inline
36 YAMLTreeHandle expanded; // Tree with the selected lattice fully expanded
37};
38extern "C" {
39#endif
40
59YAML_API struct lattices get_lattices(const char* filename,
60 const char* lattice_name);
61
62// --- PARSING & MEMORY ---
63
74YAML_API YAMLTreeHandle parse_file(const char* filename);
75
85YAML_API YAMLTreeHandle parse_string(const char* yaml_str);
86
97YAML_API YAMLTreeHandle create_empty_tree();
98
106YAML_API void delete_tree(YAMLTreeHandle tree);
107
119YAML_API void remove_node(YAMLTreeHandle tree, YAMLNodeId parent,
120 YAMLNodeId child);
121
122// --- TRAVERSAL ---
123
130YAML_API YAMLNodeId get_root(YAMLTreeHandle tree);
131
139YAML_API YAMLNodeId get_parent(YAMLTreeHandle tree, YAMLNodeId node);
140
150YAML_API YAMLNodeId get_child_by_key(YAMLTreeHandle tree, YAMLNodeId parent,
151 const char* key);
152
162YAML_API YAMLNodeId get_child_by_index(YAMLTreeHandle tree, YAMLNodeId parent,
163 size_t index);
164
172YAML_API size_t get_size(YAMLTreeHandle tree, YAMLNodeId node);
173
183YAML_API char* get_node_key(YAMLTreeHandle tree, YAMLNodeId node);
184
185// --- TYPE CHECKS ---
186
195YAML_API bool is_map(YAMLTreeHandle tree, YAMLNodeId node);
196
205YAML_API bool is_sequence(YAMLTreeHandle tree, YAMLNodeId node);
206
215YAML_API bool is_scalar(YAMLTreeHandle tree, YAMLNodeId node);
216
217// --- READING VALUES ---
218
229YAML_API char* as_string(YAMLTreeHandle tree, YAMLNodeId node);
230
231// --- MODIFICATION ---
232
243YAML_API YAMLNodeId add_scalar(YAMLTreeHandle tree, YAMLNodeId parent,
244 const char* key, const char* value,
245 size_t index);
246
257YAML_API YAMLNodeId add_map(YAMLTreeHandle tree, YAMLNodeId parent,
258 const char* key, size_t index);
259
271YAML_API YAMLNodeId add_sequence(YAMLTreeHandle tree, YAMLNodeId parent,
272 const char* key, size_t index);
273
283YAML_API void set_scalar(YAMLTreeHandle tree, YAMLNodeId node,
284 const char* value);
285
295YAML_API void set_node_key(YAMLTreeHandle tree, YAMLNodeId node,
296 const char* key);
297
313YAML_API void deep_copy_node(YAMLTreeHandle dst_tree, YAMLNodeId dst_node,
314 YAMLTreeHandle src_tree, YAMLNodeId src_node);
315
334YAML_API void deep_copy_children(YAMLTreeHandle dst_tree, YAMLNodeId dst_node,
335 YAMLTreeHandle src_tree, YAMLNodeId src_node,
336 size_t index);
337
338// --- EMITTING & UTILS ---
339
348YAML_API char* node_to_string(YAMLTreeHandle tree, YAMLNodeId node);
349
358YAML_API char* tree_to_string(YAMLTreeHandle tree);
359
369YAML_API bool write_file(YAMLTreeHandle tree, const char* filename);
370
378YAML_API void yaml_free_string(char* str);
379
380#ifdef __cplusplus
381}
382#endif
383
384#endif // YAML_C_WRAPPER_H
YAMLNodeId get_root(YAMLTreeHandle tree)
Definition yaml_c_wrapper.cpp:621
YAMLNodeId get_parent(YAMLTreeHandle tree, YAMLNodeId node)
Definition yaml_c_wrapper.cpp:626
void set_scalar(YAMLTreeHandle tree, YAMLNodeId node, const char *value)
Definition yaml_c_wrapper.cpp:738
void yaml_free_string(char *str)
Definition yaml_c_wrapper.cpp:810
char * as_string(YAMLTreeHandle tree, YAMLNodeId node)
Definition yaml_c_wrapper.cpp:685
bool write_file(YAMLTreeHandle tree, const char *filename)
Definition yaml_c_wrapper.cpp:799
bool is_sequence(YAMLTreeHandle tree, YAMLNodeId node)
Definition yaml_c_wrapper.cpp:673
YAMLTreeHandle parse_string(const char *yaml_str)
Definition yaml_c_wrapper.cpp:587
bool is_scalar(YAMLTreeHandle tree, YAMLNodeId node)
Definition yaml_c_wrapper.cpp:678
void delete_tree(YAMLTreeHandle tree)
Definition yaml_c_wrapper.cpp:609
char * get_node_key(YAMLTreeHandle tree, YAMLNodeId node)
Definition yaml_c_wrapper.cpp:655
YAMLNodeId add_sequence(YAMLTreeHandle tree, YAMLNodeId parent, const char *key, size_t index)
Definition yaml_c_wrapper.cpp:726
YAMLNodeId add_scalar(YAMLTreeHandle tree, YAMLNodeId parent, const char *key, const char *value, size_t index)
Definition yaml_c_wrapper.cpp:698
void remove_node(YAMLTreeHandle tree, YAMLNodeId parent, YAMLNodeId child)
Definition yaml_c_wrapper.cpp:613
YAMLNodeId add_map(YAMLTreeHandle tree, YAMLNodeId parent, const char *key, size_t index)
Definition yaml_c_wrapper.cpp:714
struct lattices get_lattices(const char *filename, const char *lattice_name)
Definition yaml_c_wrapper.cpp:560
bool is_map(YAMLTreeHandle tree, YAMLNodeId node)
Definition yaml_c_wrapper.cpp:668
YAMLNodeId get_child_by_index(YAMLTreeHandle tree, YAMLNodeId parent, size_t index)
Definition yaml_c_wrapper.cpp:641
char * node_to_string(YAMLTreeHandle tree, YAMLNodeId node)
Definition yaml_c_wrapper.cpp:784
YAMLTreeHandle create_empty_tree()
Definition yaml_c_wrapper.cpp:603
void set_node_key(YAMLTreeHandle tree, YAMLNodeId node, const char *key)
Definition yaml_c_wrapper.cpp:746
size_t get_size(YAMLTreeHandle tree, YAMLNodeId node)
Definition yaml_c_wrapper.cpp:650
YAMLNodeId get_child_by_key(YAMLTreeHandle tree, YAMLNodeId parent, const char *key)
Definition yaml_c_wrapper.cpp:632
YAMLTreeHandle parse_file(const char *filename)
Definition yaml_c_wrapper.cpp:571
void deep_copy_children(YAMLTreeHandle dst_tree, YAMLNodeId dst_node, YAMLTreeHandle src_tree, YAMLNodeId src_node, size_t index)
Definition yaml_c_wrapper.cpp:764
char * tree_to_string(YAMLTreeHandle tree)
Definition yaml_c_wrapper.cpp:795
void deep_copy_node(YAMLTreeHandle dst_tree, YAMLNodeId dst_node, YAMLTreeHandle src_tree, YAMLNodeId src_node)
Definition yaml_c_wrapper.cpp:754