1*ec63e07aSXin Li // Copyright 2020 Google LLC
2*ec63e07aSXin Li //
3*ec63e07aSXin Li // Licensed under the Apache License, Version 2.0 (the "License");
4*ec63e07aSXin Li // you may not use this file except in compliance with the License.
5*ec63e07aSXin Li // You may obtain a copy of the License at
6*ec63e07aSXin Li //
7*ec63e07aSXin Li // https://www.apache.org/licenses/LICENSE-2.0
8*ec63e07aSXin Li //
9*ec63e07aSXin Li // Unless required by applicable law or agreed to in writing, software
10*ec63e07aSXin Li // distributed under the License is distributed on an "AS IS" BASIS,
11*ec63e07aSXin Li // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*ec63e07aSXin Li // See the License for the specific language governing permissions and
13*ec63e07aSXin Li // limitations under the License.
14*ec63e07aSXin Li
15*ec63e07aSXin Li #include "contrib/jsonnet/jsonnet_helper.h"
16*ec63e07aSXin Li
17*ec63e07aSXin Li #include <cstring>
18*ec63e07aSXin Li
c_jsonnet_make(void)19*ec63e07aSXin Li struct JsonnetVm* c_jsonnet_make(void) {
20*ec63e07aSXin Li return jsonnet_make();
21*ec63e07aSXin Li }
22*ec63e07aSXin Li
c_jsonnet_destroy(struct JsonnetVm * vm)23*ec63e07aSXin Li void c_jsonnet_destroy(struct JsonnetVm* vm) { return jsonnet_destroy(vm); }
24*ec63e07aSXin Li
c_jsonnet_evaluate_snippet(struct JsonnetVm * vm,const char * filename,char * snippet,int * error)25*ec63e07aSXin Li char* c_jsonnet_evaluate_snippet(struct JsonnetVm* vm, const char* filename,
26*ec63e07aSXin Li char* snippet, int* error) {
27*ec63e07aSXin Li return jsonnet_evaluate_snippet(vm, filename, snippet, error);
28*ec63e07aSXin Li }
29*ec63e07aSXin Li
c_jsonnet_evaluate_snippet_multi(struct JsonnetVm * vm,const char * filename,const char * snippet,int * error)30*ec63e07aSXin Li char* c_jsonnet_evaluate_snippet_multi(struct JsonnetVm* vm,
31*ec63e07aSXin Li const char* filename,
32*ec63e07aSXin Li const char* snippet, int* error) {
33*ec63e07aSXin Li return jsonnet_evaluate_snippet_multi(vm, filename, snippet, error);
34*ec63e07aSXin Li }
35*ec63e07aSXin Li
c_jsonnet_evaluate_snippet_stream(struct JsonnetVm * vm,const char * filename,const char * snippet,int * error)36*ec63e07aSXin Li char* c_jsonnet_evaluate_snippet_stream(struct JsonnetVm* vm,
37*ec63e07aSXin Li const char* filename,
38*ec63e07aSXin Li const char* snippet, int* error) {
39*ec63e07aSXin Li return jsonnet_evaluate_snippet_stream(vm, filename, snippet, error);
40*ec63e07aSXin Li }
41*ec63e07aSXin Li
c_read_input(bool filename_is_code,const char * filename)42*ec63e07aSXin Li char* c_read_input(bool filename_is_code, const char* filename) {
43*ec63e07aSXin Li std::string s_filename(filename);
44*ec63e07aSXin Li std::string s_input;
45*ec63e07aSXin Li bool check = read_input(filename_is_code, &s_filename, &s_input);
46*ec63e07aSXin Li char* c_input = strdup(s_input.c_str());
47*ec63e07aSXin Li if (check) return c_input;
48*ec63e07aSXin Li return nullptr;
49*ec63e07aSXin Li }
50*ec63e07aSXin Li
c_free_input(char * input)51*ec63e07aSXin Li void c_free_input(char* input) { free(input); }
52*ec63e07aSXin Li
c_write_output_file(const char * output,const char * output_file)53*ec63e07aSXin Li bool c_write_output_file(const char* output, const char* output_file) {
54*ec63e07aSXin Li std::string s_output_file(output_file);
55*ec63e07aSXin Li return write_output_file(output, s_output_file);
56*ec63e07aSXin Li }
57*ec63e07aSXin Li
c_write_multi_output_files(char * output,char * output_dir,bool show_output_file_names)58*ec63e07aSXin Li bool c_write_multi_output_files(char* output, char* output_dir,
59*ec63e07aSXin Li bool show_output_file_names) {
60*ec63e07aSXin Li std::string s_output_dir(output_dir);
61*ec63e07aSXin Li return write_multi_output_files(output, s_output_dir, show_output_file_names);
62*ec63e07aSXin Li }
63*ec63e07aSXin Li
c_write_output_stream(char * output,char * output_file)64*ec63e07aSXin Li bool c_write_output_stream(char* output, char* output_file) {
65*ec63e07aSXin Li std::string s_output_file(output_file);
66*ec63e07aSXin Li return write_output_stream(output, s_output_file);
67*ec63e07aSXin Li }
68*ec63e07aSXin Li
c_jsonnet_realloc(struct JsonnetVm * vm,char * str,size_t sz)69*ec63e07aSXin Li char* c_jsonnet_realloc(struct JsonnetVm* vm, char* str, size_t sz) {
70*ec63e07aSXin Li return jsonnet_realloc(vm, str, sz);
71*ec63e07aSXin Li }
72*ec63e07aSXin Li
c_jsonnet_fmt_snippet(struct JsonnetVm * vm,const char * filename,const char * snippet,int * error)73*ec63e07aSXin Li char* c_jsonnet_fmt_snippet(struct JsonnetVm* vm, const char* filename,
74*ec63e07aSXin Li const char* snippet, int* error) {
75*ec63e07aSXin Li return jsonnet_fmt_snippet(vm, filename, snippet, error);
76*ec63e07aSXin Li }
77