/*
 * pbxb64/hlib.h - Public C interface to PBXB64 native H-Lib containers.
 *
 * This header exposes the H-Lib dynamic Long-array interface supported by the
 * PBXB64 C frontend.
 */

#ifndef PBXB64_HLIB_H
#define PBXB64_HLIB_H

#include <stdint.h>

#ifdef __cplusplus
extern "C" {
#endif

/* ============================================================================
 * Opaque container handle
 * ============================================================================ */

typedef void* c_hlib_lnarr_t;

/* ============================================================================
 * Long array (LnArr)
 * ============================================================================ */

c_hlib_lnarr_t c_hlib_lnarr_new(void);
void           c_hlib_lnarr_final(c_hlib_lnarr_t a);
int32_t        c_hlib_lnarr_count(c_hlib_lnarr_t a);
void           c_hlib_lnarr_add(c_hlib_lnarr_t a, int32_t value);
void           c_hlib_lnarr_set(c_hlib_lnarr_t a, int32_t index, int32_t value);
int32_t        c_hlib_lnarr_get(c_hlib_lnarr_t a, int32_t index);
int32_t        c_hlib_lnarr_contains(c_hlib_lnarr_t a, int32_t value);

#ifdef __cplusplus
}
#endif

#endif /* PBXB64_HLIB_H */
