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/trunk/src/system/Basis/Implementation/word31.sml
ViewVC logotype

Annotation of /sml/trunk/src/system/Basis/Implementation/word31.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1183 - (view) (download)

1 : monnier 416 (* word31.sml
2 :     *
3 :     * COPYRIGHT (c) 1995 AT&T Bell Laboratories.
4 :     *
5 :     *)
6 :    
7 :     structure Word31Imp : WORD =
8 :     struct
9 :     infix 7 * div mod
10 :     infix 6 + -
11 :     infix 4 > < >= <=
12 :    
13 :     structure W31 = InlineT.Word31
14 :     structure LW = Word32
15 :    
16 :     type word = word
17 :    
18 :     val wordSize = 31
19 :    
20 :     val toLargeWord : word -> LargeWord.word = W31.toLargeWord
21 :     val toLargeWordX : word -> LargeWord.word = W31.toLargeWordX
22 :     val fromLargeWord : LargeWord.word -> word = W31.fromLargeWord
23 :    
24 :     val toLargeInt : word -> LargeInt.int = W31.toLargeInt
25 :     val toLargeIntX : word -> LargeInt.int = W31.toLargeIntX
26 :     val fromLargeInt : LargeInt.int -> word = W31.fromLargeInt
27 :    
28 :     val toInt : word -> int = W31.toInt
29 :     val toIntX : word -> int = W31.toIntX
30 :     val fromInt : int -> word = W31.fromInt
31 :    
32 :     val orb : word * word -> word = W31.orb
33 :     val xorb : word * word -> word = W31.xorb
34 :     val andb : word * word -> word = W31.andb
35 :     val notb : word -> word = W31.notb
36 :    
37 :     val op * : word * word -> word = W31.*
38 :     val op + : word * word -> word = W31.+
39 :     val op - : word * word -> word = W31.-
40 :     val op div : word * word -> word = W31.div
41 : blume 1183 val op mod : word * word -> word = W31.mod
42 : monnier 416
43 :     val << : word * word -> word = W31.chkLshift
44 :     val >> : word * word -> word = W31.chkRshiftl
45 :     val ~>> : word * word -> word = W31.chkRshift
46 :    
47 :     fun compare (w1, w2) =
48 :     if (W31.<(w1, w2)) then LESS
49 :     else if (W31.>(w1, w2)) then GREATER
50 :     else EQUAL
51 :     val op > : word * word -> bool = W31.>
52 :     val op >= : word * word -> bool = W31.>=
53 :     val op < : word * word -> bool = W31.<
54 :     val op <= : word * word -> bool = W31.<=
55 :    
56 : blume 1183 val min : word * word -> word = W31.min
57 :     val max : word * word -> word = W31.max
58 : monnier 416
59 :     fun fmt radix = (NumFormat.fmtWord radix) o W31.toLargeWord
60 :     val toString = fmt StringCvt.HEX
61 :    
62 :     fun scan radix = let
63 :     val scanLarge = NumScan.scanWord radix
64 :     fun scan getc cs = (case (scanLarge getc cs)
65 :     of NONE => NONE
66 :     | (SOME(w, cs')) => if InlineT.Word32.>(w, 0wx7FFFFFFF)
67 :     then raise Overflow
68 :     else SOME(W31.fromLargeWord w, cs')
69 :     (* end case *))
70 :     in
71 :     scan
72 :     end
73 :     val fromString = PreBasis.scanString (scan StringCvt.HEX)
74 :    
75 :     end (* structure Word31 *)
76 :    
77 :    

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