packages feed

HsSyck 0.50 → 0.51

raw patch · 3 files changed

+24/−15 lines, 3 filesdep +hashtables

Dependencies added: hashtables

Files

Changes view
@@ -1,3 +1,9 @@+[Changes for 0.51 - 2013-11-08]++* Port to hashtables package for compatibility with GHC 7.8.+* Switch internal integer hash algorithm to Cuckoo hashing.+  Reported by: Henk-Jan van Tuyl+ [Changes for 0.50 - 2011-03-19]  * parseYaml and emitYaml now work with Unicode Strings.
Data/Yaml/Syck.hsc view
@@ -22,7 +22,7 @@ import Foreign.Storable import System.IO.Unsafe import GHC.Ptr (Ptr(..))-import qualified Data.HashTable as Hash+import qualified Data.HashTable.IO as Hash import qualified Data.ByteString.Char8 as Buf import Data.ByteString.UTF8 (fromString, toString) import Data.ByteString.Char8 (useAsCStringLen, useAsCString)@@ -123,7 +123,7 @@         #{poke SyckEmitter, style} emitter scalarFold         #{poke SyckEmitter, anchor_format} emitter (Ptr "%d"## :: CString) -        marks <- Hash.new (==) (Hash.hashInt)+        marks <- Hash.new          let freeze = freezeNode marks         syck_emitter_handler emitter =<< mkEmitterCallback (emitterCallback freeze)@@ -234,7 +234,7 @@ parseYamlCStr cstr = do     bracket syck_new_parser syck_free_parser $ \parser -> do         err     <- newIORef Nothing-        badancs <- Hash.new (==) Hash.hashInt+        badancs <- Hash.new         syck_parser_str_auto parser cstr nullFunPtr         syck_parser_handler parser =<< mkNodeCallback (nodeCallback badancs)         syck_parser_error_handler parser =<< mkErrorCallback (errorCallback err)@@ -248,7 +248,8 @@             Nothing     -> return nilNode             Just e      -> fail e -type BadAnchorTable = Hash.HashTable Int YamlNode+type HashTable k v = Hash.CuckooHashTable k v+type BadAnchorTable = HashTable Int YamlNode   nodeCallback :: BadAnchorTable -> SyckParser -> SyckNode -> IO SYMID@@ -274,11 +275,13 @@     -- Do something here about circular refs.     case nodeId :: SYMID of         0   -> return False-        _   -> alloca $ \origPtr -> do-            syck_lookup_sym parser nodeId origPtr-            ptr <- peek origPtr-            -- print ("bad anchor handled", nodeId, ptr)-            Hash.update badancs (ptr `minusPtr` nullPtr) node+        _   -> do+            alloca $ \origPtr -> do+                syck_lookup_sym parser nodeId origPtr+                ptr <- peek origPtr+                -- print ("bad anchor handled", nodeId, ptr)+                Hash.insert badancs (ptr `minusPtr` nullPtr) node+            return True      symId   <- fmap fromIntegral (syck_add_sym parser nodePtr)     return symId@@ -303,7 +306,7 @@         , ", column ", show (cursor - lineptr)         ] -freezeNode :: Hash.HashTable Int (Ptr a) -> YamlNode -> IO (Ptr a)+freezeNode :: HashTable Int (Ptr a) -> YamlNode -> IO (Ptr a) freezeNode nodes MkNode{ n_anchor = AReference n } = do     rv <- Hash.lookup nodes n     case rv of
HsSyck.cabal view
@@ -1,5 +1,5 @@ Name:                HsSyck-Version:             0.50+Version:             0.51 Cabal-version:       >= 1.2.3 Category:            Text, Pugs Synopsis:            Fast, lightweight YAML loader and dumper@@ -16,10 +16,10 @@ License-File:        LICENSE Author:              Audrey Tang Maintainer:          audreyt@audreyt.org-Copyright:           Audrey Tang, Gaal Yahas, 2005, 2006, 2007, 2008, 2009+Copyright:           Audrey Tang, Gaal Yahas, 2005, 2006, 2007, 2008, 2009, 2013  Build-Type:          Simple-Tested-With:         GHC==6.8.2, GHC==6.8.3, GHC==6.10.1, GHC==6.10.2+Tested-With:         GHC==6.8.2, GHC==6.8.3, GHC==6.10.1, GHC==6.10.2, GHC==7.6.3 Data-Files:          Changes Extra-Source-Files:  syck/syck.h syck/syck_st.h syck/gram.h syck/yamlbyte.h @@ -29,9 +29,9 @@  Library     if flag(SybInBase)-        Build-Depends: base>=3 && <4, bytestring>=0.9.0.1, utf8-string>=0.3+        Build-Depends: base>=3 && <4, bytestring>=0.9.0.1, utf8-string>=0.3, hashtables     else-        Build-Depends: base>=4 && <6, bytestring>=0.9.0.1, syb, utf8-string>=0.3+        Build-Depends: base>=4 && <6, bytestring>=0.9.0.1, syb, utf8-string>=0.3, hashtables      exposed-modules: Data.Yaml.Syck