packages feed

hsqml-0.1.0: src/Graphics/QML/Internal/PrimValues.chs

{-# LANGUAGE
    ForeignFunctionInterface
  #-}

module Graphics.QML.Internal.PrimValues where

import Foreign.C.Types
import Foreign.C.String
import Foreign.Ptr
import Foreign.ForeignPtr
import Foreign.Storable
import Foreign.Marshal.Alloc
import Foreign.Marshal.Array
import System.IO.Unsafe

#include "hsqml.h"

cIntConv :: (Integral a, Integral b) => a -> b
cIntConv = fromIntegral

--
-- String
--

{#pointer *HsQMLStringHandle as ^ newtype #}

{#fun unsafe hsqml_get_string_size as ^
  {} ->
  `Int' fromIntegral #}

hsqmlStringSize :: Int
hsqmlStringSize = unsafePerformIO $ hsqmlGetStringSize

{#fun unsafe hsqml_init_string as ^
  {id `HsQMLStringHandle'} ->
  `()' #}

{#fun unsafe hsqml_deinit_string as ^
  {id `HsQMLStringHandle'} ->
  `()' #}

{#fun unsafe hsqml_marshal_string as ^
  {`Int',
   id `HsQMLStringHandle'} ->
  `Ptr CUShort' id #}

{#fun unsafe hsqml_unmarshal_string as ^
  {id `HsQMLStringHandle',
   id `Ptr (Ptr CUShort)'} ->
  `Int' #}

--
-- URL
--

{#pointer *HsQMLUrlHandle as ^ newtype #}

{#fun unsafe hsqml_get_url_size as ^
  {} ->
  `Int' fromIntegral #}

hsqmlUrlSize :: Int
hsqmlUrlSize = unsafePerformIO $ hsqmlGetUrlSize

{#fun unsafe hsqml_init_url as ^
  {id `HsQMLUrlHandle'} ->
  `()' #}

{#fun unsafe hsqml_deinit_url as ^
  {id `HsQMLUrlHandle'} ->
  `()' #}

{#fun unsafe hsqml_marshal_url as ^
  {id `Ptr CChar',
   `Int',
   id `HsQMLUrlHandle'} ->
  `()' #}

{#fun unsafe hsqml_unmarshal_url as ^
  {id `HsQMLUrlHandle',
   id `Ptr (Ptr CChar)'} ->
  `Int' #}