Changeset 3933 for src/Pugs/Embed/Perl5.hs
- Timestamp:
- 05/27/05 01:06:48 (4 years ago)
- svk:copy_cache_prev:
- 5515
- Files:
-
- 1 modified
-
src/Pugs/Embed/Perl5.hs (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Embed/Perl5.hs
r3930 r3933 11 11 constFail = const $ fail "perl5 not embedded" 12 12 13 initPerl5 :: String -> PerlSV-> IO PerlInterpreter13 initPerl5 :: String -> Maybe a -> IO PerlInterpreter 14 14 initPerl5 _ _ = return () 15 15 … … 98 98 foreign import ccall "perl5.h perl5_get_sv" 99 99 perl5_get_sv :: CString -> IO PerlSV 100 foreign import ccall "perl5.h perl5_set_sv "101 perl5_set_sv :: CString -> PerlSV -> IO PerlSV100 foreign import ccall "perl5.h perl5_set_svref" 101 perl5_set_svref :: CString -> PugsVal -> IO () 102 102 foreign import ccall "perl5.h perl5_call" 103 103 perl5_call :: CString -> CInt -> Ptr PerlSV -> CInt -> IO PerlSV … … 114 114 pugs_MkValRef :: PugsVal -> IO PerlSV 115 115 116 initPerl5 :: String -> PerlSV-> IO PerlInterpreter116 initPerl5 :: String -> Maybe a -> IO PerlInterpreter 117 117 initPerl5 str env = do 118 118 withCString "-e" $ \prog -> withCString str $ \cstr -> do 119 119 withArray [prog, prog, cstr] $ \argv -> do 120 perl5_init 3 argv 121 withCString "pugs::env" $ \name -> do 122 perl5_set_sv name env 120 interp <- perl5_init 3 argv 121 case env of 122 Just val -> withCString "pugs::env" $ \name -> do 123 ptr <- fmap castStablePtrToPtr $ newStablePtr val 124 perl5_set_svref name ptr 125 Nothing -> return () 126 return interp 123 127 124 128 svToVStr :: PerlSV -> IO String
