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-inputs.sml
ViewVC logotype

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

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

revision 1814, Sun Apr 8 15:44:36 2012 UTC revision 1815, Tue Apr 10 11:52:06 2012 UTC
# Line 61  Line 61 
61                        end                        end
62  *)  *)
63    
64      fun genRegisterInputs (tgt : target_desc, inputs) = let      fun genRegisterInputs (tgt, inputs) = let
           val prefix = #namespace tgt  
65          (* the world pointer type *)          (* the world pointer type *)
66            val worldPtrTy = CL.T_Ptr(CL.T_Named(prefix ^ "World_t"))            val worldPtrTy = CL.T_Ptr(CL.T_Named(N.worldTy tgt))
67            in            in
68              CL.D_Func(              CL.D_Func(
69                [], CL.voidTy, N.registerOpts,                [], CL.voidTy, N.registerOpts,
# Line 94  Line 93 
93            end            end
94    
95    (* for each input variable we generate two or three top-level declaraions *)    (* for each input variable we generate two or three top-level declaraions *)
96      fun genInputFuns (tgt : target_desc, inputs) = let      fun genInputFuns (tgt, inputs) = let
           val prefix = #namespace tgt  
97          (* the world pointer type *)          (* the world pointer type *)
98            val worldPtrTy = CL.T_Ptr(CL.T_Named(prefix ^ "World_t"))            val worldPtrTy = CL.T_Ptr(CL.T_Named(N.worldTy tgt))
99            val wrldParam = CL.PARAM([], worldPtrTy, "wrld")            val wrldParam = CL.PARAM([], worldPtrTy, "wrld")
100          (* create decls for an input variable *)          (* create decls for an input variable *)
101            fun mkInputDecls (ty, name, desc, hasDflt) = let            fun mkInputDecls (ty, name, desc, hasDflt) = let
# Line 106  Line 104 
104                          then []                          then []
105                          else [                          else [
106                              CL.D_Var([], CL.T_Ptr(CL.T_Named "const char"),                              CL.D_Var([], CL.T_Ptr(CL.T_Named "const char"),
107                                concat[prefix, name, "Desc"],                                N.inputDesc(tgt, name),
108                                SOME(CL.I_Exp(CL.mkStr desc)))                                SOME(CL.I_Exp(CL.mkStr desc)))
109                            ]                            ]
110                  val getDcl = if hasDflt                  val getDcl = if hasDflt
111                          then let                          then let
112                            val getName = concat[prefix, name, "Get"]                            val getName = N.inputGet(tgt, name)
113                          (* convert the input type to a by-reference C type *)                          (* convert the input type to a by-reference C type *)
114                            val outTy = (case ty                            val outTy = (case ty
115                                   of Ty.BoolTy => CL.T_Ptr(trType ty)                                   of Ty.BoolTy => CL.T_Ptr(trType ty)
# Line 134  Line 132 
132                              val dim = ImageInfo.dim info                              val dim = ImageInfo.dim info
133                              in [                              in [
134                                CL.D_Func(                                CL.D_Func(
135                                  [], CL.boolTy, concat[prefix, name, "SetByName"],                                  [], CL.boolTy, N.inputSetByName(tgt, name),
136                                  [wrldParam, CL.PARAM(["const"], CL.charPtr, "s")],                                  [wrldParam, CL.PARAM(["const"], CL.charPtr, "s")],
137                                  CL.mkBlock[                                  CL.mkBlock[
138  (* FIXME: we should also generate code to check that the loaded image has the right type, etc. *)  (* FIXME: we should also generate code to check that the loaded image has the right type, etc. *)
# Line 146  Line 144 
144                                            ]))))                                            ]))))
145                                    ]),                                    ]),
146                                CL.D_Func(                                CL.D_Func(
147                                  [], CL.boolTy, concat[prefix, name, "Set"],                                  [], CL.boolTy, N.inputSet(tgt, name),
148                                  [wrldParam, CL.PARAM([], nrrdPtrTy, "nin")],                                  [wrldParam, CL.PARAM([], nrrdPtrTy, "nin")],
149                                  CL.mkBlock[                                  CL.mkBlock[
150  (* FIXME: we should also generate code to check that the loaded image has the right type, etc. *)  (* FIXME: we should also generate code to check that the loaded image has the right type, etc. *)
# Line 161  Line 159 
159                          | Ty.DynSeqTy _ => raise Fail "dynamic input not supported yet"                          | Ty.DynSeqTy _ => raise Fail "dynamic input not supported yet"
160                          | _ => [                          | _ => [
161                                CL.D_Func(                                CL.D_Func(
162                                  [], CL.boolTy, concat[prefix, name, "Set"],                                  [], CL.boolTy, N.inputSet(tgt, name),
163                                  [wrldParam, CL.PARAM([], trType ty, "v")],                                  [wrldParam, CL.PARAM([], trType ty, "v")],
164                                  CL.mkBlock[                                  CL.mkBlock[
165                                      copy(ty, global name, CL.mkVar "v"),                                      copy(ty, global name, CL.mkVar "v"),

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

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