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

SCM Repository

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

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

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

revision 1812, Sat Apr 7 21:33:09 2012 UTC revision 1815, Tue Apr 10 11:52:06 2012 UTC
# Line 42  Line 42 
42              String.concat["_", CharVector.map tr base, "_H_"]              String.concat["_", CharVector.map tr base, "_H_"]
43            end            end
44    
45      fun gen {tgt : TargetUtil.target_desc, inputs, outputs} = let      fun gen {tgt, inputs, outputs} = let
46            val filename = OS.Path.joinDirFile{            val filename = OS.Path.joinDirFile{
47                    dir = #outDir tgt,                    dir = #outDir tgt,
48                    file = OS.Path.joinBaseExt{base = #outBase tgt, ext = SOME "h"}                    file = OS.Path.joinBaseExt{base = #outBase tgt, ext = SOME "h"}
49                  }                  }
           val prefix = #namespace tgt  
50          (* the world pointer type *)          (* the world pointer type *)
51            val worldPtrTy = CL.T_Ptr(CL.T_Named(prefix ^ "World_t"))            val worldPtrTy = CL.T_Ptr(CL.T_Named(N.worldTy tgt))
52          (* create decls for an input variable *)          (* create decls for an input variable *)
53            fun mkInputDecls (ty, name, desc, hasDflt) = let            fun mkInputDecls (ty, name, desc, hasDflt) = let
54                  val wrldParam = CL.PARAM([], worldPtrTy, "wrld")                  val wrldParam = CL.PARAM([], worldPtrTy, "wrld")
# Line 58  Line 57 
57                          then []                          then []
58                          else [                          else [
59                              CL.D_Var(["extern"], CL.T_Ptr(CL.T_Named "const char"),                              CL.D_Var(["extern"], CL.T_Ptr(CL.T_Named "const char"),
60                                concat[prefix, name, "Desc"], NONE)                                N.inputDesc(tgt, name), NONE)
61                            ]                            ]
62                  val getDcl = if hasDflt                  val getDcl = if hasDflt
63                          then let                          then let
64                            val name = concat[prefix, name, "Get"]                            val name = N.inputGet(tgt, name)
65                          (* convert the input type to a by-reference C type *)                          (* convert the input type to a by-reference C type *)
66                            val outTy = (case ty                            val outTy = (case ty
67                                   of Ty.BoolTy => CL.T_Ptr(trType ty)                                   of Ty.BoolTy => CL.T_Ptr(trType ty)
# Line 82  Line 81 
81                  val setDcl = (case ty                  val setDcl = (case ty
82                         of Ty.ImageTy _ => [                         of Ty.ImageTy _ => [
83                                CL.D_Proto(                                CL.D_Proto(
84                                  [], CL.boolTy, concat[prefix, name, "SetByName"],                                  [], CL.boolTy, N.inputSetByName(tgt, name),
85                                  [wrldParam, CL.PARAM(["const"], CL.charPtr, "s")]),                                  [wrldParam, CL.PARAM(["const"], CL.charPtr, "s")]),
86                                CL.D_Proto(                                CL.D_Proto(
87                                  [], CL.boolTy, concat[prefix, name, "Set"],                                  [], CL.boolTy, N.inputSet(tgt, name),
88                                  [wrldParam, CL.PARAM([], nrrdPtrTy, "data")])                                  [wrldParam, CL.PARAM([], nrrdPtrTy, "data")])
89                              ]                              ]
90                          | Ty.DynSeqTy _ => raise Fail "dynamic input not supported yet"                          | Ty.DynSeqTy _ => raise Fail "dynamic input not supported yet"
91                          | _ => [                          | _ => [
92                                CL.D_Proto(                                CL.D_Proto(
93                                  [], CL.boolTy, concat[prefix, name, "Set"],                                  [], CL.boolTy, N.inputSet(tgt, name),
94                                  [wrldParam, CL.PARAM([], trType ty, "v")])                                  [wrldParam, CL.PARAM([], trType ty, "v")])
95                              ]                              ]
96                        (* end case *))                        (* end case *))
# Line 101  Line 100 
100          (* create a decl for an output variable *)          (* create a decl for an output variable *)
101            fun mkGetDecl (Ty.DynSeqTy _, name) = [            fun mkGetDecl (Ty.DynSeqTy _, name) = [
102                    CL.D_Proto(                    CL.D_Proto(
103                      [], CL.boolTy, concat[prefix, name, "Out"],                      [], CL.boolTy, N.outputGet(tgt, name),
104                      [CL.PARAM([], worldPtrTy, "wrld"), CL.PARAM([], nrrdPtrTy, "lengths"), CL.PARAM([], nrrdPtrTy, "data")])                      [CL.PARAM([], worldPtrTy, "wrld"), CL.PARAM([], nrrdPtrTy, "lengths"), CL.PARAM([], nrrdPtrTy, "data")])
105                  ]                  ]
106              | mkGetDecl (_, name) = [              | mkGetDecl (_, name) = [
107                    CL.D_Proto(                    CL.D_Proto(
108                      [], CL.boolTy, concat[prefix, name, "Out"],                      [], CL.boolTy, N.outputGet(tgt, name),
109                      [CL.PARAM([], worldPtrTy, "wrld"), CL.PARAM([], nrrdPtrTy, "data")])                      [CL.PARAM([], worldPtrTy, "wrld"), CL.PARAM([], nrrdPtrTy, "data")])
110                  ]                  ]
111            val placeholders = [            val placeholders = [
# Line 115  Line 114 
114                    ("DIDEROT_TARGET", TargetUtil.targetDef tgt),                    ("DIDEROT_TARGET", TargetUtil.targetDef tgt),
115                    ("HDRFILE", filename),                    ("HDRFILE", filename),
116                    ("HDR_DEFINE", mkSymbol(#outBase tgt)),                    ("HDR_DEFINE", mkSymbol(#outBase tgt)),
117                    ("PREFIX", prefix),                    ("PREFIX", #namespace tgt),
118                    ("SRCFILE", #srcFile tgt)                    ("SRCFILE", #srcFile tgt)
119                  ]                  ]
120            val outStrm = TextIO.openOut filename            val outStrm = TextIO.openOut filename

Legend:
Removed from v.1812  
changed lines
  Added in v.1815

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