Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/vis12-cl/src/compiler/c-util/gen-library-interface.sml
ViewVC logotype

Diff of /branches/vis12-cl/src/compiler/c-util/gen-library-interface.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 3092, Tue Mar 17 20:02:38 2015 UTC revision 3093, Wed Mar 18 01:56:17 2015 UTC
# Line 27  Line 27 
27    
28      structure Ty = TreeIL.Ty      structure Ty = TreeIL.Ty
29      structure CL = CLang      structure CL = CLang
30      structure N = CNames      structure RN = RuntimeNames
31      structure PrC = PrintAsC      structure PrC = PrintAsC
32    
33      val nrrdPtrTy = CL.T_Ptr(CL.T_Named "Nrrd")      val nrrdPtrTy = CL.T_Ptr(CL.T_Named "Nrrd")
# Line 49  Line 49 
49                    file = OS.Path.joinBaseExt{base = #outBase props, ext = SOME "h"}                    file = OS.Path.joinBaseExt{base = #outBase props, ext = SOME "h"}
50                  }                  }
51          (* the world pointer type *)          (* the world pointer type *)
52            val worldPtrTy = N.worldPtrTy tgt            val worldPtrTy = RN.worldPtrTy props
53          (* create decls for an input variable *)          (* create decls for an input variable *)
54            fun mkInputDecls (gv, name, desc, optDflt) = let            fun mkInputDecls (gv, name, desc, optDflt) = let
55                  val ty = TreeIL.GlobalVar.ty gv                  val ty = TreeIL.GlobalVar.ty gv
# Line 59  Line 59 
59                         of NONE => []                         of NONE => []
60                          | SOME desc => [                          | SOME desc => [
61                                CL.D_Var(["extern"], CL.T_Ptr(CL.T_Named "const char"),                                CL.D_Var(["extern"], CL.T_Ptr(CL.T_Named "const char"),
62                                  N.inputDesc(props, name), NONE)                                  RN.inputDesc(props, name), NONE)
63                              ]                              ]
64                        (* end case *))                        (* end case *))
65                  val getDcl = if Option.isSome optDflt                  val getDcl = if Option.isSome optDflt
66                          then let                          then let
67                            val name = N.inputGet(props, name)                            val name = RN.inputGet(props, name)
68                          (* convert the input type to a by-reference C type *)                          (* convert the input type to a by-reference C type *)
69                            val outTy = (case ty                            val outTy = (case ty
70                                   of Ty.BoolTy => CL.T_Ptr(trType ty)                                   of Ty.BoolTy => CL.T_Ptr(trType ty)
# Line 88  Line 88 
88                      (* prototypes for setting an image or dynamic sequence from a nrrd *)                      (* prototypes for setting an image or dynamic sequence from a nrrd *)
89                        fun loadPrototypes () = [                        fun loadPrototypes () = [
90                                CL.D_Proto(                                CL.D_Proto(
91                                  [], CL.boolTy, N.inputSetByName(props, name),                                  [], CL.boolTy, RN.inputSetByName(props, name),
92                                  [wrldParam, CL.PARAM(["const"], CL.charPtr, "s")]),                                  [wrldParam, CL.PARAM(["const"], CL.charPtr, "s")]),
93                                CL.D_Proto(                                CL.D_Proto(
94                                  [], CL.boolTy, N.inputSet(props, name),                                  [], CL.boolTy, RN.inputSet(props, name),
95                                  [wrldParam, CL.PARAM([], nrrdPtrTy, "data")])                                  [wrldParam, CL.PARAM([], nrrdPtrTy, "data")])
96                              ]                              ]
97                        in                        in
# Line 100  Line 100 
100                            | Ty.DynSeqTy _ => loadPrototypes()                            | Ty.DynSeqTy _ => loadPrototypes()
101                            | _ => [                            | _ => [
102                                  CL.D_Proto(                                  CL.D_Proto(
103                                    [], CL.boolTy, N.inputSet(props, name),                                    [], CL.boolTy, RN.inputSet(props, name),
104                                    [wrldParam, CL.PARAM([], trType ty, "v")])                                    [wrldParam, CL.PARAM([], trType ty, "v")])
105                                ]                                ]
106                          (* end case *)                          (* end case *)
# Line 111  Line 111 
111          (* create a decl for an output variable *)          (* create a decl for an output variable *)
112            fun mkGetDecl snapshot (Ty.DynSeqTy _, name) = [            fun mkGetDecl snapshot (Ty.DynSeqTy _, name) = [
113                    CL.D_Proto(                    CL.D_Proto(
114                      [], CL.boolTy, (if snapshot then N.snapshotGet else N.outputGet)(props, name),                      [], CL.boolTy, (if snapshot then RN.snapshotGet else RN.outputGet)(props, name),
115                      [CL.PARAM([], worldPtrTy, "wrld"), CL.PARAM([], nrrdPtrTy, "lengths"), CL.PARAM([], nrrdPtrTy, "data")])                      [CL.PARAM([], worldPtrTy, "wrld"), CL.PARAM([], nrrdPtrTy, "lengths"), CL.PARAM([], nrrdPtrTy, "data")])
116                  ]                  ]
117              | mkGetDecl snapshot (_, name) = [              | mkGetDecl snapshot (_, name) = [
118                    CL.D_Proto(                    CL.D_Proto(
119                      [], CL.boolTy, (if snapshot then N.snapshotGet else N.outputGet)(props, name),                      [], CL.boolTy, (if snapshot then RN.snapshotGet else RN.outputGet)(props, name),
120                      [CL.PARAM([], worldPtrTy, "wrld"), CL.PARAM([], nrrdPtrTy, "data")])                      [CL.PARAM([], worldPtrTy, "wrld"), CL.PARAM([], nrrdPtrTy, "data")])
121                  ]                  ]
122            val placeholders = [            val placeholders = [

Legend:
Removed from v.3092  
changed lines
  Added in v.3093

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0