C ABI: DIP
The experimental DIP C ABI creates parsers, loads DIPL sources, evaluates parameters, and retrieves values through opaque parser handles. See C bindings for build instructions and ownership rules.
Typedefs
-
typedef struct snt_dip_node snt_dip_node
Opaque read-only node view. It is owned by the caller and borrows its parser.
-
typedef struct snt_dip_comparison snt_dip_comparison
Opaque, owned result of comparing two DIPH5 files.
Enums
-
enum snt_dip_compare_scope
Values:
-
enumerator SNT_DIP_COMPARE_EFFECTIVE
-
enumerator SNT_DIP_COMPARE_FULL
-
enumerator SNT_DIP_COMPARE_EFFECTIVE
-
enum snt_dip_difference_kind
Values:
-
enumerator SNT_DIP_DIFFERENCE_ADDED
-
enumerator SNT_DIP_DIFFERENCE_REMOVED
-
enumerator SNT_DIP_DIFFERENCE_CHANGED
-
enumerator SNT_DIP_DIFFERENCE_ADDED
-
enum snt_dip_node_kind
DIPL path/node kinds exposed by the typed traversal API.
Values:
-
enumerator SNT_DIP_NODE_NONE
-
enumerator SNT_DIP_NODE_EMPTY
-
enumerator SNT_DIP_NODE_GROUP
-
enumerator SNT_DIP_NODE_MAP
-
enumerator SNT_DIP_NODE_LIST
-
enumerator SNT_DIP_NODE_ITEM
-
enumerator SNT_DIP_NODE_ROOT
-
enumerator SNT_DIP_NODE_NONE
-
enum snt_dip_value_type
Primitive DIPL value type. Values match SNT’s stable primitive type codes.
Values:
-
enumerator SNT_DIP_VALUE_NONE
-
enumerator SNT_DIP_VALUE_BOOL
-
enumerator SNT_DIP_VALUE_STRING
-
enumerator SNT_DIP_VALUE_CHAR
-
enumerator SNT_DIP_VALUE_INT16
-
enumerator SNT_DIP_VALUE_INT32
-
enumerator SNT_DIP_VALUE_INT64
-
enumerator SNT_DIP_VALUE_UINT16
-
enumerator SNT_DIP_VALUE_UINT32
-
enumerator SNT_DIP_VALUE_UINT64
-
enumerator SNT_DIP_VALUE_FLOAT32
-
enumerator SNT_DIP_VALUE_FLOAT64
-
enumerator SNT_DIP_VALUE_FLOAT128
-
enumerator SNT_DIP_VALUE_INT8
-
enumerator SNT_DIP_VALUE_UINT8
-
enumerator SNT_DIP_VALUE_INTX
-
enumerator SNT_DIP_VALUE_FLOATX
-
enumerator SNT_DIP_VALUE_NONE
-
enum snt_dip_export_format
Output format for generated parameter lists.
Values:
-
enumerator SNT_DIP_EXPORT_CPP
-
enumerator SNT_DIP_EXPORT_C
-
enumerator SNT_DIP_EXPORT_FORTRAN
-
enumerator SNT_DIP_EXPORT_RUST
-
enumerator SNT_DIP_EXPORT_R
-
enumerator SNT_DIP_EXPORT_JULIA
-
enumerator SNT_DIP_EXPORT_JSON
-
enumerator SNT_DIP_EXPORT_TOML
-
enumerator SNT_DIP_EXPORT_YAML
-
enumerator SNT_DIP_EXPORT_CPP
-
enum snt_dip_report_format
Output format for a generated DIP report.
Values:
-
enumerator SNT_DIP_REPORT_TEX
-
enumerator SNT_DIP_REPORT_PDF
-
enumerator SNT_DIP_REPORT_MD
-
enumerator SNT_DIP_REPORT_RST
-
enumerator SNT_DIP_REPORT_HTML
-
enumerator SNT_DIP_REPORT_TYP
-
enumerator SNT_DIP_REPORT_TXT
-
enumerator SNT_DIP_REPORT_JSON
-
enumerator SNT_DIP_REPORT_TEX
Functions
-
int snt_dip_compare_files(const char *before, const char *after, snt_dip_compare_scope scope, size_t max_array_examples, snt_dip_comparison **result, snt_dip_error *error)
Load and compare two DIPH5 files. The caller owns *result.
-
int snt_dip_comparison_summary(const snt_dip_comparison *result, size_t *added, size_t *removed, size_t *changed, snt_dip_error *error)
Retrieve total added, removed, and changed entries.
-
size_t snt_dip_comparison_count(const snt_dip_comparison *result)
Return the number of indexed differences; zero for a comparison with no differences.
-
int snt_dip_comparison_get(const snt_dip_comparison *result, size_t index, snt_dip_difference *difference, snt_dip_error *error)
Get one difference; string and index pointers are borrowed from result.
-
int snt_dip_comparison_render_text(const snt_dip_comparison *result, size_t max_details, char *buffer, size_t capacity, size_t *required, snt_dip_error *error)
Render text; call with buffer=NULL and capacity=0 to query required bytes including NUL.
-
void snt_dip_comparison_free(snt_dip_comparison *result)
-
int snt_dip_parser_create(snt_dip **result, snt_dip_error *error)
Create a DIPL parser.
-
int snt_dip_parser_add_schema_string(snt_dip *dip, const char *name, const char *source, snt_dip_error *error)
Register a named schema body from a string.
-
int snt_dip_parser_add_schema_file(snt_dip *dip, const char *name, const char *path, snt_dip_error *error)
Register a named schema body from a file.
-
int snt_dip_parser_add_override_string(snt_dip *dip, const char *source, snt_dip_error *error)
Collect an unwrapped override body of value modifications and optional nested path prefixes.
-
int snt_dip_parser_add_override_file(snt_dip *dip, const char *path, snt_dip_error *error)
Register an unwrapped override body from a file, retaining its source path.
-
int snt_dip_parser_add_string(snt_dip *dip, const char *source, snt_dip_error *error)
Add DIPL source text to a parser.
-
int snt_dip_parser_add_file(snt_dip *dip, const char *path, snt_dip_error *error)
Add a DIPL source file to a parser.
-
int snt_dip_parser_add_project(snt_dip *dip, const char *path, snt_dip_error *error)
Add a DIPfile project manifest to a parser.
-
int snt_dip_parser_parse(snt_dip *dip, snt_dip_error *error)
Parse and evaluate all sources added to a parser.
-
int snt_dip_parser_parse_with_graph(snt_dip *dip, int record_dependency_graph, snt_dip_error *error)
Parse and optionally record evaluation dependencies (nonzero enables recording).
-
int snt_dip_parser_get(const snt_dip *dip, const char *path, char *buffer, size_t capacity, snt_dip_error *error)
Format a parsed DIPL value into a caller-provided buffer.
-
int snt_dip_environment_get_node(const snt_dip *dip, const char *path, snt_dip_node **result, snt_dip_error *error)
Get a read-only node handle. It resolves its path against dip’s current environment.
-
int snt_dip_node_get_kind(const snt_dip_node *node, snt_dip_node_kind *result, snt_dip_error *error)
Return the node kind.
-
int snt_dip_node_get_path(const snt_dip_node *node, char *buffer, size_t capacity, size_t *required, snt_dip_error *error)
Copy the UTF-8 path into a caller buffer; query required bytes (including NUL) with NULL/0.
-
int snt_dip_node_get_child(const snt_dip_node *node, const char *name, snt_dip_node **result, snt_dip_error *error)
Return direct group child by name, map item by key, or list element by index. Caller owns result.
-
int snt_dip_node_get_item(const snt_dip_node *node, const char *key, snt_dip_node **result, snt_dip_error *error)
-
int snt_dip_node_get_key(const snt_dip_node *node, size_t index, char *buffer, size_t capacity, size_t *required, snt_dip_error *error)
Copy a map key by zero-based position in sorted key order.
-
int snt_dip_node_get_element(const snt_dip_node *node, size_t index, snt_dip_node **result, snt_dip_error *error)
-
int snt_dip_node_get_size(const snt_dip_node *node, size_t *result, snt_dip_error *error)
Return direct child, map item, or list element count.
-
int snt_dip_node_get_type(const snt_dip_node *node, snt_dip_value_type *result, snt_dip_error *error)
-
int snt_dip_node_get_shape(const snt_dip_node *node, size_t *dimensions, size_t capacity, size_t *rank, snt_dip_error *error)
Query shape rank with dimensions=NULL/capacity=0, then fill dimensions.
-
int snt_dip_node_get_value_size(const snt_dip_node *node, size_t *result, snt_dip_error *error)
Return the flattened scalar/array element count.
-
int snt_dip_node_get_bool_at(const snt_dip_node *node, size_t index, int *result, snt_dip_error *error)
-
int snt_dip_node_get_int64_at(const snt_dip_node *node, size_t index, int64_t *result, snt_dip_error *error)
-
int snt_dip_node_get_uint64_at(const snt_dip_node *node, size_t index, uint64_t *result, snt_dip_error *error)
-
int snt_dip_node_get_double_at(const snt_dip_node *node, size_t index, double *result, snt_dip_error *error)
-
int snt_dip_node_get_string_at(const snt_dip_node *node, size_t index, char *buffer, size_t capacity, size_t *required, snt_dip_error *error)
-
int snt_dip_node_get_provenance(const snt_dip_node *node, char *source_name, size_t source_name_capacity, size_t *source_name_required, size_t *source_line, char *source_code, size_t source_code_capacity, size_t *source_code_required, char *override_source_name, size_t override_source_name_capacity, size_t *override_source_name_required, size_t *override_line, char *override_code, size_t override_code_capacity, size_t *override_code_required, snt_dip_error *error)
Copy provenance text fields; source_name and override_source_name may be empty.
-
int snt_dip_node_get_metadata(const snt_dip_node *node, const char *name, char *buffer, size_t capacity, size_t *required, snt_dip_error *error)
Read scalar metadata by DIPL name. Use snt_dip_node_has_metadata to test presence.
-
int snt_dip_node_has_metadata(const snt_dip_node *node, const char *name, int *result, snt_dip_error *error)
-
int snt_dip_node_get_metadata_list_size(const snt_dip_node *node, const char *name, size_t *result, snt_dip_error *error)
Read list metadata such as native, requires, conflicts, implies, see, or example.
-
int snt_dip_node_get_metadata_list_item(const snt_dip_node *node, const char *name, size_t index, char *buffer, size_t capacity, size_t *required, snt_dip_error *error)
-
int snt_dip_node_has_units(const snt_dip_node *node, int *result, snt_dip_error *error)
Report whether this value has physical units.
-
int snt_dip_node_get_units(const snt_dip_node *node, char *buffer, size_t capacity, size_t *required, snt_dip_error *error)
Copy the formatted unit expression; returns an empty string when the node is unitless.
-
int snt_dip_node_is_overridden(const snt_dip_node *node, int *result, snt_dip_error *error)
-
int snt_dip_node_get_option_count(const snt_dip_node *node, size_t *result, snt_dip_error *error)
-
int snt_dip_node_get_option_value(const snt_dip_node *node, size_t index, char *buffer, size_t capacity, size_t *required, snt_dip_error *error)
Option values use DIPL formatting. Option label and units are empty when unspecified.
-
int snt_dip_node_get_option_label(const snt_dip_node *node, size_t index, char *buffer, size_t capacity, size_t *required, snt_dip_error *error)
-
int snt_dip_node_get_option_units(const snt_dip_node *node, size_t index, char *buffer, size_t capacity, size_t *required, snt_dip_error *error)
-
int snt_dip_node_get_bool(const snt_dip_node *node, int *result, snt_dip_error *error)
-
int snt_dip_node_get_int64(const snt_dip_node *node, int64_t *result, snt_dip_error *error)
-
int snt_dip_node_get_uint64(const snt_dip_node *node, uint64_t *result, snt_dip_error *error)
-
int snt_dip_node_get_double(const snt_dip_node *node, double *result, snt_dip_error *error)
-
int snt_dip_node_get_string(const snt_dip_node *node, char *buffer, size_t capacity, size_t *required, snt_dip_error *error)
Copy the UTF-8 scalar string; query required bytes (including NUL) with NULL/0.
-
void snt_dip_node_free(snt_dip_node *node)
-
int snt_dip_parser_is_overridden(const snt_dip *dip, const char *path, int *result, snt_dip_error *error)
Set result to 1 when the parsed or loaded value was explicitly overridden, otherwise 0.
-
int snt_dip_environment_load(snt_dip *dip, const char *path, snt_dip_error *error)
Load the environment from an HDF5 file.
-
int snt_dip_environment_save(snt_dip *dip, const char *path, snt_dip_error *error)
Save the environment to an HDF5 file.
-
int snt_dip_environment_generate(snt_dip *dip, snt_dip_export_format format, const char *path, snt_dip_error *error)
Generate a static parameter list from the environment.
-
int snt_dip_environment_generate_report(snt_dip *dip, snt_dip_report_format format, const char *path, const char *input_label, const char *intro_file, const char *tex_compiler, snt_dip_error *error)
Generate a report from a parsed or loaded environment. input_label, intro_file, and tex_compiler may be null. The default compiler is pdflatex.
-
int snt_dip_environment_generate_report_with_options(snt_dip *dip, snt_dip_report_format format, const char *path, const snt_dip_report_options *options, snt_dip_error *error)
Generate a report with optional cover metadata. options may be null.
-
struct snt_dip_error
- #include <dip.h>
Error code and diagnostic message returned by a DIP ABI function.
-
struct snt_dip_difference
- #include <dip.h>
String and index pointers remain valid until the comparison is freed.
-
struct snt_dip_report_options
- #include <dip.h>
Optional report settings. Null fields use the documented defaults.