ObjectName 1.0.0.0 → 1.0.1.0
raw patch · 3 files changed
+58/−17 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Data.ObjectName: class ObjectName a => GeneratableObjectName a where genObjectName = fmap head $ genObjectNames 1 genObjectNames = flip replicateM genObjectName
+ Data.ObjectName: deleteObjectName :: ObjectName a => a -> IO ()
+ Data.ObjectName: genObjectName :: GeneratableObjectName a => IO a
- Data.ObjectName: class ObjectName a
+ Data.ObjectName: class ObjectName a where deleteObjectName = deleteObjectNames . (: []) deleteObjectNames = mapM_ deleteObjectName
- Data.ObjectName: genObjectNames :: ObjectName a => Int -> IO [a]
+ Data.ObjectName: genObjectNames :: GeneratableObjectName a => Int -> IO [a]
Files
- LICENSE +1/−1
- ObjectName.cabal +4/−4
- src/Data/ObjectName.hs +53/−12
LICENSE view
@@ -1,4 +1,4 @@-Copyright (c) 2009, Sven Panne+Copyright (c) 2014, Sven Panne All rights reserved. Redistribution and use in source and binary forms, with or without
ObjectName.cabal view
@@ -1,10 +1,10 @@ name: ObjectName-version: 1.0.0.0+version: 1.0.1.0 license: BSD3 license-file: LICENSE-maintainer: Sven Panne <sven.panne@aedion.de>-bug-reports: mailto:hopengl@haskell.org-homepage: http://www.haskell.org/HOpenGL/+maintainer: Sven Panne <svenpanne@gmail.com>+bug-reports: https://github.com/haskell-opengl/ObjectName/issues+homepage: https://github.com/haskell-opengl/ObjectName category: Data synopsis: Explicitly handled object names description:
src/Data/ObjectName.hs view
@@ -1,31 +1,72 @@+{-# LANGUAGE CPP #-} -------------------------------------------------------------------------------- -- | -- Module : Data.ObjectName--- Copyright : (c) Sven Panne 2009--- License : BSD-style (see the file LICENSE)+-- Copyright : (c) Sven Panne 2014+-- License : BSD3 -- --- Maintainer : sven.panne@aedion.de+-- Maintainer : Sven Panne <svenpanne@gmail.com> -- Stability : stable -- Portability : portable -- -- Object names are explicitly handled identifiers for API objects, e.g. a--- texture object name in OpenGL or a buffer object name in OpenAL.+-- texture object name in OpenGL or a buffer object name in OpenAL. They come in+-- two flavors: If a name can exist on its own without an associated object, we+-- have a 'GeneratableObjectName', otherwise we have an 'ObjectName'. -- -------------------------------------------------------------------------------- -module Data.ObjectName ( ObjectName(..) ) where+module Data.ObjectName (+ ObjectName(..), GeneratableObjectName(..)+) where +import Control.Monad ( replicateM )++--------------------------------------------------------------------------------+ -- | An 'ObjectName' is an explicitly handled identifier for API objects, e.g. a -- texture object name in OpenGL or a buffer object name in OpenAL.+#if __GLASGOW_HASKELL__ < 708+--+-- Minimal complete definition: 'isObjectName' plus one of 'deleteObjectName' or+-- 'deleteObjectNames'.+#endif class ObjectName a where- -- | Generate a given number of object names, which are guaranteed to be- -- unused. By generating the names, they become used.- genObjectNames :: Int -> IO [a]-- -- | Make the given object names available again, declaring them as unused.- deleteObjectNames:: [a] -> IO ()-+#if __GLASGOW_HASKELL__ >= 708+ {-# MINIMAL isObjectName, ( deleteObjectName | deleteObjectNames ) #-}+#endif -- | Test if the given object name is currently in use, i.e. test if it has -- been generated, but not been deleted so far. isObjectName :: a -> IO Bool++ -- | Make the given object name available again, declaring it as unused.+ deleteObjectName :: a -> IO ()+ deleteObjectName = deleteObjectNames . (:[])++ -- | Bulk version of 'deleteObjectName'.+ deleteObjectNames:: [a] -> IO ()+ deleteObjectNames = mapM_ deleteObjectName++-- | A 'GeneratableObjectName' is an 'ObjectName' which can be generated without+-- creating an associated object at the same time, e.g. an OpenGL buffer object+-- name. Note that e.g. OpenGL program object names do not fall into this+-- category, because you can only create such a name together with a program+-- object itself.+#if __GLASGOW_HASKELL__ < 708+--+-- Minimal complete definition: One of 'genObjectName' or 'genObjectNames'.+#endif++class ObjectName a => GeneratableObjectName a where+#if __GLASGOW_HASKELL__ >= 708+ {-# MINIMAL genObjectName | genObjectNames #-}+#endif+ -- | Generate a new unused object name. By generating the name, it becomes+ -- used.+ genObjectName :: IO a+ genObjectName = fmap head $ genObjectNames 1++ -- | Bulk version of 'genObjectName'.+ genObjectNames :: Int -> IO [a]+ genObjectNames = flip replicateM genObjectName