Skip to content

Commit daf09ec

Browse files
committed
Added getStringWith.
1 parent dad5eb5 commit daf09ec

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

src/Graphics/Rendering/OpenGL/GL/ByteString.hs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,13 @@
1616
module Graphics.Rendering.OpenGL.GL.ByteString (
1717
B.ByteString, stringQuery, createAndTrimByteString,
1818
withByteString, withGLstring,
19-
packUtf8, unpackUtf8
19+
packUtf8, unpackUtf8,
20+
getStringWith
2021
) where
2122

2223
import Data.StateVar
2324
import Foreign.Ptr
25+
import Graphics.Rendering.OpenGL.GL.QueryUtils
2426
import Graphics.Rendering.OpenGL.Raw
2527
import qualified Data.ByteString as B
2628
import qualified Data.ByteString.Internal as BI
@@ -60,3 +62,9 @@ packUtf8 = TE.encodeUtf8 . T.pack
6062

6163
unpackUtf8 :: B.ByteString -> String
6264
unpackUtf8 = T.unpack . TE.decodeUtf8
65+
66+
getStringWith :: IO (Ptr GLubyte) -> IO String
67+
getStringWith getStr = getStr >>= maybeNullPtr (return "") peekGLstring
68+
69+
peekGLstring :: Ptr GLubyte -> IO String
70+
peekGLstring p = fmap unpackUtf8 $ BU.unsafePackCString (castPtr p)

src/Graphics/Rendering/OpenGL/GL/StringQueries.hs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,7 @@ module Graphics.Rendering.OpenGL.GL.StringQueries (
2121
import Data.Bits
2222
import Data.Char
2323
import Data.StateVar
24-
import Foreign.C.String
25-
import Foreign.Ptr
24+
import Graphics.Rendering.OpenGL.GL.ByteString
2625
import Graphics.Rendering.OpenGL.GL.QueryUtils
2726
import Graphics.Rendering.OpenGL.Raw
2827

@@ -66,7 +65,7 @@ i2cps bitfield =
6665
--------------------------------------------------------------------------------
6766

6867
getString :: GLenum -> IO String
69-
getString n = glGetString n >>= maybeNullPtr (return "") (peekCString . castPtr)
68+
getString = getStringWith . glGetString
7069

7170
--------------------------------------------------------------------------------
7271

src/Graphics/Rendering/OpenGL/GLU/Initialization.hs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,8 @@ module Graphics.Rendering.OpenGL.GLU.Initialization (
1717
) where
1818

1919
import Data.StateVar
20-
import Foreign.C.String
21-
import Foreign.Ptr
2220
import Graphics.Rendering.GLU.Raw
23-
import Graphics.Rendering.OpenGL.GL.QueryUtils
21+
import Graphics.Rendering.OpenGL.GL.ByteString
2422
import Graphics.Rendering.OpenGL.Raw
2523

2624
--------------------------------------------------------------------------------
@@ -32,5 +30,4 @@ gluExtensions :: GettableStateVar [String]
3230
gluExtensions = makeGettableStateVar (fmap words $ getString glu_EXTENSIONS)
3331

3432
getString :: GLenum -> IO String
35-
getString n = gluGetString n >>=
36-
maybeNullPtr (return "") (peekCString . castPtr)
33+
getString = getStringWith . gluGetString

0 commit comments

Comments
 (0)