module Data.RadixNTree.Word8.Common
  ( Lookup (..)
  , Lookup1 (..)

  , Openness (..)
  ) where

import           Data.RadixNTree.Word8.Key



-- | Key together with the value.
data Lookup a = Lookup !Build a
                deriving Int -> Lookup a -> ShowS
[Lookup a] -> ShowS
Lookup a -> String
(Int -> Lookup a -> ShowS)
-> (Lookup a -> String) -> ([Lookup a] -> ShowS) -> Show (Lookup a)
forall a. Show a => Int -> Lookup a -> ShowS
forall a. Show a => [Lookup a] -> ShowS
forall a. Show a => Lookup a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> Lookup a -> ShowS
showsPrec :: Int -> Lookup a -> ShowS
$cshow :: forall a. Show a => Lookup a -> String
show :: Lookup a -> String
$cshowList :: forall a. Show a => [Lookup a] -> ShowS
showList :: [Lookup a] -> ShowS
Show

-- | Key together with the value.
data Lookup1 a = Lookup1 !Build1 a
                 deriving Int -> Lookup1 a -> ShowS
[Lookup1 a] -> ShowS
Lookup1 a -> String
(Int -> Lookup1 a -> ShowS)
-> (Lookup1 a -> String)
-> ([Lookup1 a] -> ShowS)
-> Show (Lookup1 a)
forall a. Show a => Int -> Lookup1 a -> ShowS
forall a. Show a => [Lookup1 a] -> ShowS
forall a. Show a => Lookup1 a -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall a. Show a => Int -> Lookup1 a -> ShowS
showsPrec :: Int -> Lookup1 a -> ShowS
$cshow :: forall a. Show a => Lookup1 a -> String
show :: Lookup1 a -> String
$cshowList :: forall a. Show a => [Lookup1 a] -> ShowS
showList :: [Lookup1 a] -> ShowS
Show



-- | Whether the endpoint itself is included in the interval.
data Openness = Open   -- ^ Excluding the point.
              | Closed -- ^ Including the point.
                deriving Int -> Openness -> ShowS
[Openness] -> ShowS
Openness -> String
(Int -> Openness -> ShowS)
-> (Openness -> String) -> ([Openness] -> ShowS) -> Show Openness
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> Openness -> ShowS
showsPrec :: Int -> Openness -> ShowS
$cshow :: Openness -> String
show :: Openness -> String
$cshowList :: [Openness] -> ShowS
showList :: [Openness] -> ShowS
Show