2020-12-25 22:23:25 +01:00
|
|
|
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
|
|
|
|
|
2020-12-26 04:28:39 +01:00
|
|
|
let async_global_objs_vars cd =
|
2020-12-25 22:23:25 +01:00
|
|
|
List.map
|
|
|
|
(fun od ->
|
|
|
|
let name = async_global_var_name od in
|
|
|
|
let ty = Cty_id (qn_append od.o_class "_async") in
|
2020-12-26 04:28:39 +01:00
|
|
|
name, ty)
|
2020-12-25 22:23:25 +01:00
|
|
|
(filter_async_objs cd)
|
|
|
|
|
2020-12-26 04:28:39 +01:00
|
|
|
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)
|
2020-12-25 22:23:25 +01:00
|
|
|
|