summaryrefslogtreecommitdiff
path: root/progs/lib/cl/logop.hs
blob: 1d0f9ba40a932a030cfdaf358af490a3cc19be1c (about) (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
-- logop.hs -- logical operations on numbers
--
-- author :  Sandra Loosemore
-- date   :  19 June 1993
--

module LogOp where

import LogOpPrims  -- from logop-prims.hi

class LogOperand a where
  logior	:: a -> a -> a
  logxor	:: a -> a -> a
  logand	:: a -> a -> a
  logeqv	:: a -> a -> a
  lognand	:: a -> a -> a
  lognor	:: a -> a -> a
  logandc1	:: a -> a -> a
  logandc2	:: a -> a -> a
  logorc1	:: a -> a -> a
  logorc2	:: a -> a -> a
  lognot	:: a -> a
  logtest	:: a -> a -> a
  logbitp	:: Int -> a -> a
  ash		:: a -> Int -> a
  logcount	:: a -> Int
  integerLength :: a -> Int

instance LogOperand Integer where
  logior	= logiorInteger
  logxor	= logxorInteger
  logand	= logandInteger
  logeqv	= logeqvInteger
  lognand	= lognandInteger
  lognor	= lognorInteger
  logandc1	= logandc1Integer
  logandc2	= logandc2Integer
  logorc1	= logorc1Integer
  logorc2	= logorc2Integer
  lognot	= lognotInteger
  logtest	= logtestInteger
  logbitp	= logbitpInteger
  ash		= ashInteger
  logcount	= logcountInteger
  integerLength	= integerLengthInteger

instance LogOperand Int where
  logior	= logiorInt
  logxor	= logxorInt
  logand	= logandInt
  logeqv	= logeqvInt
  lognand	= lognandInt
  lognor	= lognorInt
  logandc1	= logandc1Int
  logandc2	= logandc2Int
  logorc1	= logorc1Int
  logorc2	= logorc2Int
  lognot	= lognotInt
  logtest	= logtestInt
  logbitp	= logbitpInt
  ash		= ashInt
  logcount	= logcountInt
  integerLength	= integerLengthInt