module Text.XML.Pugi.Foreign.Types where
import Foreign.ForeignPtr
import Foreign.Ptr
import qualified Data.ByteString as S
data MutableFlag = Mutable | Immutable
data NodeKind = Element
| PCData
| CData
| Comment
| Pi
| Declaration
| Doctype
| Unknown
newtype Document_ (k :: NodeKind) (m :: MutableFlag) = Document (ForeignPtr (Document_ k m))
type Document = Document_ 'Unknown 'Immutable
type MutableDocument = Document_ 'Unknown 'Mutable
newtype Node_ (k :: NodeKind) (m :: MutableFlag) = Node (ForeignPtr (Node_ k m))
type Node = Node_ 'Unknown 'Immutable
type MutableNode k = Node_ k 'Mutable
newtype ParseResult = ParseResult (Ptr ParseResult)
newtype XPath (rt :: k) = XPath (ForeignPtr (XPath rt))
data NodeSet (m :: MutableFlag) = NodeSet Int (ForeignPtr (NodeSet m))
instance Show (NodeSet m) where
show (NodeSet i _) = "NodeSet " ++ show i ++ " items"
data Attr
data XNode
type Attribute = (S.ByteString, S.ByteString)
type XPathNode m = Either (Node_ 'Unknown m) Attribute