Skip to the content.

Examples

The examples/ directory contains complete working examples demonstrating various olib features.

Building Examples

Examples are built by default with CMake:

cmake -B build
cmake --build build

Executables are placed in build/bin/:

./build/bin/olib-example-basic
./build/bin/olib-example-json
# etc.

To disable building examples:

cmake -B build -DOLIB_BUILD_EXAMPLES=OFF

Example Programs

basic.c

Purpose: Demonstrates fundamental object creation and manipulation.

Covers:

Key functions used:

View source

json.c

Purpose: Demonstrates JSON serialization and parsing.

Covers:

Key functions used:

View source

yaml.c

Purpose: Demonstrates YAML format handling.

Covers:

Key functions used:

View source

xml.c

Purpose: Demonstrates XML format handling.

Covers:

Key functions used:

View source

toml.c

Purpose: Demonstrates TOML configuration file handling.

Covers:

Key functions used:

View source

text.c

Purpose: Demonstrates plain text format handling.

Covers:

Key functions used:

View source

binary.c

Purpose: Demonstrates compact binary serialization.

Covers:

Key functions used:

View source

Common Patterns

Error Handling

All examples follow this pattern:

olib_object_t* obj = olib_format_read_file_path(OLIB_FORMAT_JSON_TEXT, "file.json");
if (!obj) {
    fprintf(stderr, "Failed to parse file\n");
    return 1;
}

// Use obj...

olib_object_free(obj);

Memory Management

Objects added to containers are owned by the container:

olib_object_t* list = olib_object_new(OLIB_OBJECT_TYPE_LIST);
olib_object_t* item = olib_object_new(OLIB_OBJECT_TYPE_INT);
olib_object_set_int(item, 42);

olib_object_list_push(list, item);  // list now owns item

olib_object_free(list);  // frees list AND item

Serialized output must be freed:

char* output = NULL;
olib_format_write_string(OLIB_FORMAT_JSON_TEXT, obj, &output);
// Use output...
olib_free(output);  // Use olib_free, not free()

Format Conversion

Convert between formats in one step:

olib_convert_file_path(
    OLIB_FORMAT_JSON_TEXT, "input.json",
    OLIB_FORMAT_YAML, "output.yaml"
);

Or load, modify, and save:

olib_object_t* obj = olib_format_read_file_path(OLIB_FORMAT_JSON_TEXT, "config.json");

// Modify obj...

olib_format_write_file_path(OLIB_FORMAT_YAML, obj, "config.yaml");
olib_object_free(obj);

Sample Data Files

The samples/ directory contains example data files used by the examples:

These files demonstrate various data structures and can be used to test format conversion.