Changeset 3927 for src/Pugs/Run

Show
Ignore:
Timestamp:
05/27/05 00:30:24 (3 years ago)
Author:
autrijus
svk:copy_cache_prev:
5515
Message:

* pv/nv/iv caster from Val.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Run/Perl5.hs

    r3925 r3927  
    2222foreign export ccall "pugs_ValToSv" 
    2323    valToSv :: PugsVal -> IO PerlSV 
     24 
     25foreign export ccall "pugs_ValToIv" 
     26    valToIv :: PugsVal -> IO CInt 
     27 
     28foreign export ccall "pugs_ValToNv" 
     29    valToNv :: PugsVal -> IO CDouble 
     30 
     31foreign export ccall "pugs_ValToPv" 
     32    valToPv :: PugsVal -> IO CString 
    2433 
    2534foreign export ccall "pugs_MkSvRef" 
     
    7988        _           -> mkValRef val 
    8089 
     90valToIv :: PugsVal -> IO CInt 
     91valToIv ptr = do 
     92    val <- deVal ptr 
     93    fmap fromInteger (fromVal'' val) 
     94 
     95valToNv :: PugsVal -> IO CDouble 
     96valToNv ptr = do 
     97    val <- deVal ptr 
     98    fmap fromRational (fromVal'' val) 
     99 
     100valToPv :: PugsVal -> IO CString 
     101valToPv ptr = do 
     102    val <- deVal ptr 
     103    newCString =<< (fromVal'' val) 
     104 
     105fromVal'' :: (Value a) => Val -> IO a 
     106fromVal'' = return . vCast 
     107 
    81108mkSvRef :: PerlSV -> IO PugsVal 
    82109mkSvRef = mkVal . PerlSV