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

SCM Repository

[diderot] Diff of /branches/vis15/src/compiler/cxx-util/type-to-cxx.sml
ViewVC logotype

Diff of /branches/vis15/src/compiler/cxx-util/type-to-cxx.sml

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

revision 4192, Tue Jul 12 22:13:25 2016 UTC revision 4193, Wed Jul 13 02:54:21 2016 UTC
# Line 21  Line 21 
21    
22      val dynseqTy : CodeGenEnv.t * TreeTypes.t -> CLang.ty      val dynseqTy : CodeGenEnv.t * TreeTypes.t -> CLang.ty
23    
24        val imageTy : CodeGenEnv.t * ImageInfo.info -> CLang.ty
25    
26    end = struct    end = struct
27    
28      structure Ty = TreeTypes      structure Ty = TreeTypes
# Line 30  Line 32 
32    
33      datatype namespace = NSDiderot | NSProgram | NSTopLevel      datatype namespace = NSDiderot | NSProgram | NSTopLevel
34    
35      (* translate to C++ image type *)
36        fun trImageTy mk (env, info) = let
37              val realTy = Env.realTy env
38              val sampleTy = (case ImageInfo.sampleTy info
39                     of SOME rty => CL.T_Num rty
40                      | NONE => realTy
41                    (* end case *))
42              in
43                mk (
44                  concat["image", Int.toString(ImageInfo.dim info), "d"],
45                  [realTy, sampleTy])
46              end
47    
48      fun trQType (env, ns, ty) = let      fun trQType (env, ns, ty) = let
49            val progNS = #namespace(Env.target env)            val progNS = #namespace(Env.target env)
50            fun diderotQ s = (case ns            fun diderotQ s = (case ns
# Line 56  Line 71 
71                  | (Ty.TupleTy tys) => raise Fail "FIXME: TupleTy"                  | (Ty.TupleTy tys) => raise Fail "FIXME: TupleTy"
72                  | (Ty.SeqTy(ty, NONE)) => diderotTQ("dynseq", [tr ty])                  | (Ty.SeqTy(ty, NONE)) => diderotTQ("dynseq", [tr ty])
73                  | (Ty.SeqTy(ty, SOME n)) => CL.T_Array(tr ty, SOME n)                  | (Ty.SeqTy(ty, SOME n)) => CL.T_Array(tr ty, SOME n)
74                  | (Ty.ImageTy info) =>                  | (Ty.ImageTy info) => trImageTy diderotTQ (env, info)
                     diderotTQ (  
                       concat["image", Int.toString(ImageInfo.dim info), "d"],  
                       [Env.realTy env])  
75                  | (Ty.StrandTy name) => programQ("strand_" ^ Atom.toString name)                  | (Ty.StrandTy name) => programQ("strand_" ^ Atom.toString name)
76                (* end case *))                (* end case *))
77            in            in
78              tr ty              tr ty
79            end            end
80    
81        val imageTy = trImageTy (fn (ty, args) => CL.T_Template("diderot::" ^ ty, args))
82    
83      fun trType (env, ty) = (case ty      fun trType (env, ty) = (case ty
84             of Ty.BoolTy => CL.boolTy             of Ty.BoolTy => CL.boolTy
85              | Ty.StringTy => CL.T_Named "std::string"              | Ty.StringTy => CL.T_Named "std::string"
# Line 78  Line 92 
92              | (Ty.TupleTy tys) => raise Fail "FIXME: TupleTy"              | (Ty.TupleTy tys) => raise Fail "FIXME: TupleTy"
93              | (Ty.SeqTy(ty, NONE)) => dynseqTy (env, ty)              | (Ty.SeqTy(ty, NONE)) => dynseqTy (env, ty)
94              | (Ty.SeqTy(ty, SOME n)) => CL.T_Array(trType(env, ty), SOME n)              | (Ty.SeqTy(ty, SOME n)) => CL.T_Array(trType(env, ty), SOME n)
95              | (Ty.ImageTy info) =>              | (Ty.ImageTy info) => imageTy (env, info)
                 CL.T_Template(  
                   concat["diderot::image", Int.toString(ImageInfo.dim info), "d"],  
                   [Env.realTy env])  
96              | (Ty.StrandTy name) => CL.T_Named("strand_" ^ Atom.toString name)              | (Ty.StrandTy name) => CL.T_Named("strand_" ^ Atom.toString name)
97            (* end case *))            (* end case *))
98    

Legend:
Removed from v.4192  
changed lines
  Added in v.4193

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