json_journal.c
Go to the documentation of this file.
1 #include <assert.h>
2 #include "json_journal.h"
3 
4 
5 #define MAX_STACK 1000
6 
8 static int jj_stack_index = -1;
9 static FILE * jj_file = 0;
10 
11 
12 int jj_enabled() {
13  return jj_file != 0;
14 }
15 
17  assert(jj_stack_index>=0);
18  return jj_stack[jj_stack_index];
19 }
20 
21 void jj_stack_push(JO jo) {
22  assert(jj_stack_index<MAX_STACK);
23  jj_stack[++jj_stack_index] = jo;
24 }
25 
26 void jj_stack_pop() {
27 /* fprintf(stderr, "jj_stack_pop %d\n", jj_stack_index); */
28  assert(jj_stack_index>=0);
29  if(jj_stack_index == 0 && jj_file) {
30  fprintf(jj_file, "%s\n", json_object_to_json_string(jj_stack_top()));
32  }
34 }
35 
36 void jj_context_enter(const char*context_name) {
37 /* fprintf(stderr, "jj_context_enter('%s') %d\n", context_name, jj_stack_index); */
38 
40  if(jj_stack_index>=0)
41  jo_add(jj_stack_top(), context_name, jo);
42 
43  jj_stack_push(jo);
44 }
45 
46 
47 
50 }
51 
54 }
55 
58  jj_stack_pop();
59 }
60 
61 void jj_loop_enter(const char*loop_name) {
64  jo_add(jj_stack_top(), loop_name, jo);
65  jj_stack_push(jo);
66 }
67 
69  JO this_iteration = json_object_new_object();
71  jj_stack_pop();
73  }
74  json_object_array_add(jj_stack_top(), this_iteration);
75  jj_stack_push(this_iteration);
76 }
77 
78 void jj_loop_exit() {
80  jj_stack_pop();
81 
83  jj_stack_pop();
84 }
85 
86 void jj_add_int(const char*name, int v) {
89 }
90 
91 void jj_add_double(const char*name, double v) {
94 }
95 
96 void jj_add_double_array(const char *name, double *v, int n) {
98 }
99 
100 void jj_add_int_array(const char*name, int* v, int n) {
101  jj_add(name, jo_new_int_array(v, n));
102 }
103 
104 void jj_add(const char*name, JO jo) {
105  jj_must_be_hash();
106  jo_add(jj_stack_top(), name, jo);
107 }
108 
109 void jj_set_stream(FILE* f) {
110  jj_file = f;
111 }
112 
113 FILE * jj_get_stream() {
114  return jj_file;
115 }
jj_context_enter
void jj_context_enter(const char *context_name)
Definition: json_journal.c:36
jj_add_int
void jj_add_int(const char *name, int v)
Definition: json_journal.c:86
jo_new_int_array
JO jo_new_int_array(const int *v, int n)
Definition: json_more_utils.c:209
jj_get_stream
FILE * jj_get_stream()
Definition: json_journal.c:113
json_object_new_array
struct json_object * json_object_new_array()
Definition: json_object.c:495
json_type_array
@ json_type_array
Definition: json_object.h:43
jo_new_double_array
JO jo_new_double_array(const double *v, int n)
Definition: json_more_utils.c:201
jj_stack_index
static int jj_stack_index
Definition: json_journal.c:8
json_object_new_object
struct json_object * json_object_new_object()
Definition: json_object.c:248
json_type
json_type
Definition: json_object.h:37
MAX_STACK
#define MAX_STACK
Definition: json_journal.c:5
jo_new_int
#define jo_new_int
Definition: json_more_utils.h:10
jo_double_or_null
JO jo_double_or_null(double v)
Definition: json_more_utils.c:196
jj_loop_enter
void jj_loop_enter(const char *loop_name)
Definition: json_journal.c:61
jo_free
#define jo_free
Definition: json_more_utils.h:16
jj_must_be_hash
void jj_must_be_hash()
Definition: json_journal.c:48
json_journal.h
option::name
const char * name
Definition: options.h:51
jj_loop_exit
void jj_loop_exit()
Definition: json_journal.c:78
json_type_object
@ json_type_object
Definition: json_object.h:42
jo_add
#define jo_add
Definition: json_more_utils.h:14
jj_add_double_array
void jj_add_double_array(const char *name, double *v, int n)
Definition: json_journal.c:96
jj_stack
static JO jj_stack[MAX_STACK]
Definition: json_journal.c:7
jj_must_be_array
void jj_must_be_array()
Definition: json_journal.c:52
jj_enabled
int jj_enabled()
Definition: json_journal.c:12
jj_context_exit
void jj_context_exit()
Definition: json_journal.c:56
json_object_is_type
int json_object_is_type(struct json_object *this, int type)
Definition: json_object.c:184
jj_file
static FILE * jj_file
Definition: json_journal.c:9
jj_stack_pop
void jj_stack_pop()
Definition: json_journal.c:26
jj_set_stream
void jj_set_stream(FILE *f)
Definition: json_journal.c:109
jj_add_double
void jj_add_double(const char *name, double v)
Definition: json_journal.c:91
jj_stack_top
JO jj_stack_top()
Definition: json_journal.c:16
jj_add
void jj_add(const char *name, JO jo)
Definition: json_journal.c:104
json_object
Definition: json_object_private.h:21
jj_add_int_array
void jj_add_int_array(const char *name, int *v, int n)
Definition: json_journal.c:100
json_object_array_add
int json_object_array_add(struct json_object *this, struct json_object *val)
Definition: json_object.c:522
jj_loop_iteration
void jj_loop_iteration()
Definition: json_journal.c:68
jj_stack_push
void jj_stack_push(JO jo)
Definition: json_journal.c:21
json_object_to_json_string
const char * json_object_to_json_string(struct json_object *this)
Definition: json_object.c:199


csm
Author(s): Andrea Censi
autogenerated on Wed Aug 17 2022 02:50:33