Show
Ignore:
Timestamp:
08/14/06 08:21:50 (2 years ago)
Author:
cmarcelo
Message:

* Integrate judy and HsJudy? on Pugs' build process. Make IArray and IHash
use HsJudy?.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Prim/Yaml.hs

    r11614 r12204  
    1515import DrIFT.YAML 
    1616 
     17import qualified Judy.CollectionsM as C 
     18import qualified Judy.Hash         as H 
     19 
    1720evalYaml :: Val -> Eval Val 
    1821evalYaml cv = do 
     
    2629fromYaml MkNode{n_elem=ESeq nodes} = do 
    2730    vals    <- mapM fromYaml nodes 
    28     av      <- liftSTM $ newTVar $ 
    29         IntMap.fromAscList ([0..] `zip` map lazyScalar vals) 
    30     return $ VRef (arrayRef av) 
     31    s       <- liftSTM $ newTVar (0 :: Int) 
     32    av      <- liftIO $ (C.fromList ([0..] `zip` map lazyScalar vals) :: IO IArray') 
     33    return $ VRef (arrayRef (av,s)) 
    3134fromYaml MkNode{n_elem=EMap nodes, n_tag=tag} = do 
    3235    case tag of 
     
    3639                val <- newScalar =<< fromYaml valNode 
    3740                return (key, val) 
    38             hv      <- liftSTM $ (newTVar (Map.fromList vals) :: STM IHash) 
     41            hv      <- liftIO $ (C.fromList vals :: IO IHash) 
    3942            return $ VRef (hashRef hv) 
    4043        Just s | (pre, post) <- Str.splitAt 16 s   -- 16 == length "tag:pugs:Object:"