{-# LANGUAGE GeneralizedNewtypeDeriving #-} -- | Module contains definitions of pdf objects -- -- See PDF1.7:7.3 module Pdf.Core.Object ( Object(..) , Dict , Array , Stream(..) , Ref(..) , Name ) where import Pdf.Core.Name (Name) import Data.Int import Data.ByteString (ByteString) import Data.Scientific (Scientific) import Data.Vector (Vector) import Data.Hashable import Data.HashMap.Strict as HashMap -- | Dictionary type Dict = HashMap Name Object -- | An array type Array = Vector Object -- | Contains stream dictionary and an offset in file data Stream = S Dict Int64 deriving (Eq, Show) -- | Object reference, contains object index and generation data Ref = R Int Int deriving (Eq, Show, Ord) instance Hashable Ref where hashWithSalt salt (R a b) = hashWithSalt salt (a, b) -- | Any pdf object data Object = Number Scientific | Bool Bool | Name Name | Dict Dict | Array Array | String ByteString | Stream Stream | Ref Ref | Null deriving (Eq, Show)