]> rtime.felk.cvut.cz Git - frescor/forb.git/blob - forb-idl/forb-idl-c-backend.h
Added mutex to protect request send from multiple threads
[frescor/forb.git] / forb-idl / forb-idl-c-backend.h
1 #ifndef FORB_IDL_C_BACKEND_H
2 #define FORB_IDL_C_BACKEND_H
3
4 #include "forb-idl2.h"
5 #include <stdbool.h>
6
7 #define OIDL_C_WARNING "/*\n * This file was generated by forb-idl - DO NOT EDIT!\n */\n\n"
8
9 typedef struct {
10         char     *base_name;
11         char     *c_base_name;
12         FILE     *fh;
13         GString  *ext_dcls;
14         gboolean  do_impl_hack;
15         gboolean  do_skel_defs;
16 } OIDL_C_Info;
17
18 enum forb_ser {
19   DESERIALIZE,
20   SERIALIZE
21 };
22
23 void
24 forb_cbe_write_ser_var(FILE *of, IDL_tree ts, IDL_tree name, bool use_name,
25                        char *var_prefix, enum forb_ser serialization);
26
27
28 gboolean  forb_idl_output_c       (IDL_tree       tree,
29                                     OIDL_Run_Info *rinfo);
30 void  forb_idl_output_c_headers   (IDL_tree       tree,
31                                     OIDL_Run_Info *rinfo,
32                                     OIDL_C_Info   *ci);
33 void  forb_idl_output_c_stubs     (IDL_tree       tree,
34                                     OIDL_Run_Info *rinfo,
35                                     OIDL_C_Info   *ci);
36 void  forb_idl_output_c_skeletons (IDL_tree       tree,
37                                     OIDL_Run_Info *rinfo,
38                                     OIDL_C_Info   *ci);
39 void  forb_idl_output_c_common    (IDL_tree       tree,
40                                     OIDL_Run_Info *rinfo,
41                                     OIDL_C_Info   *ci);
42 void  forb_idl_output_c_skelimpl  (IDL_tree       tree,
43                                     OIDL_Run_Info *rinfo,
44                                     OIDL_C_Info   *ci);
45 void  forb_idl_output_c_imodule   (IDL_tree       tree,
46                                     OIDL_Run_Info *rinfo,
47                                     OIDL_C_Info   *ci);
48 void  forb_idl_output_c_deps      (IDL_tree       tree,
49                                     OIDL_Run_Info *rinfo,
50                                     OIDL_C_Info   *ci);
51
52 void forb_output_typecode (OIDL_C_Info *ci, IDL_tree ts);
53
54 char *forb_idl_c_filename_for_pass (const char *input_filename, int pass);
55
56 /* utils */
57 char    *forb_cbe_get_typespec_str     (IDL_tree    tree);
58 void     forb_cbe_write_typespec       (FILE       *of,
59                                          IDL_tree    tree);
60 void     forb_cbe_write_param_typespec (FILE       *of,
61                                          IDL_tree    tree);
62 void     forb_cbe_op_write_proto       (FILE       *of,
63                                          IDL_tree    op,
64                                          const char *nom_prefix,
65                                          gboolean    for_epv);
66 IDL_tree forb_cbe_get_typespec         (IDL_tree    tree);
67 void     forb_cbe_write_const          (FILE       *of,
68                                          IDL_tree    tree);
69 gboolean forb_cbe_type_is_fixed_length (IDL_tree    ts);
70 gboolean forb_cbe_type_is_builtin      (IDL_tree    tree);
71 void     forb_cbe_id_define_hack       (FILE       *fh,
72                                          const char *def_prefix,
73                                          const char *def_name,
74                                          const char *def_value);
75 void     forb_cbe_id_cond_hack         (FILE       *fh,
76                                          const char *def_prefix,
77                                          const char *def_name,
78                                          const char *def_value);
79 char    *forb_cbe_get_typecode_name    (IDL_tree    tree);
80 void     forb_cbe_flatten_args         (IDL_tree    tree,
81                                          FILE       *of,
82                                          const char *name);
83 void     forb_cbe_unflatten_args       (IDL_tree    tree,
84                                          FILE       *of,
85                                          const char *name);
86 #endif