Changeset 3930
- Timestamp:
- 05/27/05 00:43:48 (3 years ago)
- svk:copy_cache_prev:
- 5515
- Location:
- src
- Files:
-
- 5 modified
-
Pugs/Embed.hs (modified) (1 diff)
-
Pugs/Embed/Perl5.hs (modified) (3 diffs)
-
Pugs/Run.hs (modified) (1 diff)
-
perl5/perl5.c (modified) (1 diff)
-
perl5/perl5.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Embed.hs
r3919 r3930 29 29 return () -} 30 30 evalEmbedded "Perl5" code = do 31 interp <- initPerl5 "" 31 interp <- initPerl5 "" nullSV 32 32 evalPerl5 code nullSV 0 33 33 freePerl5 interp -
src/Pugs/Embed/Perl5.hs
r3925 r3930 11 11 constFail = const $ fail "perl5 not embedded" 12 12 13 initPerl5 :: String -> IO PerlInterpreter14 initPerl5 _ = return ()13 initPerl5 :: String -> PerlSV -> IO PerlInterpreter 14 initPerl5 _ _ = return () 15 15 16 16 freePerl5 :: PerlInterpreter -> IO () … … 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 PerlSV 100 102 foreign import ccall "perl5.h perl5_call" 101 103 perl5_call :: CString -> CInt -> Ptr PerlSV -> CInt -> IO PerlSV … … 112 114 pugs_MkValRef :: PugsVal -> IO PerlSV 113 115 114 initPerl5 :: String -> IO PerlInterpreter115 initPerl5 str = do116 initPerl5 :: String -> PerlSV -> IO PerlInterpreter 117 initPerl5 str env = do 116 118 withCString "-e" $ \prog -> withCString str $ \cstr -> do 117 119 withArray [prog, prog, cstr] $ \argv -> do 118 120 perl5_init 3 argv 121 withCString "pugs::env" $ \name -> do 122 perl5_set_sv name env 119 123 120 124 svToVStr :: PerlSV -> IO String -
src/Pugs/Run.hs
r3920 r3930 34 34 runEvalMain :: Env -> Eval Val -> IO Val 35 35 runEvalMain env eval = withSocketsDo $ do 36 my_perl <- initPerl5 "" 36 my_perl <- initPerl5 "" env 37 37 val <- runEvalIO env eval 38 38 freePerl5 my_perl -
src/perl5/perl5.c
r3925 r3930 201 201 } 202 202 203 void * perl5_set_sv (const char *name, SV *sv) 204 { 205 sv_setsv(get_sv(name, 1), sv); 206 } 207 203 208 SV * 204 209 perl5_eval(char *code, SV *env, int cxt) -
src/perl5/perl5.h
r3925 r3930 15 15 SV * perl5_eval(char *code, SV *env, int cxt); 16 16 SV * perl5_get_sv ( const char *name ); 17 void * perl5_set_sv ( const char *name, SV *sv );
