#pragma once #include "../jprint.h" struct { char *Address; char *Hook; } typedef endpoint; struct { char *Node; char *Interface; } typedef endpoint_configuration; struct { endpoint_configuration Peer[2]; } typedef link_configuration; struct { char *Name; link_configuration Configuration; endpoint Peer[2]; u32 PipeID; } typedef link_; struct { char *Module; ucl_object_t *Configuration; } typedef node_configuration; struct { char *Name; node_configuration Configuration; ucl_object_t *Data; } typedef node; struct { size_t NodeCount; node *Node; size_t LinkCount; link_ *Link; } typedef experiment; void Free_endpoint(endpoint *); void Free_endpoint_configuration(endpoint_configuration *); void Free_link_configuration(link_configuration *); void Free_link(link_ *); void Free_node_configuration(node_configuration *); void Free_node(node *); void Free_experiment(experiment *); char *Parse_endpoint(endpoint *, ucl_object_t const *, char const *Position); char *Parse_endpoint_configuration(endpoint_configuration *, ucl_object_t const *, char const *Position); char *Parse_link_configuration(link_configuration *, ucl_object_t const *, char const *Position); char *Parse_link(link_ *, ucl_object_t const *, char const *Position); char *Parse_node_configuration(node_configuration *, ucl_object_t const *, char const *Position); char *Parse_node(node *, ucl_object_t const *, char const *Position); char *Parse_experiment(experiment *, ucl_object_t const *, char const *Position); void Save_endpoint(jprint_state *, endpoint const *); void Save_endpoint_configuration(jprint_state *, endpoint_configuration const *); void Save_link_configuration(jprint_state *, link_configuration const *); void Save_link(jprint_state *, link_ const *); void Save_node_configuration(jprint_state *, node_configuration const *); void Save_node(jprint_state *, node const *); void Save_experiment(jprint_state *, experiment const *);