Changeset 3975
- Timestamp:
- 05/27/05 16:36:18 (4 years ago)
- svk:copy_cache_prev:
- 5515
- Location:
- src
- Files:
-
- 4 modified
-
Pugs/Embed/Perl5.hs (modified) (4 diffs)
-
Pugs/Run/Perl5.hs (modified) (2 diffs)
-
perl5/perl5.c (modified) (1 diff)
-
perl5/perl5.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Embed/Perl5.hs
r3954 r3975 60 60 nullSV = error "perl5 not embedded" 61 61 62 mkSV :: IO PerlSV -> IO PerlSV 63 mkSV = id 64 62 65 #else 63 66 … … 66 69 67 70 module Pugs.Embed.Perl5 where 71 import Pugs.Internals 68 72 import Foreign 69 73 import Foreign.C.Types … … 86 90 foreign import ccall "perl.h boot_DynaLoader" 87 91 boot_DynaLoader :: Ptr () -> IO () 92 foreign import ccall "perl5.h perl5_finalize" 93 perl5_finalize :: PerlSV -> IO () 88 94 foreign import ccall "perl5.h perl5_SvPV" 89 95 perl5_SvPV :: PerlSV -> IO CString … … 173 179 canPerl5 sv meth = withCString meth $ \cstr -> perl5_can sv cstr 174 180 181 mkSV :: IO PerlSV -> IO PerlSV 182 mkSV = id 183 {- 184 action = do 185 sv <- action 186 addFinalizer sv (perl5_finalize sv) 187 return sv 188 -} 189 175 190 evalPerl5 :: String -> PugsVal -> CInt -> IO PerlSV 176 evalPerl5 str env cxt = withCString str $ \cstr -> perl5_eval cstr env cxt191 evalPerl5 str env cxt = mkSV $ withCString str $ \cstr -> perl5_eval cstr env cxt 177 192 178 193 freePerl5 :: PerlInterpreter -> IO () -
src/Pugs/Run/Perl5.hs
r3957 r3975 78 78 val <- runEvalIO env $ 79 79 evalExp (Cxt (cxtEnum cxt) $ App subExp (fmap Val inv) (map Val args)) 80 case val of 81 PerlSV sv -> return sv 82 VStr str -> vstrToSV str 83 VBool bool -> vintToSV (fromEnum bool) 84 VInt int -> vintToSV int 85 VRat rat -> vnumToSV rat 86 VNum num -> vnumToSV num 87 _ -> mkValRef val 80 newSVval val 88 81 89 82 deVal :: PugsVal -> IO Val … … 102 95 -- print "1" 103 96 val <- deVal ptr 104 case val of 105 PerlSV sv -> return sv 106 _ -> mkValRef val 97 newSVval val 98 99 newSVval :: Val -> IO PerlSV 100 newSVval val = case val of 101 PerlSV sv -> return sv 102 VStr str -> vstrToSV str 103 VBool bool -> vintToSV (fromEnum bool) 104 VInt int -> vintToSV int 105 VRat rat -> vnumToSV rat 106 VNum num -> vnumToSV num 107 _ -> mkValRef val 107 108 108 109 valToIv :: PugsVal -> IO CInt -
src/perl5/perl5.c
r3961 r3975 320 320 } 321 321 322 void perl5_finalize ( SV* sv ) 323 { 324 SvREFCNT_dec(sv); 325 } -
src/perl5/perl5.h
r3953 r3975 15 15 SV * perl5_eval(char *code, void *env, int cxt); 16 16 SV * perl5_get_sv ( const char *name ); 17 void perl5_finalize ( SV* sv ); 18
