1 module jsonned.binding;
2 
3 
4         import core.stdc.config;
5         import core.stdc.stdarg: va_list;
6         static import core.simd;
7         static import std.conv;
8 
9         struct Int128 { long lower; long upper; }
10         struct UInt128 { ulong lower; ulong upper; }
11 
12         struct __locale_data { int dummy; }
13 
14 
15 
16 alias _Bool = bool;
17 struct dpp {
18     static struct Opaque(int N) {
19         void[N] bytes;
20     }
21 
22     static bool isEmpty(T)() {
23         return T.tupleof.length == 0;
24     }
25     static struct Move(T) {
26         T* ptr;
27     }
28 
29 
30     static auto move(T)(ref T value) {
31         return Move!T(&value);
32     }
33     mixin template EnumD(string name, T, string prefix) if(is(T == enum)) {
34         private static string _memberMixinStr(string member) {
35             import std.conv: text;
36             import std.array: replace;
37             return text(` `, member.replace(prefix, ""), ` = `, T.stringof, `.`, member, `,`);
38         }
39         private static string _enumMixinStr() {
40             import std.array: join;
41             string[] ret;
42             ret ~= "enum " ~ name ~ "{";
43             static foreach(member; __traits(allMembers, T)) {
44                 ret ~= _memberMixinStr(member);
45             }
46             ret ~= "}";
47             return ret.join("\n");
48         }
49         mixin(_enumMixinStr());
50     }
51 }
52 
53 extern(C)
54 {
55     alias wchar_t = int;
56     alias size_t = c_ulong;
57     alias ptrdiff_t = c_long;
58     struct max_align_t
59     {
60         long __clang_max_align_nonce1;
61         real __clang_max_align_nonce2;
62     }
63     void jsonnet_destroy(JsonnetVm*) @nogc nothrow;
64     char* jsonnet_evaluate_snippet_stream(JsonnetVm*, const(char)*, const(char)*, int*) @nogc nothrow;
65     char* jsonnet_evaluate_file_stream(JsonnetVm*, const(char)*, int*) @nogc nothrow;
66     char* jsonnet_evaluate_snippet_multi(JsonnetVm*, const(char)*, const(char)*, int*) @nogc nothrow;
67     char* jsonnet_evaluate_file_multi(JsonnetVm*, const(char)*, int*) @nogc nothrow;
68     char* jsonnet_evaluate_snippet(JsonnetVm*, const(char)*, const(char)*, int*) @nogc nothrow;
69     char* jsonnet_evaluate_file(JsonnetVm*, const(char)*, int*) @nogc nothrow;
70     void jsonnet_jpath_add(JsonnetVm*, const(char)*) @nogc nothrow;
71     void jsonnet_max_trace(JsonnetVm*, uint) @nogc nothrow;
72     void jsonnet_tla_code(JsonnetVm*, const(char)*, const(char)*) @nogc nothrow;
73     void jsonnet_tla_var(JsonnetVm*, const(char)*, const(char)*) @nogc nothrow;
74     void jsonnet_ext_code(JsonnetVm*, const(char)*, const(char)*) @nogc nothrow;
75     void jsonnet_ext_var(JsonnetVm*, const(char)*, const(char)*) @nogc nothrow;
76     void jsonnet_native_callback(JsonnetVm*, const(char)*, JsonnetJsonValue* function(void*, const(const(JsonnetJsonValue)*)*, int*), void*, const(const(char)*)*) @nogc nothrow;
77     void jsonnet_import_callback(JsonnetVm*, char* function(void*, const(char)*, const(char)*, char**, int*), void*) @nogc nothrow;
78     char* jsonnet_realloc(JsonnetVm*, char*, c_ulong) @nogc nothrow;
79     alias JsonnetNativeCallback = JsonnetJsonValue* function(void*, const(const(JsonnetJsonValue)*)*, int*);
80     void jsonnet_json_destroy(JsonnetVm*, JsonnetJsonValue*) @nogc nothrow;
81     void jsonnet_json_object_append(JsonnetVm*, JsonnetJsonValue*, const(char)*, JsonnetJsonValue*) @nogc nothrow;
82     JsonnetJsonValue* jsonnet_json_make_object(JsonnetVm*) @nogc nothrow;
83     void jsonnet_json_array_append(JsonnetVm*, JsonnetJsonValue*, JsonnetJsonValue*) @nogc nothrow;
84     JsonnetJsonValue* jsonnet_json_make_array(JsonnetVm*) @nogc nothrow;
85     JsonnetJsonValue* jsonnet_json_make_null(JsonnetVm*) @nogc nothrow;
86     JsonnetJsonValue* jsonnet_json_make_bool(JsonnetVm*, int) @nogc nothrow;
87     JsonnetJsonValue* jsonnet_json_make_number(JsonnetVm*, double) @nogc nothrow;
88     JsonnetJsonValue* jsonnet_json_make_string(JsonnetVm*, const(char)*) @nogc nothrow;
89     int jsonnet_json_extract_null(JsonnetVm*, const(JsonnetJsonValue)*) @nogc nothrow;
90     int jsonnet_json_extract_bool(JsonnetVm*, const(JsonnetJsonValue)*) @nogc nothrow;
91     int jsonnet_json_extract_number(JsonnetVm*, const(JsonnetJsonValue)*, double*) @nogc nothrow;
92     const(char)* jsonnet_json_extract_string(JsonnetVm*, const(JsonnetJsonValue)*) @nogc nothrow;
93     struct JsonnetJsonValue;
94     alias JsonnetImportCallback = char* function(void*, const(char)*, const(char)*, char**, int*);
95     void jsonnet_string_output(JsonnetVm*, int) @nogc nothrow;
96     void jsonnet_gc_growth_trigger(JsonnetVm*, double) @nogc nothrow;
97     void jsonnet_gc_min_objects(JsonnetVm*, uint) @nogc nothrow;
98     void jsonnet_max_stack(JsonnetVm*, uint) @nogc nothrow;
99     JsonnetVm* jsonnet_make() @nogc nothrow;
100     struct JsonnetVm;
101     const(char)* jsonnet_version() @nogc nothrow;
102 
103 
104 
105 
106 
107 
108     static if(!is(typeof(LIB_JSONNET_VERSION))) {
109         enum LIB_JSONNET_VERSION = "v0.14.0";
110     }
111 }