More implementation code.
[wrappi.git] / generator-macros / pa_wrap.ml
index ffd9e6b..c176fe2 100644 (file)
@@ -51,7 +51,7 @@ let expr_of_loc _loc loc =
      $`int:stop_line$, $`int:stop_bol$, $`int:stop_off$,
      $`bool:ghost$) >>
 
-let add_entry_point _loc local name parameters rtype code =
+let add_entry_point _loc local name parameters rtype code includes =
   let loc = expr_of_loc _loc _loc in
 
   let local =
@@ -64,12 +64,15 @@ let add_entry_point _loc local name parameters rtype code =
 
   let code = expr_of_option _loc code in
 
+  let includes = match includes with None -> <:expr< [] >> | Some xs -> xs in
+
   <:str_item<
     let ep = { Wrappi_types.ep_loc = $loc$;
                ep_local = $local$;
                ep_name = $str:name$;
                ep_ftype = ($rtype$, $parameters$, []);
-               ep_code = $code$ } in
+               ep_code = $code$;
+               ep_includes = $includes$ } in
     Wrappi_accumulator.add_entry_point ep
   >>
 
@@ -135,8 +138,10 @@ EXTEND Gram
       local = OPT "local";
       rtype = rtype; name = LIDENT;
       "("; parameters = LIST0 parameter SEP ","; ")";
-      code = OPT [ code = expr -> code ] ->
-      add_entry_point _loc local name parameters rtype code
+      code = OPT [ code = expr -> code ];
+      includes = OPT [ "includes"; includes = expr -> includes ]
+      ->
+      add_entry_point _loc local name parameters rtype code includes
     ]
   | [ "typedef"; t = ptype; name = LIDENT ->
       add_typedef _loc name t