packages feed

aztecs-asset 0.1.0.0 → 0.2.0.0

raw patch · 2 files changed

+17/−14 lines, 2 filesdep ~aztecsdep ~basedep ~containersPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: aztecs, base, containers

API changes (from Hackage documentation)

+ Data.Aztecs.Asset: type AssetConfig a;
+ Data.Aztecs.Asset: }
- Data.Aztecs.Asset: AssetServer :: Map AssetId a -> Map AssetId (IORef (Maybe a)) -> AssetId -> AssetServer a
+ Data.Aztecs.Asset: AssetServer :: !Map AssetId a -> !Map AssetId (IORef (Maybe a)) -> !AssetId -> AssetServer a
- Data.Aztecs.Asset: [assetServerAssets] :: AssetServer a -> Map AssetId a
+ Data.Aztecs.Asset: [assetServerAssets] :: AssetServer a -> !Map AssetId a
- Data.Aztecs.Asset: [loadingAssets] :: AssetServer a -> Map AssetId (IORef (Maybe a))
+ Data.Aztecs.Asset: [loadingAssets] :: AssetServer a -> !Map AssetId (IORef (Maybe a))
- Data.Aztecs.Asset: [nextAssetId] :: AssetServer a -> AssetId
+ Data.Aztecs.Asset: [nextAssetId] :: AssetServer a -> !AssetId
- Data.Aztecs.Asset: class Asset a
+ Data.Aztecs.Asset: class Asset a where {
- Data.Aztecs.Asset: load :: Asset a => FilePath -> AssetServer a -> IO (Handle a, AssetServer a)
+ Data.Aztecs.Asset: load :: Asset a => FilePath -> AssetConfig a -> AssetServer a -> IO (Handle a, AssetServer a)
- Data.Aztecs.Asset: loadAsset :: Asset a => FilePath -> IO a
+ Data.Aztecs.Asset: loadAsset :: Asset a => FilePath -> AssetConfig a -> IO a

Files

aztecs-asset.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.4 name:          aztecs-asset-version:       0.1.0.0+version:       0.2.0.0 license:       BSD-3-Clause license-file:  LICENSE maintainer:    matt@hunzinger.me@@ -26,8 +26,8 @@     default-language: Haskell2010     ghc-options:      -Wall     build-depends:-        base >=4 && <5,-        aztecs >= 0.3,-        containers >=0.7,+        base >=4.6 && <5,+        aztecs >= 0.5,+        containers >=0.6,         mtl >=2,         linear >= 1
src/Data/Aztecs/Asset.hs view
@@ -3,6 +3,7 @@ {-# LANGUAGE RankNTypes #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-}+{-# LANGUAGE TypeFamilies #-}  module Data.Aztecs.Asset where @@ -15,16 +16,16 @@ import Data.Data (Typeable) import Data.Foldable (foldrM) import Data.IORef (IORef, newIORef, readIORef, writeIORef)-import Data.Map (Map)-import qualified Data.Map as Map+import Data.Map.Strict (Map)+import qualified Data.Map.Strict as Map  newtype AssetId = AssetId {unAssetId :: Int}   deriving (Eq, Ord, Show)  data AssetServer a = AssetServer-  { assetServerAssets :: Map AssetId a,-    loadingAssets :: Map AssetId (IORef (Maybe a)),-    nextAssetId :: AssetId+  { assetServerAssets :: !(Map AssetId a),+    loadingAssets :: !(Map AssetId (IORef (Maybe a))),+    nextAssetId :: !AssetId   }  instance (Typeable a) => Component (AssetServer a)@@ -38,17 +39,19 @@     }  class Asset a where-  loadAsset :: FilePath -> IO a+  type AssetConfig a +  loadAsset :: FilePath -> AssetConfig a -> IO a+ newtype Handle a = Handle {handleId :: AssetId}   deriving (Eq, Ord, Show) -load :: (Asset a) => FilePath -> AssetServer a -> IO (Handle a, AssetServer a)-load path server = do+load :: (Asset a) => FilePath -> AssetConfig a -> AssetServer a -> IO (Handle a, AssetServer a)+load path cfg server = do   let assetId = nextAssetId server   v <- newIORef Nothing   _ <- forkIO $ do-    a <- loadAsset path+    a <- loadAsset path cfg     writeIORef v (Just a)   return     ( Handle assetId,@@ -65,7 +68,7 @@ loadAssets =   S.map_     ( Q.fetch @_ @(AssetServer a)-        >>> Q.run+        >>> Q.task           ( \server ->               foldrM                 ( \(aId, v) acc -> do