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

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

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

revision 2052, Mon Oct 22 20:27:12 2012 UTC revision 2053, Tue Oct 23 04:40:18 2012 UTC
# Line 22  Line 22 
22     *)     *)
23      val setImage : CLang.exp * ImageInfo.info * CLang.exp -> CLang.stm      val setImage : CLang.exp * ImageInfo.info * CLang.exp -> CLang.stm
24    
25        val loadSeqFromFile : CLang.exp * TreeIL.Ty.ty * CLang.exp -> CLang.stm
26      val loadSeq : CLang.exp * TreeIL.Ty.ty * CLang.exp -> CLang.stm      val loadSeq : CLang.exp * TreeIL.Ty.ty * CLang.exp -> CLang.stm
27    
28    end = struct    end = struct
# Line 53  Line 54 
54      val loadImage = doImage N.loadImage      val loadImage = doImage N.loadImage
55      val setImage = doImage N.setImage      val setImage = doImage N.setImage
56    
57      fun loadSeq (lhs, elemTy, nrrdFile) = let      fun doSeq loadFn (lhs, elemTy, arg) = let
58            val (nDims, dimInit, dimExp, elemTy) = (case elemTy            val (nDims, dimInit, dimExp, elemTy) = (case elemTy
59                   of Ty.TensorTy(dims as _::_) => let                   of Ty.TensorTy(dims as _::_) => let
60                        val nDims = List.length dims                        val nDims = List.length dims
# Line 69  Line 70 
70                    | Ty.SeqTy ty' => raise Fail "loading sequences of type not supported yet"                    | Ty.SeqTy ty' => raise Fail "loading sequences of type not supported yet"
71                    | _ => (0, [], CL.mkInt 0, elemTy)                    | _ => (0, [], CL.mkInt 0, elemTy)
72                  (* end case *))                  (* end case *))
           val loadFn = N.loadDynSeqFromFile elemTy  
73            in CL.mkBlock (            in CL.mkBlock (
74              dimInit @ [              dimInit @ [
75                  CL.mkAssign(                  CL.mkAssign(
76                    lhs,                    lhs,
77                    CL.E_Apply(loadFn, [                    CL.E_Apply(loadFn elemTy, [
78                        CL.mkCast(CL.T_Ptr(CL.T_Named "WorldPrefix_t"), CL.mkVar "wrld"),                        CL.mkCast(CL.T_Ptr(CL.T_Named "WorldPrefix_t"), CL.mkVar "wrld"),
79                        nrrdFile,                        arg,
80                        CL.mkInt(IntInf.fromInt nDims),                        CL.mkInt(IntInf.fromInt nDims),
81                        dimExp                        dimExp
82                      ])),                      ])),
# Line 86  Line 86 
86                ]                ]
87            ) end            ) end
88    
89    end      val loadSeqFromFile = doSeq N.loadDynSeqFromFile
90        val loadSeq = doSeq N.loadDynSeq
91    
 (*  
                   | IL.S_LoadNrrd(lhs, Ty.DynSeqTy ty, nrrd) => let  
                       val lhs = VarToC.lvalueVar (env, lhs)  
                       val (nDims, dimInit, dimExp, elemTy) = (case ty  
                              of Ty.TensorTy(dims as _::_) => let  
                                   val nDims = List.length dims  
                                   fun lp (_, [], init) = CL.I_Array(List.rev init)  
                                     | lp (i, d::dd, init) =  
                                         lp(i+1, dd, (i, CL.I_Exp(CL.mkInt(IntInf.fromInt d)))::init)  
                                   val dimInit = CL.mkDecl(  
                                         CL.T_Ptr(CL.T_Named "unsigned int"), "_dims",  
                                         SOME(lp(0, dims, [])))  
                                   in  
                                     (nDims, [dimInit], CL.mkVar "_dims", Ty.TensorTy[])  
92                                    end                                    end
                               | Ty.SeqTy ty' => raise Fail "type not supported yet"  
                               | _ => (0, [], CL.mkInt 0, ty)  
                             (* end case *))  
                       val loadFn = N.loadDynSeqFromFile elemTy  
                       in [CL.mkBlock (  
                         dimInit @ [  
                             CL.mkAssign(  
                               lhs,  
                               CL.E_Apply(loadFn, [  
                                   CL.mkCast(CL.T_Ptr(CL.T_Named "WorldPrefix_t"), CL.mkVar "wrld"),  
                                   CL.mkStr nrrd,  
                                   CL.mkInt(IntInf.fromInt nDims),  
                                   dimExp  
                                 ])),  
                             CL.mkIfThen(  
                               CL.mkBinOp(lhs, CL.#==, CL.mkInt 0),  
                               CL.mkReturn(SOME(CL.mkVar "true")))  
                           ]  
                       )] end  
 *)  

Legend:
Removed from v.2052  
changed lines
  Added in v.2053

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