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/tree-to-c.sml
ViewVC logotype

Diff of /branches/vis12-cl/src/compiler/c-util/tree-to-c.sml

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

revision 2051, Mon Oct 22 14:14:10 2012 UTC revision 2052, Mon Oct 22 20:27:12 2012 UTC
# Line 563  Line 563 
563                    | IL.S_Save([x], exp) => trAssign (env, VarToC.lvalueStateVar x, exp)                    | IL.S_Save([x], exp) => trAssign (env, VarToC.lvalueStateVar x, exp)
564                    | IL.S_Save(xs, exp) =>                    | IL.S_Save(xs, exp) =>
565                        trMultiAssign (env, List.map VarToC.lvalueStateVar xs, exp)                        trMultiAssign (env, List.map VarToC.lvalueStateVar xs, exp)
566                    | IL.S_LoadNrrd(lhs, Ty.DynSeqTy ty, nrrd) => let                    | IL.S_LoadNrrd(lhs, Ty.DynSeqTy ty, nrrd) =>
567                        val lhs = VarToC.lvalueVar (env, lhs)                        [GenLoadNrrd.loadSeq (VarToC.lvalueVar (env, lhs), ty, CL.mkStr nrrd)]
                       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[])  
                                   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  
568                    | IL.S_LoadNrrd(lhs, Ty.ImageTy info, nrrd) =>                    | IL.S_LoadNrrd(lhs, Ty.ImageTy info, nrrd) =>
569                        [GenLoadNrrd.loadImage (VarToC.lvalueVar (env, lhs), info, CL.E_Str nrrd)]                        [GenLoadNrrd.loadImage (VarToC.lvalueVar (env, lhs), info, CL.E_Str nrrd)]
570                    | IL.S_Input(_, _, _, NONE) => []                    | IL.S_Input(_, _, _, NONE) => []

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

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