hois (empty) → 0.1.0.0
raw patch · 40 files changed
+2678/−0 lines, 40 filesdep +X11dep +basedep +hoissetup-changed
Dependencies added: X11, base, hois
Files
- LICENSE +30/−0
- OIS.hs +22/−0
- OIS/OISEvents.hs +31/−0
- OIS/OISFactoryCreator.hs +39/−0
- OIS/OISInputManager.hs +64/−0
- OIS/OISInterface.hs +31/−0
- OIS/OISJoyStick.hs +155/−0
- OIS/OISKeyboard.hs +81/−0
- OIS/OISMouse.hs +99/−0
- OIS/OISMultiTouch.hs +104/−0
- OIS/OISObject.hs +58/−0
- OIS/OISPrereqs.hs +134/−0
- OIS/Types.hs +520/−0
- Setup.hs +2/−0
- cbits/OISEvents.cpp +12/−0
- cbits/OISEvents.h +22/−0
- cbits/OISFactoryCreator.cpp +32/−0
- cbits/OISFactoryCreator.h +26/−0
- cbits/OISInputManager.cpp +57/−0
- cbits/OISInputManager.h +38/−0
- cbits/OISInterface.cpp +12/−0
- cbits/OISInterface.h +28/−0
- cbits/OISJoyStick.cpp +112/−0
- cbits/OISJoyStick.h +42/−0
- cbits/OISKeyboard.cpp +62/−0
- cbits/OISKeyboard.h +195/−0
- cbits/OISMouse.cpp +72/−0
- cbits/OISMouse.h +46/−0
- cbits/OISMultiTouch.cpp +92/−0
- cbits/OISMultiTouch.h +47/−0
- cbits/OISObject.cpp +47/−0
- cbits/OISObject.h +29/−0
- cbits/OISPrereqs.cpp +67/−0
- cbits/OISPrereqs.h +53/−0
- examples/OISConsole.hs +50/−0
- hois.cabal +92/−0
- interface/ois.gr +26/−0
- interface/ois.hif +3/−0
- interface/ois.if +16/−0
- run_cgen.sh +30/−0
+ LICENSE view
@@ -0,0 +1,30 @@+Copyright (c) 2012, Greg Horn++All rights reserved.++Redistribution and use in source and binary forms, with or without+modification, are permitted provided that the following conditions are met:++ * Redistributions of source code must retain the above copyright+ notice, this list of conditions and the following disclaimer.++ * Redistributions in binary form must reproduce the above+ copyright notice, this list of conditions and the following+ disclaimer in the documentation and/or other materials provided+ with the distribution.++ * Neither the name of Greg Horn nor the names of other+ contributors may be used to endorse or promote products derived+ from this software without specific prior written permission.++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ OIS.hs view
@@ -0,0 +1,22 @@+module OIS ( module OIS.OISEvents+ , module OIS.OISFactoryCreator+ , module OIS.OISInputManager+ , module OIS.OISInterface+ , module OIS.OISJoyStick+ , module OIS.OISKeyboard+ , module OIS.OISMouse+ , module OIS.OISMultiTouch+ , module OIS.OISObject+ , module OIS.OISPrereqs+ ) where++import OIS.OISEvents+import OIS.OISFactoryCreator+import OIS.OISInputManager+import OIS.OISInterface+import OIS.OISJoyStick+import OIS.OISKeyboard+import OIS.OISMouse+import OIS.OISMultiTouch+import OIS.OISObject+import OIS.OISPrereqs
+ OIS/OISEvents.hs view
@@ -0,0 +1,31 @@+{-# LANGUAGE ForeignFunctionInterface #-}+module OIS.OISEvents(+eventArg_with, +eventArg_new, +eventArg_delete+)++where++import OIS.Types+import Control.Monad++import Foreign+import Foreign.C.String+import Foreign.C.Types++eventArg_with :: Object -> (EventArg -> IO a) -> IO a+eventArg_with p1 f = do+ obj <- eventArg_new p1+ res <- f obj+ eventArg_delete obj+ return res++foreign import ccall "OISEvents.h OIS_EventArg_new" c_eventArg_new :: Object -> IO EventArg+eventArg_new :: Object -> IO EventArg+eventArg_new p1 = c_eventArg_new p1++foreign import ccall "OISEvents.h OIS_EventArg_delete" c_eventArg_delete :: EventArg -> IO ()+eventArg_delete :: EventArg -> IO ()+eventArg_delete p1 = c_eventArg_delete p1+
+ OIS/OISFactoryCreator.hs view
@@ -0,0 +1,39 @@+{-# LANGUAGE ForeignFunctionInterface #-}+module OIS.OISFactoryCreator(+factoryCreator_delete, +factoryCreator_totalDevices, +factoryCreator_freeDevices, +factoryCreator_createObject, +factoryCreator_destroyObject+)++where++import OIS.Types+import Control.Monad++import Foreign+import Foreign.C.String+import Foreign.C.Types++foreign import ccall "OISFactoryCreator.h OIS_FactoryCreator_delete" c_factoryCreator_delete :: FactoryCreator -> IO ()+factoryCreator_delete :: FactoryCreator -> IO ()+factoryCreator_delete p1 = c_factoryCreator_delete p1++foreign import ccall "OISFactoryCreator.h OIS_FactoryCreator_totalDevices" c_factoryCreator_totalDevices :: FactoryCreator -> CInt -> IO CInt+factoryCreator_totalDevices :: FactoryCreator -> Type -> IO Int+factoryCreator_totalDevices p1 p2 = liftM fromIntegral $ c_factoryCreator_totalDevices p1 (typeToCInt p2)++foreign import ccall "OISFactoryCreator.h OIS_FactoryCreator_freeDevices" c_factoryCreator_freeDevices :: FactoryCreator -> CInt -> IO CInt+factoryCreator_freeDevices :: FactoryCreator -> Type -> IO Int+factoryCreator_freeDevices p1 p2 = liftM fromIntegral $ c_factoryCreator_freeDevices p1 (typeToCInt p2)++foreign import ccall "OISFactoryCreator.h OIS_FactoryCreator_createObject" c_factoryCreator_createObject :: FactoryCreator -> InputManager -> CInt -> CBool -> (Ptr CChar) -> IO Object+factoryCreator_createObject :: FactoryCreator -> InputManager -> Type -> Bool -> String -> IO Object+factoryCreator_createObject p1 p2 p3 p4 p5 = withCString p5 $ \cp5 -> + c_factoryCreator_createObject p1 p2 (typeToCInt p3) (fromBool p4) cp5++foreign import ccall "OISFactoryCreator.h OIS_FactoryCreator_destroyObject" c_factoryCreator_destroyObject :: FactoryCreator -> Object -> IO ()+factoryCreator_destroyObject :: FactoryCreator -> Object -> IO ()+factoryCreator_destroyObject p1 p2 = c_factoryCreator_destroyObject p1 p2+
+ OIS/OISInputManager.hs view
@@ -0,0 +1,64 @@+{-# LANGUAGE ForeignFunctionInterface #-}+module OIS.OISInputManager(+inputManager_getVersionNumber, +inputManager_createInputSystem_size_t, +inputManager_createInputSystem, +inputManager_destroyInputSystem, +inputManager_getNumberOfDevices, +inputManager_createInputObject, +inputManager_destroyInputObject, +inputManager_addFactoryCreator, +inputManager_removeFactoryCreator, +inputManager_enableAddOnFactory+)++where++import OIS.Types+import Control.Monad++import Foreign+import Foreign.C.String+import Foreign.C.Types++foreign import ccall "OISInputManager.h OIS_InputManager_getVersionNumber" c_inputManager_getVersionNumber :: IO CUInt+inputManager_getVersionNumber :: IO Int+inputManager_getVersionNumber = liftM fromIntegral $ c_inputManager_getVersionNumber ++foreign import ccall "OISInputManager.h OIS_InputManager_createInputSystem_size_t" c_inputManager_createInputSystem_size_t :: CSize -> IO InputManager+inputManager_createInputSystem_size_t :: Int -> IO InputManager+inputManager_createInputSystem_size_t p1 = c_inputManager_createInputSystem_size_t (fromIntegral p1)++foreign import ccall "OISInputManager.h OIS_InputManager_createInputSystem" c_inputManager_createInputSystem :: ParamList -> IO InputManager+inputManager_createInputSystem :: ParamList -> IO InputManager+inputManager_createInputSystem p1 = c_inputManager_createInputSystem p1++foreign import ccall "OISInputManager.h OIS_InputManager_destroyInputSystem" c_inputManager_destroyInputSystem :: InputManager -> IO ()+inputManager_destroyInputSystem :: InputManager -> IO ()+inputManager_destroyInputSystem p1 = c_inputManager_destroyInputSystem p1++foreign import ccall "OISInputManager.h OIS_InputManager_getNumberOfDevices" c_inputManager_getNumberOfDevices :: InputManager -> CInt -> IO CInt+inputManager_getNumberOfDevices :: InputManager -> Type -> IO Int+inputManager_getNumberOfDevices p1 p2 = liftM fromIntegral $ c_inputManager_getNumberOfDevices p1 (typeToCInt p2)++foreign import ccall "OISInputManager.h OIS_InputManager_createInputObject" c_inputManager_createInputObject :: InputManager -> CInt -> CBool -> (Ptr CChar) -> IO Object+inputManager_createInputObject :: InputManager -> Type -> Bool -> String -> IO Object+inputManager_createInputObject p1 p2 p3 p4 = withCString p4 $ \cp4 -> + c_inputManager_createInputObject p1 (typeToCInt p2) (fromBool p3) cp4++foreign import ccall "OISInputManager.h OIS_InputManager_destroyInputObject" c_inputManager_destroyInputObject :: InputManager -> Object -> IO ()+inputManager_destroyInputObject :: InputManager -> Object -> IO ()+inputManager_destroyInputObject p1 p2 = c_inputManager_destroyInputObject p1 p2++foreign import ccall "OISInputManager.h OIS_InputManager_addFactoryCreator" c_inputManager_addFactoryCreator :: InputManager -> FactoryCreator -> IO ()+inputManager_addFactoryCreator :: InputManager -> FactoryCreator -> IO ()+inputManager_addFactoryCreator p1 p2 = c_inputManager_addFactoryCreator p1 p2++foreign import ccall "OISInputManager.h OIS_InputManager_removeFactoryCreator" c_inputManager_removeFactoryCreator :: InputManager -> FactoryCreator -> IO ()+inputManager_removeFactoryCreator :: InputManager -> FactoryCreator -> IO ()+inputManager_removeFactoryCreator p1 p2 = c_inputManager_removeFactoryCreator p1 p2++foreign import ccall "OISInputManager.h OIS_InputManager_enableAddOnFactory" c_inputManager_enableAddOnFactory :: InputManager -> CInt -> IO ()+inputManager_enableAddOnFactory :: InputManager -> AddOnFactories -> IO ()+inputManager_enableAddOnFactory p1 p2 = c_inputManager_enableAddOnFactory p1 (addOnFactoriesToCInt p2)+
+ OIS/OISInterface.hs view
@@ -0,0 +1,31 @@+{-# LANGUAGE ForeignFunctionInterface #-}+module OIS.OISInterface(+interface_with, +interface_new, +interface_delete+)++where++import OIS.Types+import Control.Monad++import Foreign+import Foreign.C.String+import Foreign.C.Types++interface_with :: (Interface -> IO a) -> IO a+interface_with f = do+ obj <- interface_new + res <- f obj+ interface_delete obj+ return res++foreign import ccall "OISInterface.h OIS_Interface_new" c_interface_new :: IO Interface+interface_new :: IO Interface+interface_new = c_interface_new ++foreign import ccall "OISInterface.h OIS_Interface_delete" c_interface_delete :: Interface -> IO ()+interface_delete :: Interface -> IO ()+interface_delete p1 = c_interface_delete p1+
+ OIS/OISJoyStick.hs view
@@ -0,0 +1,155 @@+{-# LANGUAGE ForeignFunctionInterface #-}+module OIS.OISJoyStick(+pov_with, +slider_with, +joyStickState_with, +joyStickEvent_with, +pov_delete, +slider_delete, +joyStickState_delete, +pov_new, +slider_new, +joyStickState_new, +joyStickState_clear, +joyStickEvent_new, +joyStickEvent_delete, +joyStickListener_delete, +joyStickListener_buttonPressed, +joyStickListener_buttonReleased, +joyStickListener_axisMoved, +joyStickListener_povMoved, +joyStickListener_vector3Moved, +joyStick_delete, +joyStick_getNumberOfComponents, +joyStick_setVector3Sensitivity, +joyStick_getVector3Sensitivity, +joyStick_setEventCallback, +joyStick_getEventCallback, +joyStick_getJoyStickState+)++where++import OIS.Types+import Control.Monad++import Foreign+import Foreign.C.String+import Foreign.C.Types++pov_with :: (Pov -> IO a) -> IO a+pov_with f = do+ obj <- pov_new + res <- f obj+ pov_delete obj+ return res++slider_with :: (Slider -> IO a) -> IO a+slider_with f = do+ obj <- slider_new + res <- f obj+ slider_delete obj+ return res++joyStickState_with :: (JoyStickState -> IO a) -> IO a+joyStickState_with f = do+ obj <- joyStickState_new + res <- f obj+ joyStickState_delete obj+ return res++joyStickEvent_with :: Object -> JoyStickState -> (JoyStickEvent -> IO a) -> IO a+joyStickEvent_with p1 p2 f = do+ obj <- joyStickEvent_new p1 p2+ res <- f obj+ joyStickEvent_delete obj+ return res++foreign import ccall "OISJoyStick.h OIS_Pov_delete" c_pov_delete :: Pov -> IO ()+pov_delete :: Pov -> IO ()+pov_delete p1 = c_pov_delete p1++foreign import ccall "OISJoyStick.h OIS_Slider_delete" c_slider_delete :: Slider -> IO ()+slider_delete :: Slider -> IO ()+slider_delete p1 = c_slider_delete p1++foreign import ccall "OISJoyStick.h OIS_JoyStickState_delete" c_joyStickState_delete :: JoyStickState -> IO ()+joyStickState_delete :: JoyStickState -> IO ()+joyStickState_delete p1 = c_joyStickState_delete p1++foreign import ccall "OISJoyStick.h OIS_Pov_new" c_pov_new :: IO Pov+pov_new :: IO Pov+pov_new = c_pov_new ++foreign import ccall "OISJoyStick.h OIS_Slider_new" c_slider_new :: IO Slider+slider_new :: IO Slider+slider_new = c_slider_new ++foreign import ccall "OISJoyStick.h OIS_JoyStickState_new" c_joyStickState_new :: IO JoyStickState+joyStickState_new :: IO JoyStickState+joyStickState_new = c_joyStickState_new ++foreign import ccall "OISJoyStick.h OIS_JoyStickState_clear" c_joyStickState_clear :: JoyStickState -> IO ()+joyStickState_clear :: JoyStickState -> IO ()+joyStickState_clear p1 = c_joyStickState_clear p1++foreign import ccall "OISJoyStick.h OIS_JoyStickEvent_new" c_joyStickEvent_new :: Object -> JoyStickState -> IO JoyStickEvent+joyStickEvent_new :: Object -> JoyStickState -> IO JoyStickEvent+joyStickEvent_new p1 p2 = c_joyStickEvent_new p1 p2++foreign import ccall "OISJoyStick.h OIS_JoyStickEvent_delete" c_joyStickEvent_delete :: JoyStickEvent -> IO ()+joyStickEvent_delete :: JoyStickEvent -> IO ()+joyStickEvent_delete p1 = c_joyStickEvent_delete p1++foreign import ccall "OISJoyStick.h OIS_JoyStickListener_delete" c_joyStickListener_delete :: JoyStickListener -> IO ()+joyStickListener_delete :: JoyStickListener -> IO ()+joyStickListener_delete p1 = c_joyStickListener_delete p1++foreign import ccall "OISJoyStick.h OIS_JoyStickListener_buttonPressed" c_joyStickListener_buttonPressed :: JoyStickListener -> JoyStickEvent -> CInt -> IO CBool+joyStickListener_buttonPressed :: JoyStickListener -> JoyStickEvent -> Int -> IO Bool+joyStickListener_buttonPressed p1 p2 p3 = liftM toBool $ c_joyStickListener_buttonPressed p1 p2 (fromIntegral p3)++foreign import ccall "OISJoyStick.h OIS_JoyStickListener_buttonReleased" c_joyStickListener_buttonReleased :: JoyStickListener -> JoyStickEvent -> CInt -> IO CBool+joyStickListener_buttonReleased :: JoyStickListener -> JoyStickEvent -> Int -> IO Bool+joyStickListener_buttonReleased p1 p2 p3 = liftM toBool $ c_joyStickListener_buttonReleased p1 p2 (fromIntegral p3)++foreign import ccall "OISJoyStick.h OIS_JoyStickListener_axisMoved" c_joyStickListener_axisMoved :: JoyStickListener -> JoyStickEvent -> CInt -> IO CBool+joyStickListener_axisMoved :: JoyStickListener -> JoyStickEvent -> Int -> IO Bool+joyStickListener_axisMoved p1 p2 p3 = liftM toBool $ c_joyStickListener_axisMoved p1 p2 (fromIntegral p3)++foreign import ccall "OISJoyStick.h OIS_JoyStickListener_povMoved" c_joyStickListener_povMoved :: JoyStickListener -> JoyStickEvent -> CInt -> IO CBool+joyStickListener_povMoved :: JoyStickListener -> JoyStickEvent -> Int -> IO Bool+joyStickListener_povMoved p1 p2 p3 = liftM toBool $ c_joyStickListener_povMoved p1 p2 (fromIntegral p3)++foreign import ccall "OISJoyStick.h OIS_JoyStickListener_vector3Moved" c_joyStickListener_vector3Moved :: JoyStickListener -> JoyStickEvent -> CInt -> IO CBool+joyStickListener_vector3Moved :: JoyStickListener -> JoyStickEvent -> Int -> IO Bool+joyStickListener_vector3Moved p1 p2 p3 = liftM toBool $ c_joyStickListener_vector3Moved p1 p2 (fromIntegral p3)++foreign import ccall "OISJoyStick.h OIS_JoyStick_delete" c_joyStick_delete :: JoyStick -> IO ()+joyStick_delete :: JoyStick -> IO ()+joyStick_delete p1 = c_joyStick_delete p1++foreign import ccall "OISJoyStick.h OIS_JoyStick_getNumberOfComponents" c_joyStick_getNumberOfComponents :: JoyStick -> CInt -> IO CInt+joyStick_getNumberOfComponents :: JoyStick -> ComponentType -> IO Int+joyStick_getNumberOfComponents p1 p2 = liftM fromIntegral $ c_joyStick_getNumberOfComponents p1 (componentTypeToCInt p2)++foreign import ccall "OISJoyStick.h OIS_JoyStick_setVector3Sensitivity" c_joyStick_setVector3Sensitivity :: JoyStick -> CFloat -> IO ()+joyStick_setVector3Sensitivity :: JoyStick -> Float -> IO ()+joyStick_setVector3Sensitivity p1 p2 = c_joyStick_setVector3Sensitivity p1 (realToFrac p2)++foreign import ccall "OISJoyStick.h OIS_JoyStick_getVector3Sensitivity" c_joyStick_getVector3Sensitivity :: JoyStick -> IO CFloat+joyStick_getVector3Sensitivity :: JoyStick -> IO Float+joyStick_getVector3Sensitivity p1 = liftM realToFrac $ c_joyStick_getVector3Sensitivity p1++foreign import ccall "OISJoyStick.h OIS_JoyStick_setEventCallback" c_joyStick_setEventCallback :: JoyStick -> JoyStickListener -> IO ()+joyStick_setEventCallback :: JoyStick -> JoyStickListener -> IO ()+joyStick_setEventCallback p1 p2 = c_joyStick_setEventCallback p1 p2++foreign import ccall "OISJoyStick.h OIS_JoyStick_getEventCallback" c_joyStick_getEventCallback :: JoyStick -> IO JoyStickListener+joyStick_getEventCallback :: JoyStick -> IO JoyStickListener+joyStick_getEventCallback p1 = c_joyStick_getEventCallback p1++foreign import ccall "OISJoyStick.h OIS_JoyStick_getJoyStickState" c_joyStick_getJoyStickState :: JoyStick -> IO JoyStickState+joyStick_getJoyStickState :: JoyStick -> IO JoyStickState+joyStick_getJoyStickState p1 = c_joyStick_getJoyStickState p1+
+ OIS/OISKeyboard.hs view
@@ -0,0 +1,81 @@+{-# LANGUAGE ForeignFunctionInterface #-}+module OIS.OISKeyboard(+keyEvent_with, +keyEvent_new, +keyEvent_delete, +keyListener_delete, +keyListener_keyPressed, +keyListener_keyReleased, +keyboard_delete, +keyboard_isKeyDown, +keyboard_setEventCallback, +keyboard_getEventCallback, +keyboard_setTextTranslation, +keyboard_getTextTranslation, +keyboard_isModifierDown+)++where++import OIS.Types+import Control.Monad++import Foreign+import Foreign.C.String+import Foreign.C.Types++keyEvent_with :: Object -> KeyCode -> Int -> (KeyEvent -> IO a) -> IO a+keyEvent_with p1 p2 p3 f = do+ obj <- keyEvent_new p1 p2 p3+ res <- f obj+ keyEvent_delete obj+ return res++foreign import ccall "OISKeyboard.h OIS_KeyEvent_new" c_keyEvent_new :: Object -> CInt -> CUInt -> IO KeyEvent+keyEvent_new :: Object -> KeyCode -> Int -> IO KeyEvent+keyEvent_new p1 p2 p3 = c_keyEvent_new p1 (keyCodeToCInt p2) (fromIntegral p3)++foreign import ccall "OISKeyboard.h OIS_KeyEvent_delete" c_keyEvent_delete :: KeyEvent -> IO ()+keyEvent_delete :: KeyEvent -> IO ()+keyEvent_delete p1 = c_keyEvent_delete p1++foreign import ccall "OISKeyboard.h OIS_KeyListener_delete" c_keyListener_delete :: KeyListener -> IO ()+keyListener_delete :: KeyListener -> IO ()+keyListener_delete p1 = c_keyListener_delete p1++foreign import ccall "OISKeyboard.h OIS_KeyListener_keyPressed" c_keyListener_keyPressed :: KeyListener -> KeyEvent -> IO CBool+keyListener_keyPressed :: KeyListener -> KeyEvent -> IO Bool+keyListener_keyPressed p1 p2 = liftM toBool $ c_keyListener_keyPressed p1 p2++foreign import ccall "OISKeyboard.h OIS_KeyListener_keyReleased" c_keyListener_keyReleased :: KeyListener -> KeyEvent -> IO CBool+keyListener_keyReleased :: KeyListener -> KeyEvent -> IO Bool+keyListener_keyReleased p1 p2 = liftM toBool $ c_keyListener_keyReleased p1 p2++foreign import ccall "OISKeyboard.h OIS_Keyboard_delete" c_keyboard_delete :: Keyboard -> IO ()+keyboard_delete :: Keyboard -> IO ()+keyboard_delete p1 = c_keyboard_delete p1++foreign import ccall "OISKeyboard.h OIS_Keyboard_isKeyDown" c_keyboard_isKeyDown :: Keyboard -> CInt -> IO CBool+keyboard_isKeyDown :: Keyboard -> KeyCode -> IO Bool+keyboard_isKeyDown p1 p2 = liftM toBool $ c_keyboard_isKeyDown p1 (keyCodeToCInt p2)++foreign import ccall "OISKeyboard.h OIS_Keyboard_setEventCallback" c_keyboard_setEventCallback :: Keyboard -> KeyListener -> IO ()+keyboard_setEventCallback :: Keyboard -> KeyListener -> IO ()+keyboard_setEventCallback p1 p2 = c_keyboard_setEventCallback p1 p2++foreign import ccall "OISKeyboard.h OIS_Keyboard_getEventCallback" c_keyboard_getEventCallback :: Keyboard -> IO KeyListener+keyboard_getEventCallback :: Keyboard -> IO KeyListener+keyboard_getEventCallback p1 = c_keyboard_getEventCallback p1++foreign import ccall "OISKeyboard.h OIS_Keyboard_setTextTranslation" c_keyboard_setTextTranslation :: Keyboard -> CInt -> IO ()+keyboard_setTextTranslation :: Keyboard -> TextTranslationMode -> IO ()+keyboard_setTextTranslation p1 p2 = c_keyboard_setTextTranslation p1 (textTranslationModeToCInt p2)++foreign import ccall "OISKeyboard.h OIS_Keyboard_getTextTranslation" c_keyboard_getTextTranslation :: Keyboard -> IO CInt+keyboard_getTextTranslation :: Keyboard -> IO TextTranslationMode+keyboard_getTextTranslation p1 = liftM cintToTextTranslationMode $ c_keyboard_getTextTranslation p1++foreign import ccall "OISKeyboard.h OIS_Keyboard_isModifierDown" c_keyboard_isModifierDown :: Keyboard -> CInt -> IO CBool+keyboard_isModifierDown :: Keyboard -> Modifier -> IO Bool+keyboard_isModifierDown p1 p2 = liftM toBool $ c_keyboard_isModifierDown p1 (modifierToCInt p2)+
+ OIS/OISMouse.hs view
@@ -0,0 +1,99 @@+{-# LANGUAGE ForeignFunctionInterface #-}+module OIS.OISMouse(+mouseState_with, +mouseEvent_with, +mouseState_delete, +mouseState_new, +mouseState_buttonDown, +mouseState_clear, +mouseEvent_new, +mouseEvent_delete, +mouseListener_delete, +mouseListener_mouseMoved, +mouseListener_mousePressed, +mouseListener_mouseReleased, +mouse_delete, +mouse_setEventCallback, +mouse_getEventCallback, +mouse_getMouseState+)++where++import OIS.Types+import Control.Monad++import Foreign+import Foreign.C.String+import Foreign.C.Types++mouseState_with :: (MouseState -> IO a) -> IO a+mouseState_with f = do+ obj <- mouseState_new + res <- f obj+ mouseState_delete obj+ return res++mouseEvent_with :: Object -> MouseState -> (MouseEvent -> IO a) -> IO a+mouseEvent_with p1 p2 f = do+ obj <- mouseEvent_new p1 p2+ res <- f obj+ mouseEvent_delete obj+ return res++foreign import ccall "OISMouse.h OIS_MouseState_delete" c_mouseState_delete :: MouseState -> IO ()+mouseState_delete :: MouseState -> IO ()+mouseState_delete p1 = c_mouseState_delete p1++foreign import ccall "OISMouse.h OIS_MouseState_new" c_mouseState_new :: IO MouseState+mouseState_new :: IO MouseState+mouseState_new = c_mouseState_new ++foreign import ccall "OISMouse.h OIS_MouseState_buttonDown" c_mouseState_buttonDown :: MouseState -> CInt -> IO CBool+mouseState_buttonDown :: MouseState -> MouseButtonID -> IO Bool+mouseState_buttonDown p1 p2 = liftM toBool $ c_mouseState_buttonDown p1 (mouseButtonIDToCInt p2)++foreign import ccall "OISMouse.h OIS_MouseState_clear" c_mouseState_clear :: MouseState -> IO ()+mouseState_clear :: MouseState -> IO ()+mouseState_clear p1 = c_mouseState_clear p1++foreign import ccall "OISMouse.h OIS_MouseEvent_new" c_mouseEvent_new :: Object -> MouseState -> IO MouseEvent+mouseEvent_new :: Object -> MouseState -> IO MouseEvent+mouseEvent_new p1 p2 = c_mouseEvent_new p1 p2++foreign import ccall "OISMouse.h OIS_MouseEvent_delete" c_mouseEvent_delete :: MouseEvent -> IO ()+mouseEvent_delete :: MouseEvent -> IO ()+mouseEvent_delete p1 = c_mouseEvent_delete p1++foreign import ccall "OISMouse.h OIS_MouseListener_delete" c_mouseListener_delete :: MouseListener -> IO ()+mouseListener_delete :: MouseListener -> IO ()+mouseListener_delete p1 = c_mouseListener_delete p1++foreign import ccall "OISMouse.h OIS_MouseListener_mouseMoved" c_mouseListener_mouseMoved :: MouseListener -> MouseEvent -> IO CBool+mouseListener_mouseMoved :: MouseListener -> MouseEvent -> IO Bool+mouseListener_mouseMoved p1 p2 = liftM toBool $ c_mouseListener_mouseMoved p1 p2++foreign import ccall "OISMouse.h OIS_MouseListener_mousePressed" c_mouseListener_mousePressed :: MouseListener -> MouseEvent -> CInt -> IO CBool+mouseListener_mousePressed :: MouseListener -> MouseEvent -> MouseButtonID -> IO Bool+mouseListener_mousePressed p1 p2 p3 = liftM toBool $ c_mouseListener_mousePressed p1 p2 (mouseButtonIDToCInt p3)++foreign import ccall "OISMouse.h OIS_MouseListener_mouseReleased" c_mouseListener_mouseReleased :: MouseListener -> MouseEvent -> CInt -> IO CBool+mouseListener_mouseReleased :: MouseListener -> MouseEvent -> MouseButtonID -> IO Bool+mouseListener_mouseReleased p1 p2 p3 = liftM toBool $ c_mouseListener_mouseReleased p1 p2 (mouseButtonIDToCInt p3)++foreign import ccall "OISMouse.h OIS_Mouse_delete" c_mouse_delete :: Mouse -> IO ()+mouse_delete :: Mouse -> IO ()+mouse_delete p1 = c_mouse_delete p1++foreign import ccall "OISMouse.h OIS_Mouse_setEventCallback" c_mouse_setEventCallback :: Mouse -> MouseListener -> IO ()+mouse_setEventCallback :: Mouse -> MouseListener -> IO ()+mouse_setEventCallback p1 p2 = c_mouse_setEventCallback p1 p2++foreign import ccall "OISMouse.h OIS_Mouse_getEventCallback" c_mouse_getEventCallback :: Mouse -> IO MouseListener+mouse_getEventCallback :: Mouse -> IO MouseListener+mouse_getEventCallback p1 = c_mouse_getEventCallback p1++foreign import ccall "OISMouse.h OIS_Mouse_getMouseState" c_mouse_getMouseState :: Mouse -> IO MouseState+mouse_getMouseState :: Mouse -> IO MouseState+mouse_getMouseState p1 = c_mouse_getMouseState p1+
+ OIS/OISMultiTouch.hs view
@@ -0,0 +1,104 @@+{-# LANGUAGE ForeignFunctionInterface #-}+module OIS.OISMultiTouch(+multiTouchState_with, +multiTouchEvent_with, +multiTouchState_delete, +multiTouchState_new, +multiTouchState_touchIsType, +multiTouchState_clear, +multiTouchEvent_new, +multiTouchEvent_delete, +multiTouchListener_delete, +multiTouchListener_touchMoved, +multiTouchListener_touchPressed, +multiTouchListener_touchReleased, +multiTouchListener_touchCancelled, +multiTouch_delete, +multiTouch_setEventCallback, +multiTouch_getEventCallback, +multiTouch_clearStates+)++where++import OIS.Types+import Control.Monad++import Foreign+import Foreign.C.String+import Foreign.C.Types++multiTouchState_with :: (MultiTouchState -> IO a) -> IO a+multiTouchState_with f = do+ obj <- multiTouchState_new + res <- f obj+ multiTouchState_delete obj+ return res++multiTouchEvent_with :: Object -> MultiTouchState -> (MultiTouchEvent -> IO a) -> IO a+multiTouchEvent_with p1 p2 f = do+ obj <- multiTouchEvent_new p1 p2+ res <- f obj+ multiTouchEvent_delete obj+ return res++foreign import ccall "OISMultiTouch.h OIS_MultiTouchState_delete" c_multiTouchState_delete :: MultiTouchState -> IO ()+multiTouchState_delete :: MultiTouchState -> IO ()+multiTouchState_delete p1 = c_multiTouchState_delete p1++foreign import ccall "OISMultiTouch.h OIS_MultiTouchState_new" c_multiTouchState_new :: IO MultiTouchState+multiTouchState_new :: IO MultiTouchState+multiTouchState_new = c_multiTouchState_new ++foreign import ccall "OISMultiTouch.h OIS_MultiTouchState_touchIsType" c_multiTouchState_touchIsType :: MultiTouchState -> CInt -> IO CBool+multiTouchState_touchIsType :: MultiTouchState -> MultiTypeEventTypeID -> IO Bool+multiTouchState_touchIsType p1 p2 = liftM toBool $ c_multiTouchState_touchIsType p1 (multiTypeEventTypeIDToCInt p2)++foreign import ccall "OISMultiTouch.h OIS_MultiTouchState_clear" c_multiTouchState_clear :: MultiTouchState -> IO ()+multiTouchState_clear :: MultiTouchState -> IO ()+multiTouchState_clear p1 = c_multiTouchState_clear p1++foreign import ccall "OISMultiTouch.h OIS_MultiTouchEvent_new" c_multiTouchEvent_new :: Object -> MultiTouchState -> IO MultiTouchEvent+multiTouchEvent_new :: Object -> MultiTouchState -> IO MultiTouchEvent+multiTouchEvent_new p1 p2 = c_multiTouchEvent_new p1 p2++foreign import ccall "OISMultiTouch.h OIS_MultiTouchEvent_delete" c_multiTouchEvent_delete :: MultiTouchEvent -> IO ()+multiTouchEvent_delete :: MultiTouchEvent -> IO ()+multiTouchEvent_delete p1 = c_multiTouchEvent_delete p1++foreign import ccall "OISMultiTouch.h OIS_MultiTouchListener_delete" c_multiTouchListener_delete :: MultiTouchListener -> IO ()+multiTouchListener_delete :: MultiTouchListener -> IO ()+multiTouchListener_delete p1 = c_multiTouchListener_delete p1++foreign import ccall "OISMultiTouch.h OIS_MultiTouchListener_touchMoved" c_multiTouchListener_touchMoved :: MultiTouchListener -> MultiTouchEvent -> IO CBool+multiTouchListener_touchMoved :: MultiTouchListener -> MultiTouchEvent -> IO Bool+multiTouchListener_touchMoved p1 p2 = liftM toBool $ c_multiTouchListener_touchMoved p1 p2++foreign import ccall "OISMultiTouch.h OIS_MultiTouchListener_touchPressed" c_multiTouchListener_touchPressed :: MultiTouchListener -> MultiTouchEvent -> IO CBool+multiTouchListener_touchPressed :: MultiTouchListener -> MultiTouchEvent -> IO Bool+multiTouchListener_touchPressed p1 p2 = liftM toBool $ c_multiTouchListener_touchPressed p1 p2++foreign import ccall "OISMultiTouch.h OIS_MultiTouchListener_touchReleased" c_multiTouchListener_touchReleased :: MultiTouchListener -> MultiTouchEvent -> IO CBool+multiTouchListener_touchReleased :: MultiTouchListener -> MultiTouchEvent -> IO Bool+multiTouchListener_touchReleased p1 p2 = liftM toBool $ c_multiTouchListener_touchReleased p1 p2++foreign import ccall "OISMultiTouch.h OIS_MultiTouchListener_touchCancelled" c_multiTouchListener_touchCancelled :: MultiTouchListener -> MultiTouchEvent -> IO CBool+multiTouchListener_touchCancelled :: MultiTouchListener -> MultiTouchEvent -> IO Bool+multiTouchListener_touchCancelled p1 p2 = liftM toBool $ c_multiTouchListener_touchCancelled p1 p2++foreign import ccall "OISMultiTouch.h OIS_MultiTouch_delete" c_multiTouch_delete :: MultiTouch -> IO ()+multiTouch_delete :: MultiTouch -> IO ()+multiTouch_delete p1 = c_multiTouch_delete p1++foreign import ccall "OISMultiTouch.h OIS_MultiTouch_setEventCallback" c_multiTouch_setEventCallback :: MultiTouch -> MultiTouchListener -> IO ()+multiTouch_setEventCallback :: MultiTouch -> MultiTouchListener -> IO ()+multiTouch_setEventCallback p1 p2 = c_multiTouch_setEventCallback p1 p2++foreign import ccall "OISMultiTouch.h OIS_MultiTouch_getEventCallback" c_multiTouch_getEventCallback :: MultiTouch -> IO MultiTouchListener+multiTouch_getEventCallback :: MultiTouch -> IO MultiTouchListener+multiTouch_getEventCallback p1 = c_multiTouch_getEventCallback p1++foreign import ccall "OISMultiTouch.h OIS_MultiTouch_clearStates" c_multiTouch_clearStates :: MultiTouch -> IO ()+multiTouch_clearStates :: MultiTouch -> IO ()+multiTouch_clearStates p1 = c_multiTouch_clearStates p1+
+ OIS/OISObject.hs view
@@ -0,0 +1,58 @@+{-# LANGUAGE ForeignFunctionInterface #-}+module OIS.OISObject(+object_delete, +object_type, +object_buffered, +object_getCreator, +object_setBuffered, +object_capture, +object_getID, +object_queryInterface, +object__initialize+)++where++import OIS.Types+import Control.Monad++import Foreign+import Foreign.C.String+import Foreign.C.Types++foreign import ccall "OISObject.h OIS_Object_delete" c_object_delete :: Object -> IO ()+object_delete :: Object -> IO ()+object_delete p1 = c_object_delete p1++foreign import ccall "OISObject.h OIS_Object_type" c_object_type :: Object -> IO CInt+object_type :: Object -> IO Type+object_type p1 = liftM cintToType $ c_object_type p1++foreign import ccall "OISObject.h OIS_Object_buffered" c_object_buffered :: Object -> IO CBool+object_buffered :: Object -> IO Bool+object_buffered p1 = liftM toBool $ c_object_buffered p1++foreign import ccall "OISObject.h OIS_Object_getCreator" c_object_getCreator :: Object -> IO InputManager+object_getCreator :: Object -> IO InputManager+object_getCreator p1 = c_object_getCreator p1++foreign import ccall "OISObject.h OIS_Object_setBuffered" c_object_setBuffered :: Object -> CBool -> IO ()+object_setBuffered :: Object -> Bool -> IO ()+object_setBuffered p1 p2 = c_object_setBuffered p1 (fromBool p2)++foreign import ccall "OISObject.h OIS_Object_capture" c_object_capture :: Object -> IO ()+object_capture :: Object -> IO ()+object_capture p1 = c_object_capture p1++foreign import ccall "OISObject.h OIS_Object_getID" c_object_getID :: Object -> IO CInt+object_getID :: Object -> IO Int+object_getID p1 = liftM fromIntegral $ c_object_getID p1++foreign import ccall "OISObject.h OIS_Object_queryInterface" c_object_queryInterface :: Object -> CInt -> IO Interface+object_queryInterface :: Object -> IType -> IO Interface+object_queryInterface p1 p2 = c_object_queryInterface p1 (iTypeToCInt p2)++foreign import ccall "OISObject.h OIS_Object__initialize" c_object__initialize :: Object -> IO ()+object__initialize :: Object -> IO ()+object__initialize p1 = c_object__initialize p1+
+ OIS/OISPrereqs.hs view
@@ -0,0 +1,134 @@+{-# LANGUAGE ForeignFunctionInterface #-}+module OIS.OISPrereqs(+component_with_void, +component_with, +button_with_void, +button_with, +axis_with, +vector3_with_void, +vector3_with, +component_delete, +button_delete, +axis_delete, +vector3_delete, +component_new_void, +component_new, +button_new_void, +button_new, +axis_new, +axis_clear, +vector3_new_void, +vector3_new, +vector3_clear+)++where++import OIS.Types+import Control.Monad++import Foreign+import Foreign.C.String+import Foreign.C.Types++component_with_void :: (Component -> IO a) -> IO a+component_with_void f = do+ obj <- component_new_void + res <- f obj+ component_delete obj+ return res++component_with :: ComponentType -> (Component -> IO a) -> IO a+component_with p1 f = do+ obj <- component_new p1+ res <- f obj+ component_delete obj+ return res++button_with_void :: (Button -> IO a) -> IO a+button_with_void f = do+ obj <- button_new_void + res <- f obj+ button_delete obj+ return res++button_with :: Bool -> (Button -> IO a) -> IO a+button_with p1 f = do+ obj <- button_new p1+ res <- f obj+ button_delete obj+ return res++axis_with :: (Axis -> IO a) -> IO a+axis_with f = do+ obj <- axis_new + res <- f obj+ axis_delete obj+ return res++vector3_with_void :: (Vector3 -> IO a) -> IO a+vector3_with_void f = do+ obj <- vector3_new_void + res <- f obj+ vector3_delete obj+ return res++vector3_with :: Float -> Float -> Float -> (Vector3 -> IO a) -> IO a+vector3_with p1 p2 p3 f = do+ obj <- vector3_new p1 p2 p3+ res <- f obj+ vector3_delete obj+ return res++foreign import ccall "OISPrereqs.h OIS_Component_delete" c_component_delete :: Component -> IO ()+component_delete :: Component -> IO ()+component_delete p1 = c_component_delete p1++foreign import ccall "OISPrereqs.h OIS_Button_delete" c_button_delete :: Button -> IO ()+button_delete :: Button -> IO ()+button_delete p1 = c_button_delete p1++foreign import ccall "OISPrereqs.h OIS_Axis_delete" c_axis_delete :: Axis -> IO ()+axis_delete :: Axis -> IO ()+axis_delete p1 = c_axis_delete p1++foreign import ccall "OISPrereqs.h OIS_Vector3_delete" c_vector3_delete :: Vector3 -> IO ()+vector3_delete :: Vector3 -> IO ()+vector3_delete p1 = c_vector3_delete p1++foreign import ccall "OISPrereqs.h OIS_Component_new_void" c_component_new_void :: IO Component+component_new_void :: IO Component+component_new_void = c_component_new_void ++foreign import ccall "OISPrereqs.h OIS_Component_new" c_component_new :: CInt -> IO Component+component_new :: ComponentType -> IO Component+component_new p1 = c_component_new (componentTypeToCInt p1)++foreign import ccall "OISPrereqs.h OIS_Button_new_void" c_button_new_void :: IO Button+button_new_void :: IO Button+button_new_void = c_button_new_void ++foreign import ccall "OISPrereqs.h OIS_Button_new" c_button_new :: CBool -> IO Button+button_new :: Bool -> IO Button+button_new p1 = c_button_new (fromBool p1)++foreign import ccall "OISPrereqs.h OIS_Axis_new" c_axis_new :: IO Axis+axis_new :: IO Axis+axis_new = c_axis_new ++foreign import ccall "OISPrereqs.h OIS_Axis_clear" c_axis_clear :: Axis -> IO ()+axis_clear :: Axis -> IO ()+axis_clear p1 = c_axis_clear p1++foreign import ccall "OISPrereqs.h OIS_Vector3_new_void" c_vector3_new_void :: IO Vector3+vector3_new_void :: IO Vector3+vector3_new_void = c_vector3_new_void ++foreign import ccall "OISPrereqs.h OIS_Vector3_new" c_vector3_new :: CFloat -> CFloat -> CFloat -> IO Vector3+vector3_new :: Float -> Float -> Float -> IO Vector3+vector3_new p1 p2 p3 = c_vector3_new (realToFrac p1) (realToFrac p2) (realToFrac p3)++foreign import ccall "OISPrereqs.h OIS_Vector3_clear" c_vector3_clear :: Vector3 -> IO ()+vector3_clear :: Vector3 -> IO ()+vector3_clear p1 = c_vector3_clear p1+
+ OIS/Types.hs view
@@ -0,0 +1,520 @@+module OIS.Types+where++import Foreign+import Foreign.C.String+import Foreign.C.Types++type CBool = CChar -- correct?++newtype Axis = Axis (Ptr Axis) -- nullary data type+newtype Button = Button (Ptr Button) -- nullary data type+newtype Component = Component (Ptr Component) -- nullary data type++data ComponentType = OIS_Unknown | OIS_Button | OIS_Axis | OIS_Slider | OIS_POV | OIS_Vector3++componentTypeToCInt :: ComponentType -> CInt+componentTypeToCInt OIS_Unknown = 0+componentTypeToCInt OIS_Button = 1+componentTypeToCInt OIS_Axis = 2+componentTypeToCInt OIS_Slider = 3+componentTypeToCInt OIS_POV = 4+componentTypeToCInt OIS_Vector3 = 5++cintToComponentType :: CInt -> ComponentType+cintToComponentType 0 = OIS_Unknown+cintToComponentType 1 = OIS_Button+cintToComponentType 2 = OIS_Axis+cintToComponentType 3 = OIS_Slider+cintToComponentType 4 = OIS_POV+cintToComponentType 5 = OIS_Vector3+cintToComponentType n = error $ "cintToComponentType: can not convert integer '" ++ show n ++ "' to ComponentType"++newtype EventArg = EventArg (Ptr EventArg) -- nullary data type+newtype FactoryCreator = FactoryCreator (Ptr FactoryCreator) -- nullary data type+newtype InputManager = InputManager (Ptr InputManager) -- nullary data type++data AddOnFactories = AddOn_All | AddOn_LIRC | AddOn_WiiMote++addOnFactoriesToCInt :: AddOnFactories -> CInt+addOnFactoriesToCInt AddOn_All = 0+addOnFactoriesToCInt AddOn_LIRC = 1+addOnFactoriesToCInt AddOn_WiiMote = 2++cintToAddOnFactories :: CInt -> AddOnFactories+cintToAddOnFactories 0 = AddOn_All+cintToAddOnFactories 1 = AddOn_LIRC+cintToAddOnFactories 2 = AddOn_WiiMote+cintToAddOnFactories n = error $ "cintToAddOnFactories: can not convert integer '" ++ show n ++ "' to AddOnFactories"++newtype Interface = Interface (Ptr Interface) -- nullary data type++data IType = ForceFeedback | Reserved++iTypeToCInt :: IType -> CInt+iTypeToCInt ForceFeedback = 0+iTypeToCInt Reserved = 1++cintToIType :: CInt -> IType+cintToIType 0 = ForceFeedback+cintToIType 1 = Reserved+cintToIType n = error $ "cintToIType: can not convert integer '" ++ show n ++ "' to IType"++newtype JoyStick = JoyStick (Ptr JoyStick) -- nullary data type+newtype JoyStickEvent = JoyStickEvent (Ptr JoyStickEvent) -- nullary data type+newtype JoyStickListener = JoyStickListener (Ptr JoyStickListener) -- nullary data type+newtype JoyStickState = JoyStickState (Ptr JoyStickState) -- nullary data type++data KeyCode = KC_UNASSIGNED | KC_ESCAPE | KC_1 | KC_2 | KC_3 | KC_4 | KC_5 | KC_6 | KC_7 | KC_8 | KC_9 | KC_0 | KC_MINUS | KC_EQUALS | KC_BACK | KC_TAB | KC_Q | KC_W | KC_E | KC_R | KC_T | KC_Y | KC_U | KC_I | KC_O | KC_P | KC_LBRACKET | KC_RBRACKET | KC_RETURN | KC_LCONTROL | KC_A | KC_S | KC_D | KC_F | KC_G | KC_H | KC_J | KC_K | KC_L | KC_SEMICOLON | KC_APOSTROPHE | KC_GRAVE | KC_LSHIFT | KC_BACKSLASH | KC_Z | KC_X | KC_C | KC_V | KC_B | KC_N | KC_M | KC_COMMA | KC_PERIOD | KC_SLASH | KC_RSHIFT | KC_MULTIPLY | KC_LMENU | KC_SPACE | KC_CAPITAL | KC_F1 | KC_F2 | KC_F3 | KC_F4 | KC_F5 | KC_F6 | KC_F7 | KC_F8 | KC_F9 | KC_F10 | KC_NUMLOCK | KC_SCROLL | KC_NUMPAD7 | KC_NUMPAD8 | KC_NUMPAD9 | KC_SUBTRACT | KC_NUMPAD4 | KC_NUMPAD5 | KC_NUMPAD6 | KC_ADD | KC_NUMPAD1 | KC_NUMPAD2 | KC_NUMPAD3 | KC_NUMPAD0 | KC_DECIMAL | KC_OEM_102 | KC_F11 | KC_F12 | KC_F13 | KC_F14 | KC_F15 | KC_KANA | KC_ABNT_C1 | KC_CONVERT | KC_NOCONVERT | KC_YEN | KC_ABNT_C2 | KC_NUMPADEQUALS | KC_PREVTRACK | KC_AT | KC_COLON | KC_UNDERLINE | KC_KANJI | KC_STOP | KC_AX | KC_UNLABELED | KC_NEXTTRACK | KC_NUMPADENTER | KC_RCONTROL | KC_MUTE | KC_CALCULATOR | KC_PLAYPAUSE | KC_MEDIASTOP | KC_VOLUMEDOWN | KC_VOLUMEUP | KC_WEBHOME | KC_NUMPADCOMMA | KC_DIVIDE | KC_SYSRQ | KC_RMENU | KC_PAUSE | KC_HOME | KC_UP | KC_PGUP | KC_LEFT | KC_RIGHT | KC_END | KC_DOWN | KC_PGDOWN | KC_INSERT | KC_DELETE | KC_LWIN | KC_RWIN | KC_APPS | KC_POWER | KC_SLEEP | KC_WAKE | KC_WEBSEARCH | KC_WEBFAVORITES | KC_WEBREFRESH | KC_WEBSTOP | KC_WEBFORWARD | KC_WEBBACK | KC_MYCOMPUTER | KC_MAIL | KC_MEDIASELECT++keyCodeToCInt :: KeyCode -> CInt+keyCodeToCInt KC_UNASSIGNED = 0+keyCodeToCInt KC_ESCAPE = 1+keyCodeToCInt KC_1 = 2+keyCodeToCInt KC_2 = 3+keyCodeToCInt KC_3 = 4+keyCodeToCInt KC_4 = 5+keyCodeToCInt KC_5 = 6+keyCodeToCInt KC_6 = 7+keyCodeToCInt KC_7 = 8+keyCodeToCInt KC_8 = 9+keyCodeToCInt KC_9 = 10+keyCodeToCInt KC_0 = 11+keyCodeToCInt KC_MINUS = 12+keyCodeToCInt KC_EQUALS = 13+keyCodeToCInt KC_BACK = 14+keyCodeToCInt KC_TAB = 15+keyCodeToCInt KC_Q = 16+keyCodeToCInt KC_W = 17+keyCodeToCInt KC_E = 18+keyCodeToCInt KC_R = 19+keyCodeToCInt KC_T = 20+keyCodeToCInt KC_Y = 21+keyCodeToCInt KC_U = 22+keyCodeToCInt KC_I = 23+keyCodeToCInt KC_O = 24+keyCodeToCInt KC_P = 25+keyCodeToCInt KC_LBRACKET = 26+keyCodeToCInt KC_RBRACKET = 27+keyCodeToCInt KC_RETURN = 28+keyCodeToCInt KC_LCONTROL = 29+keyCodeToCInt KC_A = 30+keyCodeToCInt KC_S = 31+keyCodeToCInt KC_D = 32+keyCodeToCInt KC_F = 33+keyCodeToCInt KC_G = 34+keyCodeToCInt KC_H = 35+keyCodeToCInt KC_J = 36+keyCodeToCInt KC_K = 37+keyCodeToCInt KC_L = 38+keyCodeToCInt KC_SEMICOLON = 39+keyCodeToCInt KC_APOSTROPHE = 40+keyCodeToCInt KC_GRAVE = 41+keyCodeToCInt KC_LSHIFT = 42+keyCodeToCInt KC_BACKSLASH = 43+keyCodeToCInt KC_Z = 44+keyCodeToCInt KC_X = 45+keyCodeToCInt KC_C = 46+keyCodeToCInt KC_V = 47+keyCodeToCInt KC_B = 48+keyCodeToCInt KC_N = 49+keyCodeToCInt KC_M = 50+keyCodeToCInt KC_COMMA = 51+keyCodeToCInt KC_PERIOD = 52+keyCodeToCInt KC_SLASH = 53+keyCodeToCInt KC_RSHIFT = 54+keyCodeToCInt KC_MULTIPLY = 55+keyCodeToCInt KC_LMENU = 56+keyCodeToCInt KC_SPACE = 57+keyCodeToCInt KC_CAPITAL = 58+keyCodeToCInt KC_F1 = 59+keyCodeToCInt KC_F2 = 60+keyCodeToCInt KC_F3 = 61+keyCodeToCInt KC_F4 = 62+keyCodeToCInt KC_F5 = 63+keyCodeToCInt KC_F6 = 64+keyCodeToCInt KC_F7 = 65+keyCodeToCInt KC_F8 = 66+keyCodeToCInt KC_F9 = 67+keyCodeToCInt KC_F10 = 68+keyCodeToCInt KC_NUMLOCK = 69+keyCodeToCInt KC_SCROLL = 70+keyCodeToCInt KC_NUMPAD7 = 71+keyCodeToCInt KC_NUMPAD8 = 72+keyCodeToCInt KC_NUMPAD9 = 73+keyCodeToCInt KC_SUBTRACT = 74+keyCodeToCInt KC_NUMPAD4 = 75+keyCodeToCInt KC_NUMPAD5 = 76+keyCodeToCInt KC_NUMPAD6 = 77+keyCodeToCInt KC_ADD = 78+keyCodeToCInt KC_NUMPAD1 = 79+keyCodeToCInt KC_NUMPAD2 = 80+keyCodeToCInt KC_NUMPAD3 = 81+keyCodeToCInt KC_NUMPAD0 = 82+keyCodeToCInt KC_DECIMAL = 83+keyCodeToCInt KC_OEM_102 = 86+keyCodeToCInt KC_F11 = 87+keyCodeToCInt KC_F12 = 88+keyCodeToCInt KC_F13 = 100+keyCodeToCInt KC_F14 = 101+keyCodeToCInt KC_F15 = 102+keyCodeToCInt KC_KANA = 112+keyCodeToCInt KC_ABNT_C1 = 115+keyCodeToCInt KC_CONVERT = 121+keyCodeToCInt KC_NOCONVERT = 123+keyCodeToCInt KC_YEN = 125+keyCodeToCInt KC_ABNT_C2 = 126+keyCodeToCInt KC_NUMPADEQUALS = 141+keyCodeToCInt KC_PREVTRACK = 144+keyCodeToCInt KC_AT = 145+keyCodeToCInt KC_COLON = 146+keyCodeToCInt KC_UNDERLINE = 147+keyCodeToCInt KC_KANJI = 148+keyCodeToCInt KC_STOP = 149+keyCodeToCInt KC_AX = 150+keyCodeToCInt KC_UNLABELED = 151+keyCodeToCInt KC_NEXTTRACK = 153+keyCodeToCInt KC_NUMPADENTER = 156+keyCodeToCInt KC_RCONTROL = 157+keyCodeToCInt KC_MUTE = 160+keyCodeToCInt KC_CALCULATOR = 161+keyCodeToCInt KC_PLAYPAUSE = 162+keyCodeToCInt KC_MEDIASTOP = 164+keyCodeToCInt KC_VOLUMEDOWN = 174+keyCodeToCInt KC_VOLUMEUP = 176+keyCodeToCInt KC_WEBHOME = 178+keyCodeToCInt KC_NUMPADCOMMA = 179+keyCodeToCInt KC_DIVIDE = 181+keyCodeToCInt KC_SYSRQ = 183+keyCodeToCInt KC_RMENU = 184+keyCodeToCInt KC_PAUSE = 197+keyCodeToCInt KC_HOME = 199+keyCodeToCInt KC_UP = 200+keyCodeToCInt KC_PGUP = 201+keyCodeToCInt KC_LEFT = 203+keyCodeToCInt KC_RIGHT = 205+keyCodeToCInt KC_END = 207+keyCodeToCInt KC_DOWN = 208+keyCodeToCInt KC_PGDOWN = 209+keyCodeToCInt KC_INSERT = 210+keyCodeToCInt KC_DELETE = 211+keyCodeToCInt KC_LWIN = 219+keyCodeToCInt KC_RWIN = 220+keyCodeToCInt KC_APPS = 221+keyCodeToCInt KC_POWER = 222+keyCodeToCInt KC_SLEEP = 223+keyCodeToCInt KC_WAKE = 227+keyCodeToCInt KC_WEBSEARCH = 229+keyCodeToCInt KC_WEBFAVORITES = 230+keyCodeToCInt KC_WEBREFRESH = 231+keyCodeToCInt KC_WEBSTOP = 232+keyCodeToCInt KC_WEBFORWARD = 233+keyCodeToCInt KC_WEBBACK = 234+keyCodeToCInt KC_MYCOMPUTER = 235+keyCodeToCInt KC_MAIL = 236+keyCodeToCInt KC_MEDIASELECT = 237++cintToKeyCode :: CInt -> KeyCode+cintToKeyCode 0 = KC_UNASSIGNED+cintToKeyCode 1 = KC_ESCAPE+cintToKeyCode 2 = KC_1+cintToKeyCode 3 = KC_2+cintToKeyCode 4 = KC_3+cintToKeyCode 5 = KC_4+cintToKeyCode 6 = KC_5+cintToKeyCode 7 = KC_6+cintToKeyCode 8 = KC_7+cintToKeyCode 9 = KC_8+cintToKeyCode 10 = KC_9+cintToKeyCode 11 = KC_0+cintToKeyCode 12 = KC_MINUS+cintToKeyCode 13 = KC_EQUALS+cintToKeyCode 14 = KC_BACK+cintToKeyCode 15 = KC_TAB+cintToKeyCode 16 = KC_Q+cintToKeyCode 17 = KC_W+cintToKeyCode 18 = KC_E+cintToKeyCode 19 = KC_R+cintToKeyCode 20 = KC_T+cintToKeyCode 21 = KC_Y+cintToKeyCode 22 = KC_U+cintToKeyCode 23 = KC_I+cintToKeyCode 24 = KC_O+cintToKeyCode 25 = KC_P+cintToKeyCode 26 = KC_LBRACKET+cintToKeyCode 27 = KC_RBRACKET+cintToKeyCode 28 = KC_RETURN+cintToKeyCode 29 = KC_LCONTROL+cintToKeyCode 30 = KC_A+cintToKeyCode 31 = KC_S+cintToKeyCode 32 = KC_D+cintToKeyCode 33 = KC_F+cintToKeyCode 34 = KC_G+cintToKeyCode 35 = KC_H+cintToKeyCode 36 = KC_J+cintToKeyCode 37 = KC_K+cintToKeyCode 38 = KC_L+cintToKeyCode 39 = KC_SEMICOLON+cintToKeyCode 40 = KC_APOSTROPHE+cintToKeyCode 41 = KC_GRAVE+cintToKeyCode 42 = KC_LSHIFT+cintToKeyCode 43 = KC_BACKSLASH+cintToKeyCode 44 = KC_Z+cintToKeyCode 45 = KC_X+cintToKeyCode 46 = KC_C+cintToKeyCode 47 = KC_V+cintToKeyCode 48 = KC_B+cintToKeyCode 49 = KC_N+cintToKeyCode 50 = KC_M+cintToKeyCode 51 = KC_COMMA+cintToKeyCode 52 = KC_PERIOD+cintToKeyCode 53 = KC_SLASH+cintToKeyCode 54 = KC_RSHIFT+cintToKeyCode 55 = KC_MULTIPLY+cintToKeyCode 56 = KC_LMENU+cintToKeyCode 57 = KC_SPACE+cintToKeyCode 58 = KC_CAPITAL+cintToKeyCode 59 = KC_F1+cintToKeyCode 60 = KC_F2+cintToKeyCode 61 = KC_F3+cintToKeyCode 62 = KC_F4+cintToKeyCode 63 = KC_F5+cintToKeyCode 64 = KC_F6+cintToKeyCode 65 = KC_F7+cintToKeyCode 66 = KC_F8+cintToKeyCode 67 = KC_F9+cintToKeyCode 68 = KC_F10+cintToKeyCode 69 = KC_NUMLOCK+cintToKeyCode 70 = KC_SCROLL+cintToKeyCode 71 = KC_NUMPAD7+cintToKeyCode 72 = KC_NUMPAD8+cintToKeyCode 73 = KC_NUMPAD9+cintToKeyCode 74 = KC_SUBTRACT+cintToKeyCode 75 = KC_NUMPAD4+cintToKeyCode 76 = KC_NUMPAD5+cintToKeyCode 77 = KC_NUMPAD6+cintToKeyCode 78 = KC_ADD+cintToKeyCode 79 = KC_NUMPAD1+cintToKeyCode 80 = KC_NUMPAD2+cintToKeyCode 81 = KC_NUMPAD3+cintToKeyCode 82 = KC_NUMPAD0+cintToKeyCode 83 = KC_DECIMAL+cintToKeyCode 86 = KC_OEM_102+cintToKeyCode 87 = KC_F11+cintToKeyCode 88 = KC_F12+cintToKeyCode 100 = KC_F13+cintToKeyCode 101 = KC_F14+cintToKeyCode 102 = KC_F15+cintToKeyCode 112 = KC_KANA+cintToKeyCode 115 = KC_ABNT_C1+cintToKeyCode 121 = KC_CONVERT+cintToKeyCode 123 = KC_NOCONVERT+cintToKeyCode 125 = KC_YEN+cintToKeyCode 126 = KC_ABNT_C2+cintToKeyCode 141 = KC_NUMPADEQUALS+cintToKeyCode 144 = KC_PREVTRACK+cintToKeyCode 145 = KC_AT+cintToKeyCode 146 = KC_COLON+cintToKeyCode 147 = KC_UNDERLINE+cintToKeyCode 148 = KC_KANJI+cintToKeyCode 149 = KC_STOP+cintToKeyCode 150 = KC_AX+cintToKeyCode 151 = KC_UNLABELED+cintToKeyCode 153 = KC_NEXTTRACK+cintToKeyCode 156 = KC_NUMPADENTER+cintToKeyCode 157 = KC_RCONTROL+cintToKeyCode 160 = KC_MUTE+cintToKeyCode 161 = KC_CALCULATOR+cintToKeyCode 162 = KC_PLAYPAUSE+cintToKeyCode 164 = KC_MEDIASTOP+cintToKeyCode 174 = KC_VOLUMEDOWN+cintToKeyCode 176 = KC_VOLUMEUP+cintToKeyCode 178 = KC_WEBHOME+cintToKeyCode 179 = KC_NUMPADCOMMA+cintToKeyCode 181 = KC_DIVIDE+cintToKeyCode 183 = KC_SYSRQ+cintToKeyCode 184 = KC_RMENU+cintToKeyCode 197 = KC_PAUSE+cintToKeyCode 199 = KC_HOME+cintToKeyCode 200 = KC_UP+cintToKeyCode 201 = KC_PGUP+cintToKeyCode 203 = KC_LEFT+cintToKeyCode 205 = KC_RIGHT+cintToKeyCode 207 = KC_END+cintToKeyCode 208 = KC_DOWN+cintToKeyCode 209 = KC_PGDOWN+cintToKeyCode 210 = KC_INSERT+cintToKeyCode 211 = KC_DELETE+cintToKeyCode 219 = KC_LWIN+cintToKeyCode 220 = KC_RWIN+cintToKeyCode 221 = KC_APPS+cintToKeyCode 222 = KC_POWER+cintToKeyCode 223 = KC_SLEEP+cintToKeyCode 227 = KC_WAKE+cintToKeyCode 229 = KC_WEBSEARCH+cintToKeyCode 230 = KC_WEBFAVORITES+cintToKeyCode 231 = KC_WEBREFRESH+cintToKeyCode 232 = KC_WEBSTOP+cintToKeyCode 233 = KC_WEBFORWARD+cintToKeyCode 234 = KC_WEBBACK+cintToKeyCode 235 = KC_MYCOMPUTER+cintToKeyCode 236 = KC_MAIL+cintToKeyCode 237 = KC_MEDIASELECT+cintToKeyCode n = error $ "cintToKeyCode: can not convert integer '" ++ show n ++ "' to KeyCode"++newtype KeyEvent = KeyEvent (Ptr KeyEvent) -- nullary data type+newtype KeyListener = KeyListener (Ptr KeyListener) -- nullary data type+newtype Keyboard = Keyboard (Ptr Keyboard) -- nullary data type++data Modifier = Shift | Ctrl | Alt++modifierToCInt :: Modifier -> CInt+modifierToCInt Shift = 1+modifierToCInt Ctrl = 16+modifierToCInt Alt = 256++cintToModifier :: CInt -> Modifier+cintToModifier 1 = Shift+cintToModifier 16 = Ctrl+cintToModifier 256 = Alt+cintToModifier n = error $ "cintToModifier: can not convert integer '" ++ show n ++ "' to Modifier"+++data TextTranslationMode = Off | Unicode | Ascii++textTranslationModeToCInt :: TextTranslationMode -> CInt+textTranslationModeToCInt Off = 0+textTranslationModeToCInt Unicode = 1+textTranslationModeToCInt Ascii = 2++cintToTextTranslationMode :: CInt -> TextTranslationMode+cintToTextTranslationMode 0 = Off+cintToTextTranslationMode 1 = Unicode+cintToTextTranslationMode 2 = Ascii+cintToTextTranslationMode n = error $ "cintToTextTranslationMode: can not convert integer '" ++ show n ++ "' to TextTranslationMode"++newtype Mouse = Mouse (Ptr Mouse) -- nullary data type++data MouseButtonID = MB_Left | MB_Right | MB_Middle | MB_Button3 | MB_Button4 | MB_Button5 | MB_Button6 | MB_Button7++mouseButtonIDToCInt :: MouseButtonID -> CInt+mouseButtonIDToCInt MB_Left = 0+mouseButtonIDToCInt MB_Right = 1+mouseButtonIDToCInt MB_Middle = 2+mouseButtonIDToCInt MB_Button3 = 3+mouseButtonIDToCInt MB_Button4 = 4+mouseButtonIDToCInt MB_Button5 = 5+mouseButtonIDToCInt MB_Button6 = 6+mouseButtonIDToCInt MB_Button7 = 7++cintToMouseButtonID :: CInt -> MouseButtonID+cintToMouseButtonID 0 = MB_Left+cintToMouseButtonID 1 = MB_Right+cintToMouseButtonID 2 = MB_Middle+cintToMouseButtonID 3 = MB_Button3+cintToMouseButtonID 4 = MB_Button4+cintToMouseButtonID 5 = MB_Button5+cintToMouseButtonID 6 = MB_Button6+cintToMouseButtonID 7 = MB_Button7+cintToMouseButtonID n = error $ "cintToMouseButtonID: can not convert integer '" ++ show n ++ "' to MouseButtonID"++newtype MouseEvent = MouseEvent (Ptr MouseEvent) -- nullary data type+newtype MouseListener = MouseListener (Ptr MouseListener) -- nullary data type+newtype MouseState = MouseState (Ptr MouseState) -- nullary data type+newtype MultiTouch = MultiTouch (Ptr MultiTouch) -- nullary data type+newtype MultiTouchEvent = MultiTouchEvent (Ptr MultiTouchEvent) -- nullary data type+newtype MultiTouchListener = MultiTouchListener (Ptr MultiTouchListener) -- nullary data type+newtype MultiTouchState = MultiTouchState (Ptr MultiTouchState) -- nullary data type++data MultiTypeEventTypeID = MT_None | MT_Pressed | MT_Released | MT_Moved | MT_Cancelled++multiTypeEventTypeIDToCInt :: MultiTypeEventTypeID -> CInt+multiTypeEventTypeIDToCInt MT_None = 0+multiTypeEventTypeIDToCInt MT_Pressed = 1+multiTypeEventTypeIDToCInt MT_Released = 2+multiTypeEventTypeIDToCInt MT_Moved = 3+multiTypeEventTypeIDToCInt MT_Cancelled = 4++cintToMultiTypeEventTypeID :: CInt -> MultiTypeEventTypeID+cintToMultiTypeEventTypeID 0 = MT_None+cintToMultiTypeEventTypeID 1 = MT_Pressed+cintToMultiTypeEventTypeID 2 = MT_Released+cintToMultiTypeEventTypeID 3 = MT_Moved+cintToMultiTypeEventTypeID 4 = MT_Cancelled+cintToMultiTypeEventTypeID n = error $ "cintToMultiTypeEventTypeID: can not convert integer '" ++ show n ++ "' to MultiTypeEventTypeID"++newtype Object = Object (Ptr Object) -- nullary data type+newtype ParamList = ParamList (Ptr ParamList) -- nullary data type+newtype Pov = Pov (Ptr Pov) -- nullary data type+newtype Slider = Slider (Ptr Slider) -- nullary data type++data Type = OISUnknown | OISKeyboard | OISMouse | OISJoyStick | OISTablet | OISMultiTouch++typeToCInt :: Type -> CInt+typeToCInt OISUnknown = 0+typeToCInt OISKeyboard = 1+typeToCInt OISMouse = 2+typeToCInt OISJoyStick = 3+typeToCInt OISTablet = 4+typeToCInt OISMultiTouch = 5++cintToType :: CInt -> Type+cintToType 0 = OISUnknown+cintToType 1 = OISKeyboard+cintToType 2 = OISMouse+cintToType 3 = OISJoyStick+cintToType 4 = OISTablet+cintToType 5 = OISMultiTouch+cintToType n = error $ "cintToType: can not convert integer '" ++ show n ++ "' to Type"++newtype Vector3 = Vector3 (Ptr Vector3) -- nullary data type+newtype Void = Void (Ptr Void) -- nullary data type++class CComponent a where+ toComponent :: a -> Component++instance CComponent Button where+ toComponent (Button p) = Component (castPtr p)++instance CComponent Axis where+ toComponent (Axis p) = Component (castPtr p)++instance CComponent Vector3 where+ toComponent (Vector3 p) = Component (castPtr p)++instance CComponent Pov where+ toComponent (Pov p) = Component (castPtr p)++instance CComponent Slider where+ toComponent (Slider p) = Component (castPtr p)++class CEventArg a where+ toEventArg :: a -> EventArg++instance CEventArg MouseEvent where+ toEventArg (MouseEvent p) = EventArg (castPtr p)++instance CEventArg JoyStickEvent where+ toEventArg (JoyStickEvent p) = EventArg (castPtr p)++instance CEventArg MultiTouchEvent where+ toEventArg (MultiTouchEvent p) = EventArg (castPtr p)++instance CEventArg KeyEvent where+ toEventArg (KeyEvent p) = EventArg (castPtr p)++class CObject a where+ toObject :: a -> Object++instance CObject Mouse where+ toObject (Mouse p) = Object (castPtr p)++instance CObject JoyStick where+ toObject (JoyStick p) = Object (castPtr p)++instance CObject MultiTouch where+ toObject (MultiTouch p) = Object (castPtr p)++instance CObject Keyboard where+ toObject (Keyboard p) = Object (castPtr p)+
+ Setup.hs view
@@ -0,0 +1,2 @@+import Distribution.Simple+main = defaultMain
+ cbits/OISEvents.cpp view
@@ -0,0 +1,12 @@+#define CGEN_OUTPUT_INTERN+#include "OISEvents.h"+EventArg* OIS_EventArg_new(Object* obj)+{+ return new EventArg(obj);+}++void OIS_EventArg_delete(EventArg* this_ptr)+{+ delete this_ptr;+}+
+ cbits/OISEvents.h view
@@ -0,0 +1,22 @@+#ifndef CGEN_OISEVENTS_H+#define CGEN_OISEVENTS_H++#include <OIS/OIS.h>++extern "C"+{++using namespace OIS;++++#ifdef CGEN_HS+#endif++EventArg* OIS_EventArg_new(Object* obj);+void OIS_EventArg_delete(EventArg* this_ptr);++}++#endif+
+ cbits/OISFactoryCreator.cpp view
@@ -0,0 +1,32 @@+#define CGEN_OUTPUT_INTERN+#include "OISFactoryCreator.h"+void OIS_FactoryCreator_delete(FactoryCreator* this_ptr)+{+ delete this_ptr;+}++DeviceList OIS_FactoryCreator_freeDeviceList(FactoryCreator* this_ptr)+{+ return this_ptr->freeDeviceList();+}++int OIS_FactoryCreator_totalDevices(FactoryCreator* this_ptr, Type iType)+{+ return this_ptr->totalDevices(iType);+}++int OIS_FactoryCreator_freeDevices(FactoryCreator* this_ptr, Type iType)+{+ return this_ptr->freeDevices(iType);+}++Object* OIS_FactoryCreator_createObject(FactoryCreator* this_ptr, InputManager* creator, Type iType, bool bufferMode, const char* vendor)+{+ return this_ptr->createObject(creator, iType, bufferMode, vendor);+}++void OIS_FactoryCreator_destroyObject(FactoryCreator* this_ptr, Object* obj)+{+ this_ptr->destroyObject(obj);+}+
+ cbits/OISFactoryCreator.h view
@@ -0,0 +1,26 @@+#ifndef CGEN_OISFACTORYCREATOR_H+#define CGEN_OISFACTORYCREATOR_H++#include <OIS/OIS.h>++extern "C"+{++using namespace OIS;++++#ifdef CGEN_HS+#endif++void OIS_FactoryCreator_delete(FactoryCreator* this_ptr);+DeviceList OIS_FactoryCreator_freeDeviceList(FactoryCreator* this_ptr);+int OIS_FactoryCreator_totalDevices(FactoryCreator* this_ptr, Type iType);+int OIS_FactoryCreator_freeDevices(FactoryCreator* this_ptr, Type iType);+Object* OIS_FactoryCreator_createObject(FactoryCreator* this_ptr, InputManager* creator, Type iType, bool bufferMode, const char* vendor);+void OIS_FactoryCreator_destroyObject(FactoryCreator* this_ptr, Object* obj);++}++#endif+
+ cbits/OISInputManager.cpp view
@@ -0,0 +1,57 @@+#define CGEN_OUTPUT_INTERN+#include "OISInputManager.h"+unsigned int OIS_InputManager_getVersionNumber()+{+ return InputManager::getVersionNumber();+}++InputManager* OIS_InputManager_createInputSystem_size_t(size_t winHandle)+{+ return InputManager::createInputSystem(winHandle);+}++InputManager* OIS_InputManager_createInputSystem(ParamList* paramList)+{+ return InputManager::createInputSystem(*paramList);+}++void OIS_InputManager_destroyInputSystem(InputManager* manager)+{+ InputManager::destroyInputSystem(manager);+}++int OIS_InputManager_getNumberOfDevices(InputManager* this_ptr, Type iType)+{+ return this_ptr->getNumberOfDevices(iType);+}++DeviceList OIS_InputManager_listFreeDevices(InputManager* this_ptr)+{+ return this_ptr->listFreeDevices();+}++Object* OIS_InputManager_createInputObject(InputManager* this_ptr, Type iType, bool bufferMode, const char* vendor)+{+ return this_ptr->createInputObject(iType, bufferMode, vendor);+}++void OIS_InputManager_destroyInputObject(InputManager* this_ptr, Object* obj)+{+ this_ptr->destroyInputObject(obj);+}++void OIS_InputManager_addFactoryCreator(InputManager* this_ptr, FactoryCreator* factory)+{+ this_ptr->addFactoryCreator(factory);+}++void OIS_InputManager_removeFactoryCreator(InputManager* this_ptr, FactoryCreator* factory)+{+ this_ptr->removeFactoryCreator(factory);+}++void OIS_InputManager_enableAddOnFactory(InputManager* this_ptr, InputManager::AddOnFactories factory)+{+ this_ptr->enableAddOnFactory(factory);+}+
+ cbits/OISInputManager.h view
@@ -0,0 +1,38 @@+#ifndef CGEN_OISINPUTMANAGER_H+#define CGEN_OISINPUTMANAGER_H++#include <OIS/OIS.h>++extern "C"+{++using namespace OIS;++++#ifdef CGEN_HS+enum AddOnFactories {+ AddOn_All = 0,+ AddOn_LIRC = 1,+ AddOn_WiiMote = 2+};+++#endif++unsigned int OIS_InputManager_getVersionNumber();+InputManager* OIS_InputManager_createInputSystem_size_t(size_t winHandle);+InputManager* OIS_InputManager_createInputSystem(ParamList* paramList);+void OIS_InputManager_destroyInputSystem(InputManager* manager);+int OIS_InputManager_getNumberOfDevices(InputManager* this_ptr, Type iType);+DeviceList OIS_InputManager_listFreeDevices(InputManager* this_ptr);+Object* OIS_InputManager_createInputObject(InputManager* this_ptr, Type iType, bool bufferMode, const char* vendor);+void OIS_InputManager_destroyInputObject(InputManager* this_ptr, Object* obj);+void OIS_InputManager_addFactoryCreator(InputManager* this_ptr, FactoryCreator* factory);+void OIS_InputManager_removeFactoryCreator(InputManager* this_ptr, FactoryCreator* factory);+void OIS_InputManager_enableAddOnFactory(InputManager* this_ptr, InputManager::AddOnFactories factory);++}++#endif+
+ cbits/OISInterface.cpp view
@@ -0,0 +1,12 @@+#define CGEN_OUTPUT_INTERN+#include "OISInterface.h"+Interface* OIS_Interface_new()+{+ return new Interface();+}++void OIS_Interface_delete(Interface* this_ptr)+{+ delete this_ptr;+}+
+ cbits/OISInterface.h view
@@ -0,0 +1,28 @@+#ifndef CGEN_OISINTERFACE_H+#define CGEN_OISINTERFACE_H++#include <OIS/OIS.h>++extern "C"+{++using namespace OIS;++++#ifdef CGEN_HS+enum IType {+ ForceFeedback = 0,+ Reserved = 1+};+++#endif++Interface* OIS_Interface_new();+void OIS_Interface_delete(Interface* this_ptr);++}++#endif+
+ cbits/OISJoyStick.cpp view
@@ -0,0 +1,112 @@+#define CGEN_OUTPUT_INTERN+#include "OISJoyStick.h"+void OIS_Pov_delete(Pov* this_ptr)+{+ delete this_ptr;+}++void OIS_Slider_delete(Slider* this_ptr)+{+ delete this_ptr;+}++void OIS_JoyStickState_delete(JoyStickState* this_ptr)+{+ delete this_ptr;+}++Pov* OIS_Pov_new()+{+ return new Pov();+}++Slider* OIS_Slider_new()+{+ return new Slider();+}++JoyStickState* OIS_JoyStickState_new()+{+ return new JoyStickState();+}++void OIS_JoyStickState_clear(JoyStickState* this_ptr)+{+ this_ptr->clear();+}++JoyStickEvent* OIS_JoyStickEvent_new(Object* obj, const JoyStickState* st)+{+ return new JoyStickEvent(obj, *st);+}++void OIS_JoyStickEvent_delete(JoyStickEvent* this_ptr)+{+ delete this_ptr;+}++void OIS_JoyStickListener_delete(JoyStickListener* this_ptr)+{+ delete this_ptr;+}++bool OIS_JoyStickListener_buttonPressed(JoyStickListener* this_ptr, const JoyStickEvent* arg, int button)+{+ return this_ptr->buttonPressed(*arg, button);+}++bool OIS_JoyStickListener_buttonReleased(JoyStickListener* this_ptr, const JoyStickEvent* arg, int button)+{+ return this_ptr->buttonReleased(*arg, button);+}++bool OIS_JoyStickListener_axisMoved(JoyStickListener* this_ptr, const JoyStickEvent* arg, int axis)+{+ return this_ptr->axisMoved(*arg, axis);+}++bool OIS_JoyStickListener_povMoved(JoyStickListener* this_ptr, const JoyStickEvent* arg, int index)+{+ return this_ptr->povMoved(*arg, index);+}++bool OIS_JoyStickListener_vector3Moved(JoyStickListener* this_ptr, const JoyStickEvent* arg, int index)+{+ return this_ptr->vector3Moved(*arg, index);+}++void OIS_JoyStick_delete(JoyStick* this_ptr)+{+ delete this_ptr;+}++int OIS_JoyStick_getNumberOfComponents(const JoyStick* this_ptr, ComponentType cType)+{+ return this_ptr->getNumberOfComponents(cType);+}++void OIS_JoyStick_setVector3Sensitivity(JoyStick* this_ptr, float degrees)+{+ this_ptr->setVector3Sensitivity(degrees);+}++float OIS_JoyStick_getVector3Sensitivity(const JoyStick* this_ptr)+{+ return this_ptr->getVector3Sensitivity();+}++void OIS_JoyStick_setEventCallback(JoyStick* this_ptr, JoyStickListener* joyListener)+{+ this_ptr->setEventCallback(joyListener);+}++const JoyStickListener* OIS_JoyStick_getEventCallback(const JoyStick* this_ptr)+{+ return this_ptr->getEventCallback();+}++const JoyStickState* OIS_JoyStick_getJoyStickState(const JoyStick* this_ptr)+{+ return &this_ptr->getJoyStickState();+}+
+ cbits/OISJoyStick.h view
@@ -0,0 +1,42 @@+#ifndef CGEN_OISJOYSTICK_H+#define CGEN_OISJOYSTICK_H++#include <OIS/OIS.h>++extern "C"+{++using namespace OIS;++++#ifdef CGEN_HS+#endif++void OIS_Pov_delete(Pov* this_ptr);+void OIS_Slider_delete(Slider* this_ptr);+void OIS_JoyStickState_delete(JoyStickState* this_ptr);+Pov* OIS_Pov_new();+Slider* OIS_Slider_new();+JoyStickState* OIS_JoyStickState_new();+void OIS_JoyStickState_clear(JoyStickState* this_ptr);+JoyStickEvent* OIS_JoyStickEvent_new(Object* obj, const JoyStickState* st);+void OIS_JoyStickEvent_delete(JoyStickEvent* this_ptr);+void OIS_JoyStickListener_delete(JoyStickListener* this_ptr);+bool OIS_JoyStickListener_buttonPressed(JoyStickListener* this_ptr, const JoyStickEvent* arg, int button);+bool OIS_JoyStickListener_buttonReleased(JoyStickListener* this_ptr, const JoyStickEvent* arg, int button);+bool OIS_JoyStickListener_axisMoved(JoyStickListener* this_ptr, const JoyStickEvent* arg, int axis);+bool OIS_JoyStickListener_povMoved(JoyStickListener* this_ptr, const JoyStickEvent* arg, int index);+bool OIS_JoyStickListener_vector3Moved(JoyStickListener* this_ptr, const JoyStickEvent* arg, int index);+void OIS_JoyStick_delete(JoyStick* this_ptr);+int OIS_JoyStick_getNumberOfComponents(const JoyStick* this_ptr, ComponentType cType);+void OIS_JoyStick_setVector3Sensitivity(JoyStick* this_ptr, float degrees);+float OIS_JoyStick_getVector3Sensitivity(const JoyStick* this_ptr);+void OIS_JoyStick_setEventCallback(JoyStick* this_ptr, JoyStickListener* joyListener);+const JoyStickListener* OIS_JoyStick_getEventCallback(const JoyStick* this_ptr);+const JoyStickState* OIS_JoyStick_getJoyStickState(const JoyStick* this_ptr);++}++#endif+
+ cbits/OISKeyboard.cpp view
@@ -0,0 +1,62 @@+#define CGEN_OUTPUT_INTERN+#include "OISKeyboard.h"+KeyEvent* OIS_KeyEvent_new(Object* obj, KeyCode kc, unsigned int txt)+{+ return new KeyEvent(obj, kc, txt);+}++void OIS_KeyEvent_delete(KeyEvent* this_ptr)+{+ delete this_ptr;+}++void OIS_KeyListener_delete(KeyListener* this_ptr)+{+ delete this_ptr;+}++bool OIS_KeyListener_keyPressed(KeyListener* this_ptr, const KeyEvent* arg)+{+ return this_ptr->keyPressed(*arg);+}++bool OIS_KeyListener_keyReleased(KeyListener* this_ptr, const KeyEvent* arg)+{+ return this_ptr->keyReleased(*arg);+}++void OIS_Keyboard_delete(Keyboard* this_ptr)+{+ delete this_ptr;+}++bool OIS_Keyboard_isKeyDown(const Keyboard* this_ptr, KeyCode key)+{+ return this_ptr->isKeyDown(key);+}++void OIS_Keyboard_setEventCallback(Keyboard* this_ptr, KeyListener* keyListener)+{+ this_ptr->setEventCallback(keyListener);+}++const KeyListener* OIS_Keyboard_getEventCallback(const Keyboard* this_ptr)+{+ return this_ptr->getEventCallback();+}++void OIS_Keyboard_setTextTranslation(Keyboard* this_ptr, Keyboard::TextTranslationMode mode)+{+ this_ptr->setTextTranslation(mode);+}++Keyboard::TextTranslationMode OIS_Keyboard_getTextTranslation(const Keyboard* this_ptr)+{+ return this_ptr->getTextTranslation();+}++bool OIS_Keyboard_isModifierDown(const Keyboard* this_ptr, Keyboard::Modifier mod)+{+ return this_ptr->isModifierDown(mod);+}+
+ cbits/OISKeyboard.h view
@@ -0,0 +1,195 @@+#ifndef CGEN_OISKEYBOARD_H+#define CGEN_OISKEYBOARD_H++#include <OIS/OIS.h>++extern "C"+{++using namespace OIS;++++#ifdef CGEN_HS+enum KeyCode {+ KC_UNASSIGNED = 0,+ KC_ESCAPE = 1,+ KC_1 = 2,+ KC_2 = 3,+ KC_3 = 4,+ KC_4 = 5,+ KC_5 = 6,+ KC_6 = 7,+ KC_7 = 8,+ KC_8 = 9,+ KC_9 = 10,+ KC_0 = 11,+ KC_MINUS = 12,+ KC_EQUALS = 13,+ KC_BACK = 14,+ KC_TAB = 15,+ KC_Q = 16,+ KC_W = 17,+ KC_E = 18,+ KC_R = 19,+ KC_T = 20,+ KC_Y = 21,+ KC_U = 22,+ KC_I = 23,+ KC_O = 24,+ KC_P = 25,+ KC_LBRACKET = 26,+ KC_RBRACKET = 27,+ KC_RETURN = 28,+ KC_LCONTROL = 29,+ KC_A = 30,+ KC_S = 31,+ KC_D = 32,+ KC_F = 33,+ KC_G = 34,+ KC_H = 35,+ KC_J = 36,+ KC_K = 37,+ KC_L = 38,+ KC_SEMICOLON = 39,+ KC_APOSTROPHE = 40,+ KC_GRAVE = 41,+ KC_LSHIFT = 42,+ KC_BACKSLASH = 43,+ KC_Z = 44,+ KC_X = 45,+ KC_C = 46,+ KC_V = 47,+ KC_B = 48,+ KC_N = 49,+ KC_M = 50,+ KC_COMMA = 51,+ KC_PERIOD = 52,+ KC_SLASH = 53,+ KC_RSHIFT = 54,+ KC_MULTIPLY = 55,+ KC_LMENU = 56,+ KC_SPACE = 57,+ KC_CAPITAL = 58,+ KC_F1 = 59,+ KC_F2 = 60,+ KC_F3 = 61,+ KC_F4 = 62,+ KC_F5 = 63,+ KC_F6 = 64,+ KC_F7 = 65,+ KC_F8 = 66,+ KC_F9 = 67,+ KC_F10 = 68,+ KC_NUMLOCK = 69,+ KC_SCROLL = 70,+ KC_NUMPAD7 = 71,+ KC_NUMPAD8 = 72,+ KC_NUMPAD9 = 73,+ KC_SUBTRACT = 74,+ KC_NUMPAD4 = 75,+ KC_NUMPAD5 = 76,+ KC_NUMPAD6 = 77,+ KC_ADD = 78,+ KC_NUMPAD1 = 79,+ KC_NUMPAD2 = 80,+ KC_NUMPAD3 = 81,+ KC_NUMPAD0 = 82,+ KC_DECIMAL = 83,+ KC_OEM_102 = 86,+ KC_F11 = 87,+ KC_F12 = 88,+ KC_F13 = 100,+ KC_F14 = 101,+ KC_F15 = 102,+ KC_KANA = 112,+ KC_ABNT_C1 = 115,+ KC_CONVERT = 121,+ KC_NOCONVERT = 123,+ KC_YEN = 125,+ KC_ABNT_C2 = 126,+ KC_NUMPADEQUALS = 141,+ KC_PREVTRACK = 144,+ KC_AT = 145,+ KC_COLON = 146,+ KC_UNDERLINE = 147,+ KC_KANJI = 148,+ KC_STOP = 149,+ KC_AX = 150,+ KC_UNLABELED = 151,+ KC_NEXTTRACK = 153,+ KC_NUMPADENTER = 156,+ KC_RCONTROL = 157,+ KC_MUTE = 160,+ KC_CALCULATOR = 161,+ KC_PLAYPAUSE = 162,+ KC_MEDIASTOP = 164,+ KC_VOLUMEDOWN = 174,+ KC_VOLUMEUP = 176,+ KC_WEBHOME = 178,+ KC_NUMPADCOMMA = 179,+ KC_DIVIDE = 181,+ KC_SYSRQ = 183,+ KC_RMENU = 184,+ KC_PAUSE = 197,+ KC_HOME = 199,+ KC_UP = 200,+ KC_PGUP = 201,+ KC_LEFT = 203,+ KC_RIGHT = 205,+ KC_END = 207,+ KC_DOWN = 208,+ KC_PGDOWN = 209,+ KC_INSERT = 210,+ KC_DELETE = 211,+ KC_LWIN = 219,+ KC_RWIN = 220,+ KC_APPS = 221,+ KC_POWER = 222,+ KC_SLEEP = 223,+ KC_WAKE = 227,+ KC_WEBSEARCH = 229,+ KC_WEBFAVORITES = 230,+ KC_WEBREFRESH = 231,+ KC_WEBSTOP = 232,+ KC_WEBFORWARD = 233,+ KC_WEBBACK = 234,+ KC_MYCOMPUTER = 235,+ KC_MAIL = 236,+ KC_MEDIASELECT = 237+};+++enum TextTranslationMode {+ Off = 0,+ Unicode = 1,+ Ascii = 2+};+++enum Modifier {+ Shift = 1,+ Ctrl = 16,+ Alt = 256+};+++#endif++KeyEvent* OIS_KeyEvent_new(Object* obj, KeyCode kc, unsigned int txt);+void OIS_KeyEvent_delete(KeyEvent* this_ptr);+void OIS_KeyListener_delete(KeyListener* this_ptr);+bool OIS_KeyListener_keyPressed(KeyListener* this_ptr, const KeyEvent* arg);+bool OIS_KeyListener_keyReleased(KeyListener* this_ptr, const KeyEvent* arg);+void OIS_Keyboard_delete(Keyboard* this_ptr);+bool OIS_Keyboard_isKeyDown(const Keyboard* this_ptr, KeyCode key);+void OIS_Keyboard_setEventCallback(Keyboard* this_ptr, KeyListener* keyListener);+const KeyListener* OIS_Keyboard_getEventCallback(const Keyboard* this_ptr);+void OIS_Keyboard_setTextTranslation(Keyboard* this_ptr, Keyboard::TextTranslationMode mode);+Keyboard::TextTranslationMode OIS_Keyboard_getTextTranslation(const Keyboard* this_ptr);+bool OIS_Keyboard_isModifierDown(const Keyboard* this_ptr, Keyboard::Modifier mod);++}++#endif+
+ cbits/OISMouse.cpp view
@@ -0,0 +1,72 @@+#define CGEN_OUTPUT_INTERN+#include "OISMouse.h"+void OIS_MouseState_delete(MouseState* this_ptr)+{+ delete this_ptr;+}++MouseState* OIS_MouseState_new()+{+ return new MouseState();+}++bool OIS_MouseState_buttonDown(const MouseState* this_ptr, MouseButtonID button)+{+ return this_ptr->buttonDown(button);+}++void OIS_MouseState_clear(MouseState* this_ptr)+{+ this_ptr->clear();+}++MouseEvent* OIS_MouseEvent_new(Object* obj, const MouseState* ms)+{+ return new MouseEvent(obj, *ms);+}++void OIS_MouseEvent_delete(MouseEvent* this_ptr)+{+ delete this_ptr;+}++void OIS_MouseListener_delete(MouseListener* this_ptr)+{+ delete this_ptr;+}++bool OIS_MouseListener_mouseMoved(MouseListener* this_ptr, const MouseEvent* arg)+{+ return this_ptr->mouseMoved(*arg);+}++bool OIS_MouseListener_mousePressed(MouseListener* this_ptr, const MouseEvent* arg, MouseButtonID id)+{+ return this_ptr->mousePressed(*arg, id);+}++bool OIS_MouseListener_mouseReleased(MouseListener* this_ptr, const MouseEvent* arg, MouseButtonID id)+{+ return this_ptr->mouseReleased(*arg, id);+}++void OIS_Mouse_delete(Mouse* this_ptr)+{+ delete this_ptr;+}++void OIS_Mouse_setEventCallback(Mouse* this_ptr, MouseListener* mouseListener)+{+ this_ptr->setEventCallback(mouseListener);+}++const MouseListener* OIS_Mouse_getEventCallback(const Mouse* this_ptr)+{+ return this_ptr->getEventCallback();+}++const MouseState* OIS_Mouse_getMouseState(const Mouse* this_ptr)+{+ return &this_ptr->getMouseState();+}+
+ cbits/OISMouse.h view
@@ -0,0 +1,46 @@+#ifndef CGEN_OISMOUSE_H+#define CGEN_OISMOUSE_H++#include <OIS/OIS.h>++extern "C"+{++using namespace OIS;++++#ifdef CGEN_HS+enum MouseButtonID {+ MB_Left = 0,+ MB_Right = 1,+ MB_Middle = 2,+ MB_Button3 = 3,+ MB_Button4 = 4,+ MB_Button5 = 5,+ MB_Button6 = 6,+ MB_Button7 = 7+};+++#endif++void OIS_MouseState_delete(MouseState* this_ptr);+MouseState* OIS_MouseState_new();+bool OIS_MouseState_buttonDown(const MouseState* this_ptr, MouseButtonID button);+void OIS_MouseState_clear(MouseState* this_ptr);+MouseEvent* OIS_MouseEvent_new(Object* obj, const MouseState* ms);+void OIS_MouseEvent_delete(MouseEvent* this_ptr);+void OIS_MouseListener_delete(MouseListener* this_ptr);+bool OIS_MouseListener_mouseMoved(MouseListener* this_ptr, const MouseEvent* arg);+bool OIS_MouseListener_mousePressed(MouseListener* this_ptr, const MouseEvent* arg, MouseButtonID id);+bool OIS_MouseListener_mouseReleased(MouseListener* this_ptr, const MouseEvent* arg, MouseButtonID id);+void OIS_Mouse_delete(Mouse* this_ptr);+void OIS_Mouse_setEventCallback(Mouse* this_ptr, MouseListener* mouseListener);+const MouseListener* OIS_Mouse_getEventCallback(const Mouse* this_ptr);+const MouseState* OIS_Mouse_getMouseState(const Mouse* this_ptr);++}++#endif+
+ cbits/OISMultiTouch.cpp view
@@ -0,0 +1,92 @@+#define CGEN_OUTPUT_INTERN+#include "OISMultiTouch.h"+void OIS_MultiTouchState_delete(MultiTouchState* this_ptr)+{+ delete this_ptr;+}++MultiTouchState* OIS_MultiTouchState_new()+{+ return new MultiTouchState();+}++bool OIS_MultiTouchState_touchIsType(const MultiTouchState* this_ptr, MultiTypeEventTypeID touch)+{+ return this_ptr->touchIsType(touch);+}++void OIS_MultiTouchState_clear(MultiTouchState* this_ptr)+{+ this_ptr->clear();+}++MultiTouchEvent* OIS_MultiTouchEvent_new(Object* obj, const MultiTouchState* ms)+{+ return new MultiTouchEvent(obj, *ms);+}++void OIS_MultiTouchEvent_delete(MultiTouchEvent* this_ptr)+{+ delete this_ptr;+}++void OIS_MultiTouchListener_delete(MultiTouchListener* this_ptr)+{+ delete this_ptr;+}++bool OIS_MultiTouchListener_touchMoved(MultiTouchListener* this_ptr, const MultiTouchEvent* arg)+{+ return this_ptr->touchMoved(*arg);+}++bool OIS_MultiTouchListener_touchPressed(MultiTouchListener* this_ptr, const MultiTouchEvent* arg)+{+ return this_ptr->touchPressed(*arg);+}++bool OIS_MultiTouchListener_touchReleased(MultiTouchListener* this_ptr, const MultiTouchEvent* arg)+{+ return this_ptr->touchReleased(*arg);+}++bool OIS_MultiTouchListener_touchCancelled(MultiTouchListener* this_ptr, const MultiTouchEvent* arg)+{+ return this_ptr->touchCancelled(*arg);+}++void OIS_MultiTouch_delete(MultiTouch* this_ptr)+{+ delete this_ptr;+}++void OIS_MultiTouch_setEventCallback(MultiTouch* this_ptr, MultiTouchListener* touchListener)+{+ this_ptr->setEventCallback(touchListener);+}++MultiTouchListener* OIS_MultiTouch_getEventCallback(MultiTouch* this_ptr)+{+ return this_ptr->getEventCallback();+}++void OIS_MultiTouch_clearStates(MultiTouch* this_ptr)+{+ this_ptr->clearStates();+}++std::vector<MultiTouchState> OIS_MultiTouch_getMultiTouchStates(const MultiTouch* this_ptr)+{+ return this_ptr->getMultiTouchStates();+}++const std::vector<MultiTouchState> OIS_MultiTouch_getFirstNTouchStates(MultiTouch* this_ptr, int n)+{+ return this_ptr->getFirstNTouchStates(n);+}++const std::vector<MultiTouchState> OIS_MultiTouch_getMultiTouchStatesOfType(MultiTouch* this_ptr, MultiTypeEventTypeID type)+{+ return this_ptr->getMultiTouchStatesOfType(type);+}+
+ cbits/OISMultiTouch.h view
@@ -0,0 +1,47 @@+#ifndef CGEN_OISMULTITOUCH_H+#define CGEN_OISMULTITOUCH_H++#include <OIS/OIS.h>++extern "C"+{++using namespace OIS;++++#ifdef CGEN_HS+enum MultiTypeEventTypeID {+ MT_None = 0,+ MT_Pressed = 1,+ MT_Released = 2,+ MT_Moved = 3,+ MT_Cancelled = 4+};+++#endif++void OIS_MultiTouchState_delete(MultiTouchState* this_ptr);+MultiTouchState* OIS_MultiTouchState_new();+bool OIS_MultiTouchState_touchIsType(const MultiTouchState* this_ptr, MultiTypeEventTypeID touch);+void OIS_MultiTouchState_clear(MultiTouchState* this_ptr);+MultiTouchEvent* OIS_MultiTouchEvent_new(Object* obj, const MultiTouchState* ms);+void OIS_MultiTouchEvent_delete(MultiTouchEvent* this_ptr);+void OIS_MultiTouchListener_delete(MultiTouchListener* this_ptr);+bool OIS_MultiTouchListener_touchMoved(MultiTouchListener* this_ptr, const MultiTouchEvent* arg);+bool OIS_MultiTouchListener_touchPressed(MultiTouchListener* this_ptr, const MultiTouchEvent* arg);+bool OIS_MultiTouchListener_touchReleased(MultiTouchListener* this_ptr, const MultiTouchEvent* arg);+bool OIS_MultiTouchListener_touchCancelled(MultiTouchListener* this_ptr, const MultiTouchEvent* arg);+void OIS_MultiTouch_delete(MultiTouch* this_ptr);+void OIS_MultiTouch_setEventCallback(MultiTouch* this_ptr, MultiTouchListener* touchListener);+MultiTouchListener* OIS_MultiTouch_getEventCallback(MultiTouch* this_ptr);+void OIS_MultiTouch_clearStates(MultiTouch* this_ptr);+std::vector<MultiTouchState> OIS_MultiTouch_getMultiTouchStates(const MultiTouch* this_ptr);+const std::vector<MultiTouchState> OIS_MultiTouch_getFirstNTouchStates(MultiTouch* this_ptr, int n);+const std::vector<MultiTouchState> OIS_MultiTouch_getMultiTouchStatesOfType(MultiTouch* this_ptr, MultiTypeEventTypeID type);++}++#endif+
+ cbits/OISObject.cpp view
@@ -0,0 +1,47 @@+#define CGEN_OUTPUT_INTERN+#include "OISObject.h"+void OIS_Object_delete(Object* this_ptr)+{+ delete this_ptr;+}++Type OIS_Object_type(const Object* this_ptr)+{+ return this_ptr->type();+}++bool OIS_Object_buffered(const Object* this_ptr)+{+ return this_ptr->buffered();+}++const InputManager* OIS_Object_getCreator(const Object* this_ptr)+{+ return this_ptr->getCreator();+}++void OIS_Object_setBuffered(Object* this_ptr, bool buffered)+{+ this_ptr->setBuffered(buffered);+}++void OIS_Object_capture(Object* this_ptr)+{+ this_ptr->capture();+}++int OIS_Object_getID(const Object* this_ptr)+{+ return this_ptr->getID();+}++Interface* OIS_Object_queryInterface(Object* this_ptr, Interface::IType type)+{+ return this_ptr->queryInterface(type);+}++void OIS_Object__initialize(Object* this_ptr)+{+ this_ptr->_initialize();+}+
+ cbits/OISObject.h view
@@ -0,0 +1,29 @@+#ifndef CGEN_OISOBJECT_H+#define CGEN_OISOBJECT_H++#include <OIS/OIS.h>++extern "C"+{++using namespace OIS;++++#ifdef CGEN_HS+#endif++void OIS_Object_delete(Object* this_ptr);+Type OIS_Object_type(const Object* this_ptr);+bool OIS_Object_buffered(const Object* this_ptr);+const InputManager* OIS_Object_getCreator(const Object* this_ptr);+void OIS_Object_setBuffered(Object* this_ptr, bool buffered);+void OIS_Object_capture(Object* this_ptr);+int OIS_Object_getID(const Object* this_ptr);+Interface* OIS_Object_queryInterface(Object* this_ptr, Interface::IType type);+void OIS_Object__initialize(Object* this_ptr);++}++#endif+
+ cbits/OISPrereqs.cpp view
@@ -0,0 +1,67 @@+#define CGEN_OUTPUT_INTERN+#include "OISPrereqs.h"+void OIS_Component_delete(Component* this_ptr)+{+ delete this_ptr;+}++void OIS_Button_delete(Button* this_ptr)+{+ delete this_ptr;+}++void OIS_Axis_delete(Axis* this_ptr)+{+ delete this_ptr;+}++void OIS_Vector3_delete(Vector3* this_ptr)+{+ delete this_ptr;+}++Component* OIS_Component_new_void()+{+ return new Component();+}++Component* OIS_Component_new(ComponentType type)+{+ return new Component(type);+}++Button* OIS_Button_new_void()+{+ return new Button();+}++Button* OIS_Button_new(bool bPushed)+{+ return new Button(bPushed);+}++Axis* OIS_Axis_new()+{+ return new Axis();+}++void OIS_Axis_clear(Axis* this_ptr)+{+ this_ptr->clear();+}++Vector3* OIS_Vector3_new_void()+{+ return new Vector3();+}++Vector3* OIS_Vector3_new(float _x, float _y, float _z)+{+ return new Vector3(_x, _y, _z);+}++void OIS_Vector3_clear(Vector3* this_ptr)+{+ this_ptr->clear();+}+
+ cbits/OISPrereqs.h view
@@ -0,0 +1,53 @@+#ifndef CGEN_OISPREREQS_H+#define CGEN_OISPREREQS_H++#include <OIS/OIS.h>++extern "C"+{++using namespace OIS;++++#ifdef CGEN_HS+enum Type {+ OISUnknown = 0,+ OISKeyboard = 1,+ OISMouse = 2,+ OISJoyStick = 3,+ OISTablet = 4,+ OISMultiTouch = 5+};+++enum ComponentType {+ OIS_Unknown = 0,+ OIS_Button = 1,+ OIS_Axis = 2,+ OIS_Slider = 3,+ OIS_POV = 4,+ OIS_Vector3 = 5+};+++#endif++void OIS_Component_delete(Component* this_ptr);+void OIS_Button_delete(Button* this_ptr);+void OIS_Axis_delete(Axis* this_ptr);+void OIS_Vector3_delete(Vector3* this_ptr);+Component* OIS_Component_new_void();+Component* OIS_Component_new(ComponentType type);+Button* OIS_Button_new_void();+Button* OIS_Button_new(bool bPushed);+Axis* OIS_Axis_new();+void OIS_Axis_clear(Axis* this_ptr);+Vector3* OIS_Vector3_new_void();+Vector3* OIS_Vector3_new(float _x, float _y, float _z);+void OIS_Vector3_clear(Vector3* this_ptr);++}++#endif+
+ examples/OISConsole.hs view
@@ -0,0 +1,50 @@+module Main+where++import Unsafe.Coerce++import Control.Monad(when)+import Control.Concurrent(threadDelay)+import System.Environment(getEnv)++import Graphics.X11.Xlib++import OIS+import OIS.Types++main = do+ displayname <- getEnv "DISPLAY"+ xdisp <- openDisplay displayname -- TODO: check for null ptr+ xwin <- createSimpleWindow xdisp (defaultRootWindow xdisp) 0 0 100 100 0 0 0+ mapWindow xdisp xwin+ selectInput xdisp xwin structureNotifyMask+ allocaXEvent $ \ev -> do+ let fn = do+ nextEvent xdisp ev+ et <- get_EventType ev+ if et /= mapNotify + then fn+ else return ()+ fn++ let hwnd = fromIntegral xwin+ im <- inputManager_createInputSystem_size_t hwnd+ -- unsafeCoerce instead of static_cast+ ms <- unsafeCoerce $ inputManager_createInputObject im OISMouse True ""+ kb <- unsafeCoerce $ inputManager_createInputObject im OISKeyboard True ""+ run ms kb++run ms kb = do+ threadDelay 50000+ object_capture (toObject kb)+ object_capture (toObject ms)++ mstate <- mouse_getMouseState ms+ bd <- mouseState_buttonDown mstate MB_Left+ when bd $ putStrLn "Left mouse button is down"+ + esc <- keyboard_isKeyDown kb KC_ESCAPE+ if esc+ then putStrLn "Escape pressed"+ else run ms kb+
+ hois.cabal view
@@ -0,0 +1,92 @@+name: hois+category: GUI+description: Bindings to the OIS input system.++version: 0.1.0.0+synopsis: OIS bindings+-- description: +license: BSD3+license-file: LICENSE+author: Antti Salonen and Greg Horn+maintainer: Greg Horn <gregmainland@gmail.com>+-- copyright: +-- category: +build-type: Simple+cabal-version: >=1.8++extra-source-files: interface/ois.gr+ interface/ois.hif+ interface/ois.if+ run_cgen.sh+ cbits/OISEvents.h+ cbits/OISFactoryCreator.h+ cbits/OISInputManager.h+ cbits/OISInterface.h+ cbits/OISJoyStick.h+ cbits/OISKeyboard.h+ cbits/OISMouse.h+ cbits/OISMultiTouch.h+ cbits/OISObject.h+-- OISForceFeedback.h+ cbits/OISPrereqs.h++library+ C-sources: cbits/OISEvents.cpp+ cbits/OISFactoryCreator.cpp+ cbits/OISInputManager.cpp+ cbits/OISInterface.cpp+ cbits/OISJoyStick.cpp+ cbits/OISKeyboard.cpp+ cbits/OISMouse.cpp+ cbits/OISMultiTouch.cpp+ cbits/OISObject.cpp+-- OISForceFeedback.cpp+ cbits/OISPrereqs.cpp++ extra-libraries: OIS++-- Includes: OISEvents.h+-- OISFactoryCreator.h+-- OISInputManager.h+-- OISInterface.h+-- OISJoyStick.h+---- OISKeyboard.h+-- OISMouse.h+-- OISMultiTouch.h+-- OISObject.h+---- OISForceFeedback.h,+-- OISPrereqs.h+--+-- Install-includes: OISEvents.h+-- OISFactoryCreator.h+-- OISInputManager.h+-- OISInterface.h+-- OISJoyStick.h+---- OISKeyboard.h+-- OISMouse.h+-- OISMultiTouch.h+-- OISObject.h+---- OISForceFeedback.h,+-- OISPrereqs.h++ exposed-modules: OIS,+ OIS.OISMultiTouch,+ OIS.OISFactoryCreator,+ OIS.OISKeyboard,+ OIS.Types,+ OIS.OISInputManager,+ OIS.OISObject,+ OIS.OISJoyStick,+ OIS.OISMouse,+ OIS.OISEvents,+-- OIS.OISForceFeedback,+ OIS.OISPrereqs,+ OIS.OISInterface+-- ghc-options: -pgml g+++ build-depends: base ==4.5.*+++executable OISConsole+ build-depends: hois, base == 4.5.*, X11 >= 1.5 && < 1.7+ main-is: examples/OISConsole.hs+-- extra-libraries: stdc++
+ interface/ois.gr view
@@ -0,0 +1,26 @@+Component|+Button|Component+Axis|Component+Vector3|Component+Object|+MouseState|+MouseEvent|EventArg+MouseListener|+Mouse|Object+Pov|Component+Slider|Component+JoyStickState|+JoyStickEvent|EventArg+JoyStickListener|+JoyStick|Object+MultiTouchState|+MultiTouchEvent|EventArg+MultiTouchListener|+MultiTouch|Object+InputManager|+FactoryCreator|+EventArg|+Interface|+KeyEvent|EventArg+KeyListener|+Keyboard|Object
+ interface/ois.hif view
@@ -0,0 +1,3 @@+@default-in+char*+
+ interface/ois.if view
@@ -0,0 +1,16 @@+@exclude+getVersionName+sliderMoved+copyKeyStates+inputSystemName+getAsString+vendor++@rename+std::size_t|size_t+# Implicit coercion.+std::string|char*++@header+OIS/OIS.h+
+ run_cgen.sh view
@@ -0,0 +1,30 @@+#!/bin/sh++#rm OIS/*+#rm cbits/*++HEADERLIST="--include /usr/include/OIS OISPrereqs.h \+ OISObject.h \+ OISMouse.h \+ OISJoyStick.h \+ OISMultiTouch.h \+ OISInputManager.h \+ OISFactoryCreator.h \+ OISEvents.h \+ OISInterface.h \+ OISKeyboard.h"+# OISForceFeedback.h \ # cgen-hs makes faulty file+# OISException.h \ # cgen fails+# OISEffect.h # cgen fails+# OISConfig.h \ # not intended for api use++GRAPHFILE=interface/ois.gr++cgen -o cbits/ --interface interface/ois.if $HEADERLIST++grgen -o $GRAPHFILE $HEADERLIST++cgen-hs --inherit $GRAPHFILE \+ --interface interface/ois.hif \+ -o OIS/ \+ --hierarchy OIS. cbits/*.h