File:  [Research Unix] / researchv10no / cmd / sml / src / coder / basecoder.sml
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:35 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv10, HEAD
researchv10 Norman

(* Copyright 1989 by AT&T Bell Laboratories *)
(* basecoder.sml
 *
 * J.H. Reppy
 * Cornell University
 * Ithaca, NY 14850
 * [email protected]
 *
 * HISTORY:
 *   11/20/89  created
 *)

signature BASECODER =
sig
    datatype label = Label of {id : int, addr : int ref}

    val newLabel : unit -> label
    val addrOf : label -> int
    val nameOf : label -> string

end (* signature BASECODER *)


structure BaseCoder : BASECODER =
struct

    datatype label = Label of {id : int, addr : int ref}

    local
      val cnt = ref 0
    in
    fun nextId () = (!cnt before ((inc cnt) handle Overflow => cnt := 0))
    end

    fun newLabel () = Label{id= nextId(), addr= ref 0}

    fun addrOf (Label{addr, ...}) = !addr
    fun nameOf (Label{id, ...}) = "L" ^ (makestring id)

end (* structure BaseCoder *)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.