Skip to main content

libhaystack/c_api/
mod.rs

1// Copyright (C) 2020 - 2022, J2 Innovations
2
3//! Haystack C based API for the core data types, encoders, and filters
4
5#[cfg(feature = "c-api-brio")]
6pub mod brio;
7pub mod coord;
8pub mod date;
9pub mod datetime;
10pub mod dict;
11#[cfg(feature = "c-api-filter")]
12pub mod filter;
13pub mod grid;
14#[cfg(feature = "c-api-json")]
15pub mod json;
16pub mod list;
17pub mod number;
18pub mod reference;
19pub mod str;
20pub mod symbol;
21pub mod time;
22#[cfg(feature = "c-api-trio")]
23pub mod trio;
24pub mod uri;
25pub mod value;
26pub mod xstr;
27#[cfg(feature = "c-api-zinc")]
28pub mod zinc;
29
30pub mod err;
31
32/// Generic result type for API calls
33#[repr(C)]
34#[derive(Debug, PartialEq, Eq, PartialOrd)]
35pub enum ResultType {
36    ERR = -1,
37    FALSE = 0,
38    TRUE = 1,
39}
40
41#[macro_export]
42macro_rules! safe_bool_call {
43    ($self: ident, $func: ident) => {
44        match $self.as_ref() {
45            Some(value) => value.$func(),
46            None => {
47                new_error("Invalid Value reference");
48                false
49            }
50        }
51    };
52}