prefs 0.1.2

Type-safe macOS preferences library
#ifndef PREFS_H
#define PREFS_H

#include <stdbool.h>
#include <stdint.h>

typedef struct {
    bool found;
    char **values;
    uintptr_t len;
} PrefsStringArray;

char *prefs_copy_string(const char *domain, const char *key);

typedef struct {
    bool found;
    bool value;
} PrefsBoolResult;

typedef struct {
    bool found;
    int64_t value;
} PrefsInt64Result;

typedef struct {
    bool found;
    double value;
} PrefsDoubleResult;

PrefsBoolResult prefs_get_bool_optional(const char *domain, const char *key);
PrefsInt64Result prefs_get_i64_optional(const char *domain, const char *key);
PrefsDoubleResult prefs_get_f64_optional(const char *domain, const char *key);
PrefsStringArray prefs_copy_string_array(const char *domain, const char *key);

bool prefs_set_bool(const char *domain, const char *key, bool value);
bool prefs_set_i64(const char *domain, const char *key, int64_t value);
bool prefs_set_f64(const char *domain, const char *key, double value);
bool prefs_set_string(const char *domain, const char *key, const char *value);
bool prefs_set_string_array(const char *domain, const char *key, const char **values, uintptr_t len);

bool prefs_remove(const char *domain, const char *key);
bool prefs_contains(const char *domain, const char *key);

void prefs_free_string(char *value);
void prefs_free_string_array(PrefsStringArray *array);

#endif