You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
706 B
OCaml
34 lines
706 B
OCaml
open Obc
|
|
open C
|
|
open Idents
|
|
open Names
|
|
|
|
let async_global_var_name od = "g_async__" ^ (name od.o_ident)
|
|
|
|
let filter_async_objs cd =
|
|
List.filter
|
|
(fun od ->
|
|
match od.o_ack with
|
|
| Some _ -> true
|
|
| None -> false)
|
|
cd.cd_objs
|
|
|
|
let async_global_objs_vars cd =
|
|
List.map
|
|
(fun od ->
|
|
let name = async_global_var_name od in
|
|
let ty = Cty_id (qn_append od.o_class "_async") in
|
|
name, ty)
|
|
(filter_async_objs cd)
|
|
|
|
let async_global_objs_defs cd =
|
|
List.map
|
|
(fun (name, ty) -> Cvardef (name, ty))
|
|
(async_global_objs_vars cd)
|
|
|
|
let async_global_objs_decls cd =
|
|
List.map
|
|
(fun (name, ty) -> Cdecl_extern (name, ty))
|
|
(async_global_objs_vars cd)
|
|
|