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

SCM Repository

[diderot] Annotation of /branches/vis15/src/compiler/common/int-lit.sml
ViewVC logotype

Annotation of /branches/vis15/src/compiler/common/int-lit.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 3348 - (view) (download)

1 : jhr 3348 (* int-lit.sml
2 :     *
3 :     * This code is part of the Diderot Project (http://diderot-language.cs.uchicago.edu)
4 :     *
5 :     * COPYRIGHT (c) 2015 The University of Chicago
6 :     * All rights reserved.
7 :     *)
8 :    
9 :     structure IntLit :> sig
10 :    
11 :     type t = IntInf.int
12 :    
13 :     (* arithmetic *)
14 :     val add : t * t -> t
15 :     val sub : t * t -> t
16 :     val mul : t * t -> t
17 :     val div : t * t -> t
18 :     val mod : t * t -> t
19 :     val neg : t -> t
20 :    
21 :     (* range checks *)
22 :     val isInt32 : t -> bool (* representable in 32-bits *)
23 :     val isInt64 : t -> bool (* representable in 64-bits *)
24 :    
25 :     (* equality, comparisons, and hashing functions *)
26 :     val same : (t * t) -> bool
27 :     val compare : (t * t) -> order
28 :     val hash : t -> word
29 :    
30 :     val toString : t -> string
31 :    
32 :     end = struct
33 :    
34 :     type t = IntInf.int
35 :    
36 :     (* arithmetic *)
37 :     val add = IntInf.+
38 :     val sub = IntInf.-
39 :     val mul = IntInf.*
40 :     val op div = IntInf.quot
41 :     val op mod = IntInf.rem
42 :     val neg = IntInf.~
43 :    
44 :     (* range checks *)
45 :     fun isInt32 (n : IntInf.int) =
46 :     (~0x80000000 <= n) andalso (n < 0x100000000)
47 :     fun isInt64 (n : IntInf.int) =
48 :     (~0x8000000000000000 <= n) andalso (n < 0x10000000000000000)
49 :    
50 :     (* equality, comparisons, and hashing functions *)
51 :     fun same (a : IntInf.int, b) = (a = b)
52 :     val compare = IntInf.compare
53 :     fun hash i = Word.fromInt(IntInf.toInt(IntInf.andb(i, 0xfffffff)))
54 :    
55 :     fun toString i = if (i < 0)
56 :     then "-" ^ IntInf.toString(IntInf.~ i)
57 :     else IntInf.toString i
58 :    
59 :     end

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