module Text.Sundown.Markdown.Foreign
( Callbacks
, Extensions (..)
, c_sd_markdown
) where
import Foreign
import Foreign.C.Types
import Text.Sundown.Buffer.Foreign
import Text.Sundown.Flag
data Callbacks
data Extensions = Extensions { extNoIntraEmphasis :: Bool
, extTables :: Bool
, extFencedCode :: Bool
, extAutolink :: Bool
, extStrikethrough :: Bool
, extLaxHtmlBlocks :: Bool
}
instance Flag Extensions where
flagIndexes exts = [ (0, extNoIntraEmphasis exts)
, (1, extTables exts)
, (2, extFencedCode exts)
, (3, extAutolink exts)
, (4, extStrikethrough exts)
, (5, extLaxHtmlBlocks exts)
]
instance Storable Callbacks where
sizeOf _ = ((104))
alignment _ = alignment (undefined :: Ptr ())
peek _ = error "Callbacks.peek is not implemented"
poke _ _ = error "Callbacks.poke is not implemented"
c_sd_markdown :: Ptr Buffer -> Ptr Buffer -> Extensions -> Ptr Callbacks -> Ptr () -> IO ()
c_sd_markdown ob ib exts rndr opaque = c_sd_markdown' ob ib (toCUInt exts) rndr opaque
foreign import ccall "markdown.h sd_markdown"
c_sd_markdown' :: Ptr Buffer -> Ptr Buffer -> CUInt -> Ptr Callbacks -> Ptr () -> IO ()