1 |
2475c9e8
|
ploc
|
(** This function focuses on standard library calls: conversion functions and
|
2 |
|
|
math library. It could be later extended to handle more functions. For the
|
3 |
|
|
moment, modular compilation of multiple lustre sources as one output JSON is not
|
4 |
|
|
considered. *)
|
5 |
|
|
|
6 |
8446bf03
|
ploc
|
open Lustre_types
|
7 |
089f94be
|
ploc
|
open Machine_code_types
|
8 |
2475c9e8
|
ploc
|
open Format
|
9 |
|
|
open EMF_common
|
10 |
|
|
|
11 |
|
|
let pp_call fmt m f outputs inputs =
|
12 |
|
|
let (decl, _) = List.assoc f m.mcalls in
|
13 |
|
|
if Corelang.is_imported_node decl then
|
14 |
|
|
let inode = Corelang.imported_node_of_top decl in
|
15 |
|
|
match inode.nodei_id, Filename.basename decl.top_decl_owner with
|
16 |
30f46c0c
|
ploc
|
| name, (("lustrec_math" | "simulink_math_fcn" | "conv") as lib) -> (
|
17 |
2475c9e8
|
ploc
|
fprintf fmt "\"kind\": \"functioncall\",@ \"name\": \"%s\",@ \"library\": \"%s\",@ "
|
18 |
|
|
name lib;
|
19 |
|
|
fprintf fmt "\"lhs\": [@[%a@]],@ \"args\": [@[%a@]]"
|
20 |
|
|
(Utils.fprintf_list ~sep:",@ " (fun fmt v -> fprintf fmt "\"%a\"" Printers.pp_var_name v)) outputs
|
21 |
c35de73b
|
ploc
|
(pp_emf_cst_or_var_list m) inputs
|
22 |
2475c9e8
|
ploc
|
)
|
23 |
|
|
| _ ->
|
24 |
|
|
Format.eprintf "Calls to function %s in library %s are not handled yet.@."
|
25 |
|
|
inode.nodei_id
|
26 |
|
|
(Filename.basename decl.top_decl_owner)
|
27 |
|
|
;
|
28 |
|
|
assert false
|
29 |
|
|
else
|
30 |
|
|
assert false (* shall not happen *)
|
31 |
|
|
|
32 |
|
|
|
33 |
|
|
|
34 |
|
|
|
35 |
|
|
(* Local Variables: *)
|
36 |
|
|
(* compile-command: "make -C ../.." *)
|
37 |
|
|
(* End: *)
|
38 |
|
|
|