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

SCM Repository

[diderot] Annotation of /branches/vis12/src/compiler/inputs/inputs.sml
ViewVC logotype

Annotation of /branches/vis12/src/compiler/inputs/inputs.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3291 - (view) (download)

1 : jhr 2011 (* inputs.sml
2 :     *
3 : jhr 3291 * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
4 :     *
5 :     * COPYRIGHT (c) 2015 The University of Chicago
6 : jhr 2011 * All rights reserved.
7 :     *
8 :     * Common representation for tracking inputs through the passes of the compiler.
9 :     *)
10 :    
11 :     structure Inputs : sig
12 :    
13 : jhr 2813 datatype init_from_nrrd
14 :     = DynSeq of string
15 : jhr 2814 | Proxy of string * ImageInfo.info (* input image specified by proxy *)
16 :     | Image of ImageInfo.info (* input image w/o proxy *)
17 : jhr 2011
18 :     datatype 'ty input = INP of {
19 : jhr 2814 ty : 'ty,
20 :     name : string,
21 :     desc : string option,
22 :     init : init_from_nrrd option
23 : jhr 2011 }
24 :    
25 :     val same : 'a input * 'a input -> bool
26 :    
27 :     val hash : 'a input -> word
28 :    
29 : jhr 2813 val initToString : init_from_nrrd -> string
30 : jhr 2011
31 :     val toString : 'ty input -> string
32 :    
33 :     val imageInfo : 'ty input -> ImageInfo.info option
34 :    
35 :     (* type conversion *)
36 :     val map : ('a -> 'b) -> 'a input -> 'b input
37 :    
38 :     end = struct
39 :    
40 : jhr 2813 datatype init_from_nrrd
41 :     = DynSeq of string
42 : jhr 2814 | Proxy of string * ImageInfo.info (* input image specified by proxy *)
43 :     | Image of ImageInfo.info (* input image w/o proxy *)
44 : jhr 2011
45 :     datatype 'ty input = INP of {
46 : jhr 2814 ty : 'ty,
47 :     name : string,
48 :     desc : string option,
49 :     init : init_from_nrrd option
50 : jhr 2011 }
51 :    
52 :     fun same (INP{name=n1, ...}, INP{name=n2, ...}) = (n1 = n2)
53 :    
54 :     fun hash (INP{name, ...}) = HashString.hashString name
55 :    
56 : jhr 2813 fun initToString (DynSeq name) = String.concat["load(\"", name, "\")"]
57 :     | initToString (Proxy(name, _)) = String.concat["image(\"", name, "\")"]
58 :     | initToString (Image info) = ImageInfo.toString info
59 : jhr 2011
60 :     fun toString (INP{name, desc=NONE, init=NONE, ...}) = name
61 :     | toString (INP{name, desc=SOME desc, init=NONE, ...}) =
62 : jhr 2814 String.concat[name, "(\"", String.toString desc, "\""]
63 : jhr 2011 | toString (INP{name, desc=NONE, init=SOME v, ...}) =
64 : jhr 2814 String.concat[name, " = ", initToString v]
65 : jhr 2011 | toString (INP{name, desc=SOME desc, init=SOME v, ...}) =
66 : jhr 2814 String.concat[name, "(\"", String.toString desc, "\") = ", initToString v]
67 : jhr 2011
68 : jhr 2056 fun imageInfo (INP{init=SOME(Proxy(_, info)), ...}) = SOME info
69 : jhr 2011 | imageInfo (INP{init=SOME(Image info), ...}) = SOME info
70 : jhr 2056 | imageInfo _ = NONE
71 : jhr 2011
72 :     (* type conversion *)
73 :     fun map f (INP{ty, name, desc, init}) = INP{ty = f ty, name = name, desc = desc, init = init}
74 :    
75 :     end

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