Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/branches/SMLNJ/src/MLRISC/mltree/labels.sml
ViewVC logotype

Annotation of /sml/branches/SMLNJ/src/MLRISC/mltree/labels.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 245 - (view) (download)

1 : monnier 245 (* labels.sml
2 :     *
3 :     * COPYRIGHT (c) 1995 AT&T Bell Laboratories.
4 :     *
5 :     *)
6 :    
7 :     signature LABEL =
8 :     sig
9 :     datatype label = Label of {id : int, addr : int ref, name:string option}
10 :    
11 :     val newLabel : string -> label
12 :     val nameOf : label -> string
13 :     val id : label -> int
14 :     val addrOf : label -> int
15 :     val reset : unit -> unit
16 :     val setAddr : label * int -> unit
17 :     end
18 :    
19 :    
20 :     structure Label : LABEL =
21 :     struct
22 :     datatype label = Label of {id:int, addr:int ref, name:string option}
23 :    
24 :     val cnt = ref 0
25 :    
26 :     fun new name = Label{id= !cnt, addr=ref 0, name=name}
27 :     before (cnt := !cnt + 1)
28 :     fun newLabel "" = new NONE
29 :     | newLabel name = new(SOME name)
30 :     fun nameOf(Label{id,name=NONE,...}) = "LL" ^ Int.toString id
31 :     | nameOf(Label{name=SOME lab, ...}) = lab
32 :     fun id(Label{id,...}) = id
33 :     fun addrOf(Label{addr,...}) = !addr
34 :     fun setAddr(Label{addr,...},n) = addr := n
35 :     fun reset() = cnt := 0
36 :     end
37 :    
38 :    
39 :     (*
40 :     * $Log: labels.sml,v $
41 :     * Revision 1.1.1.1 1998/04/08 18:39:02 george
42 :     * Version 110.5
43 :     *
44 :     *)

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