HsWebots-0.1.0.0: src/Webots/Device.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
module Webots.Device where
import Foreign.Ptr
import Foreign.Storable
import Foreign.C.String
import qualified Language.C.Inline as C
import qualified Language.C.Inline.Context as C
import qualified Language.C.Types as C
import Language.C.Inline.Cpp (cppTypePairs)
import Foreign.C.Types
import Control.Monad (forM_,forM)
import Webots.Types
C.context $ C.baseCtx `mappend` cppTypePairs typeMaps
C.include "<math.h>"
C.include "<stdio.h>"
C.include "<stdlib.h>"
C.include "<webots/device.h>"
wb_device_get_name :: WbDeviceTag -> IO String
wb_device_get_name dt =
peekCString =<< [C.exp| const char* { wb_device_get_name($(WbDeviceTag dt)) } |]
wb_device_get_model :: WbDeviceTag -> IO String
wb_device_get_model dt =
peekCString =<< [C.exp| const char* { wb_device_get_model($(WbDeviceTag dt)) } |]
wb_device_get_node_type :: WbDeviceTag -> IO WbNodeType
wb_device_get_node_type dt =
[C.exp| WbNodeType { wb_device_get_node_type($(WbDeviceTag dt)) } |]