]> gitweb @ CieloNegro.org - EsounD.git/commitdiff
Sound.EsounD.Internals
authorPHO <pho@cielonegro.org>
Sat, 6 Nov 2010 06:05:45 +0000 (15:05 +0900)
committerPHO <pho@cielonegro.org>
Sat, 6 Nov 2010 06:05:45 +0000 (15:05 +0900)
EsounD.cabal
Sound/EsounD.hs
Sound/EsounD/Internals.hs [new file with mode: 0644]

index bdee7b5472fe51b8c4e96d5569699b957e9101b3..cb7e8e156fe9140981552cd0a695ce515480b855 100644 (file)
@@ -35,6 +35,9 @@ Library
     Exposed-Modules:
         Sound.EsounD
 
+    Other-Modules:
+        Sound.EsounD.Internals
+
     Extensions:
         EmptyDataDecls
         KindSignatures
index 16e85a5ddd4a61f9fba39eb1a81781ca70ce2197..82bd72afeb3d22cbe7ed2b9155c48fae9b096b54 100644 (file)
@@ -13,20 +13,17 @@ module Sound.EsounD
 
 import Bindings.EsounD
 import Control.Monad.IO.Class
-import Control.Monad.Trans.Region as R
+import Control.Monad.Trans.Region
 import Control.Monad.Trans.Region.OnExit
 import Control.Monad.Unicode
 import Data.Bits
 import Data.Int
 import Foreign.C.String
-import Foreign.C.Types
-import Foreign.Ptr
 import Network
 import Prelude.Unicode
+import Sound.EsounD.Internals
 import System.IO
 import System.IO.SaferFileHandles.Unsafe
-import System.Posix.IO
-import System.Posix.Types
 
 class Frame fr where
     frameFmt ∷ fr → C'esd_format_t
@@ -61,7 +58,7 @@ data Player fr ch (r ∷ * → *)
       }
 
 instance Dup (Player fr ch) where
-    dup pl = do ch' ← R.dup (plCloseH pl)
+    dup pl = do ch' ← dup (plCloseH pl)
                 return pl { plCloseH = ch' }
 
 -- | Open an ESD handle for playing a stream.
@@ -99,16 +96,3 @@ openPlayer rate host name
                        hostPtr
                        namePtr
                        ≫= wrapSocket "esd_play_stream() returned an error"
-
-wrapSocket :: String -> CInt → IO Handle
-wrapSocket e (-1) = fail e
-wrapSocket _ fd   = fdToHandle (Fd fd)
-
-closeSocket :: Handle → IO ()
-closeSocket h = do (Fd fd) ← handleToFd h
-                   _       ← c'esd_close (fromIntegral fd)
-                   return ()
-
-withCStrOrNull :: Maybe String → (CString → IO a) → IO a
-withCStrOrNull Nothing  f = f nullPtr
-withCStrOrNull (Just s) f = withCString s f
diff --git a/Sound/EsounD/Internals.hs b/Sound/EsounD/Internals.hs
new file mode 100644 (file)
index 0000000..987dd1e
--- /dev/null
@@ -0,0 +1,27 @@
+module Sound.EsounD.Internals
+    ( wrapSocket
+    , closeSocket
+    , withCStrOrNull
+    )
+    where
+
+import Bindings.EsounD
+import Foreign.C.String
+import Foreign.C.Types
+import Foreign.Ptr
+import System.IO
+import System.Posix.IO
+import System.Posix.Types
+
+wrapSocket :: String -> CInt → IO Handle
+wrapSocket e (-1) = fail e
+wrapSocket _ fd   = fdToHandle (Fd fd)
+
+closeSocket :: Handle → IO ()
+closeSocket h = do (Fd fd) ← handleToFd h
+                   _       ← c'esd_close (fromIntegral fd)
+                   return ()
+
+withCStrOrNull :: Maybe String → (CString → IO a) → IO a
+withCStrOrNull Nothing  f = f nullPtr
+withCStrOrNull (Just s) f = withCString s f