Changeset 3927

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

* pv/nv/iv caster from Val.

Location:
src
Files:
2 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 
  • src/perl5/pugsembed.h

    r3926 r3927  
    1616extern Val *pugs_MkSvRef  ( SV *sv ); 
    1717extern SV  *pugs_ValToSv ( Val *val ); 
     18extern IV   pugs_ValToIv ( Val *val ); 
     19extern NV   pugs_ValToNv ( Val *val ); 
     20extern char *pugs_ValToSv ( Val *val ); 
    1821 
    1922Val *pugs_SvToVal ( SV *sv );