{-# LANGUAGE GeneralizedNewtypeDeriving #-} -- ---------------------------------------------------------------------------- {- | Module : Holumbus.Index.Common.DocId Copyright : Copyright (C) 2011 Sebastian M. Schlatt, Timo B. Huebel, Uwe Schmidt License : MIT Maintainer : Timo B. Huebel (tbh@holumbus.org) Stability : experimental Portability: none portable The document identifier type DocId -} -- ---------------------------------------------------------------------------- module Holumbus.Index.Common.DocId where import Control.DeepSeq import Data.Binary ( Binary (..) ) import qualified Data.Binary as B import Data.Word ( Word64 ) import Text.XML.HXT.Core -- ------------------------------------------------------------ -- | The unique identifier of a document -- (created upon insertion into the document table). newtype DocId = DocId { theDocId :: Word64 } deriving (Eq, Ord, Enum) instance Show DocId where show = show . theDocId instance NFData DocId where rnf (DocId i) = rnf i instance Binary DocId where put = B.put . theDocId get = B.get >>= return . DocId incrDocId :: DocId -> DocId incrDocId = DocId . (1+) . theDocId nullDocId :: DocId nullDocId = DocId 0 firstDocId :: DocId firstDocId = DocId 1 mkDocId :: Word64 -> DocId mkDocId = DocId xpDocId :: PU DocId xpDocId = xpWrap (DocId, theDocId) xpPrim -- ------------------------------------------------------------