packages feed

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 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