X-Git-Url: http://gitweb.michael.orlitzky.com/?p=hath.git;a=blobdiff_plain;f=src%2FOctet.hs;h=531d4d071f051e0124e57fa3417e167e8cb70542;hp=78413e619bf3035b33639aa78bf962d6ca5fea81;hb=942b8ef3bc5830ca0defa62342d55550aea59934;hpb=81f6f0ca67347de6b3e3f57b5b50bb543cc7c146 diff --git a/src/Octet.hs b/src/Octet.hs index 78413e6..531d4d0 100644 --- a/src/Octet.hs +++ b/src/Octet.hs @@ -78,6 +78,36 @@ instance Maskable Octet where apply_mask oct _ _ = oct +instance Ord Octet where + (Octet x1 x2 x3 x4 x5 x6 x7 x8) <= (Octet y1 y2 y3 y4 y5 y6 y7 y8) + | x1 > y1 = False + | x2 > y2 = False + | x3 > y3 = False + | x4 > y4 = False + | x5 > y5 = False + | x6 > y6 = False + | x7 > y7 = False + | x8 > y8 = False + | otherwise = True + + +instance Bounded Octet where + -- | The octet with the least possible value. + minBound = + Octet B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero + + -- | The octet with the greatest possible value. + maxBound = + Octet B.One B.One B.One B.One B.One B.One B.One B.One + + +instance Enum Octet where + -- We're supposed to throw a runtime error if you call (succ + -- maxBound), so the fromJust here doesn't introduce any additional + -- badness. + toEnum = fromJust . octet_from_int + fromEnum = octet_to_int + -- | Convert each bit to its integer value, and multiply by the -- appropriate power of two. Sum them up, and we should get an integer -- between 0 and 255. @@ -116,18 +146,6 @@ octet_from_string s = x:_ -> octet_from_int (fst x) --- | The octet with the least possible value. -min_octet :: Octet -min_octet = - Octet B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero - - --- | The octet with the greatest possible value. -max_octet :: Octet -max_octet = - Octet B.One B.One B.One B.One B.One B.One B.One B.One - - -- HUnit Tests test_octet_from_int1 :: Test