Changeset 3930

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

* initialise $pugs::env with tabulaRasa.

Location:
src
Files:
5 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Embed.hs

    r3919 r3930  
    2929    return () -} 
    3030evalEmbedded "Perl5" code = do 
    31     interp <- initPerl5 "" 
     31    interp <- initPerl5 "" nullSV 
    3232    evalPerl5 code nullSV 0 
    3333    freePerl5 interp 
  • src/Pugs/Embed/Perl5.hs

    r3925 r3930  
    1111constFail = const $ fail "perl5 not embedded" 
    1212 
    13 initPerl5 :: String -> IO PerlInterpreter 
    14 initPerl5 _ = return () 
     13initPerl5 :: String -> PerlSV -> IO PerlInterpreter 
     14initPerl5 _ _ = return () 
    1515 
    1616freePerl5 :: PerlInterpreter -> IO () 
     
    9898foreign import ccall "perl5.h perl5_get_sv" 
    9999    perl5_get_sv :: CString -> IO PerlSV 
     100foreign import ccall "perl5.h perl5_set_sv" 
     101    perl5_set_sv :: CString -> PerlSV -> IO PerlSV 
    100102foreign import ccall "perl5.h perl5_call" 
    101103    perl5_call :: CString -> CInt -> Ptr PerlSV -> CInt -> IO PerlSV 
     
    112114    pugs_MkValRef :: PugsVal -> IO PerlSV 
    113115 
    114 initPerl5 :: String -> IO PerlInterpreter 
    115 initPerl5 str = do 
     116initPerl5 :: String -> PerlSV -> IO PerlInterpreter 
     117initPerl5 str env = do 
    116118    withCString "-e" $ \prog -> withCString str $ \cstr -> do 
    117119        withArray [prog, prog, cstr] $ \argv -> do 
    118120            perl5_init 3 argv 
     121            withCString "pugs::env" $ \name -> do 
     122                perl5_set_sv name env 
    119123 
    120124svToVStr :: PerlSV -> IO String 
  • src/Pugs/Run.hs

    r3920 r3930  
    3434runEvalMain :: Env -> Eval Val -> IO Val 
    3535runEvalMain env eval = withSocketsDo $ do 
    36     my_perl <- initPerl5 "" 
     36    my_perl <- initPerl5 "" env 
    3737    val     <- runEvalIO env eval 
    3838    freePerl5 my_perl 
  • src/perl5/perl5.c

    r3925 r3930  
    201201} 
    202202 
     203void * perl5_set_sv (const char *name, SV *sv) 
     204{ 
     205    sv_setsv(get_sv(name, 1), sv); 
     206} 
     207 
    203208SV * 
    204209perl5_eval(char *code, SV *env, int cxt) 
  • src/perl5/perl5.h

    r3925 r3930  
    1515SV * perl5_eval(char *code, SV *env, int cxt); 
    1616SV * perl5_get_sv ( const char *name ); 
     17void * perl5_set_sv ( const char *name, SV *sv );