myo-0.1.0.0: src/Myo/Foreign/Types.hsc
{-# LANGUAGE OverloadedStrings, TemplateHaskell, QuasiQuotes, RecordWildCards #-}
module Myo.Foreign.Types (
module Myo.Foreign.Device
, module Myo.Foreign.Result
, module Myo.Foreign.Locking
, module Myo.Foreign.Event
, module Myo.Foreign.Handler
, myoCtx
, ApplicationID
) where
import Data.Monoid
import Language.C.Inline.Context
import qualified Language.Haskell.TH as TH
import qualified Language.C.Types as C
import qualified Language.C.Inline as C
import qualified Data.Map.Strict as Map
import Foreign.Ptr
import Foreign.C.String
import Myo.Foreign.Device
import Myo.Foreign.Result
import Myo.Foreign.Locking
import Myo.Foreign.Event
import Myo.Foreign.Handler
#include "libmyo.h"
C.include "libmyo.h"
type ApplicationID = CString
myoCtx :: Context
myoCtx = baseCtx <> funCtx <> vecCtx <> mempty { ctxTypesTable = typesTable }
typesTable :: Map.Map C.TypeSpecifier TH.TypeQ
typesTable = Map.fromList
[ (C.TypeName "libmyo_vibration_type_t", [t| Vibration |])
, (C.TypeName "libmyo_result_t", [t| Result |])
, (C.TypeName "libmyo_error_details_t", [t| Ptr ErrorDetails_t |])
, (C.TypeName "libmyo_myo_t", [t| Ptr MyoDevice_t |])
, (C.TypeName "libmyo_locking_policy_t", [t| LockingPolicy |])
, (C.TypeName "libmyo_event_type_t", [t| EventType |])
, (C.TypeName "libmyo_event_t", [t| Ptr Event_t |])
, (C.TypeName "libmyo_handler_result_t", [t| HandlerResult |])
, (C.TypeName "libmyo_handler_t", [t| Handler |])
]