summaryrefslogtreecommitdiffstats
path: root/GLDriver.hs
diff options
context:
space:
mode:
Diffstat (limited to 'GLDriver.hs')
-rw-r--r--GLDriver.hs25
1 files changed, 25 insertions, 0 deletions
diff --git a/GLDriver.hs b/GLDriver.hs
new file mode 100644
index 0000000..e527d09
--- /dev/null
+++ b/GLDriver.hs
@@ -0,0 +1,25 @@
+{-# LANGUAGE ExistentialQuantification #-}
+
+module GLDriver ( GLDriver(..)
+ , Event
+ , SomeEvent(..)
+ ) where
+
+import Data.Typeable
+
+
+class GLDriver a where
+ initialized :: a -> Bool
+
+ initGL :: a -> IO a
+ deinitGL :: a -> IO ()
+
+ nextEvent :: a -> IO (Maybe SomeEvent)
+
+
+class Typeable a => Event a
+
+data SomeEvent = forall a. Event a => SomeEvent a
+
+fromEvent :: Event a => SomeEvent -> Maybe a
+fromEvent (SomeEvent a) = cast a