Changeset 3934
- Timestamp:
- 05/27/05 01:30:01 (3 years ago)
- svk:copy_cache_prev:
- 5515
- Location:
- src
- Files:
-
- 5 modified
-
Pugs/Embed.hs (modified) (1 diff)
-
Pugs/Embed/Perl5.hs (modified) (2 diffs)
-
Pugs/Run/Perl5.hs (modified) (7 diffs)
-
perl5/perl5.c (modified) (1 diff)
-
perl5/pugsembed.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Embed.hs
r3933 r3934 29 29 return () -} 30 30 evalEmbedded "Perl5" code = do 31 interp <- initPerl5 "" Nothing31 interp <- initPerl5 "" (Nothing :: Maybe ()) 32 32 evalPerl5 code nullSV 0 33 33 freePerl5 interp -
src/Pugs/Embed/Perl5.hs
r3933 r3934 114 114 pugs_MkValRef :: PugsVal -> IO PerlSV 115 115 116 initPerl5 :: String -> Maybe a -> IO PerlInterpreter116 initPerl5 :: (Show a) => String -> Maybe a -> IO PerlInterpreter 117 117 initPerl5 str env = do 118 118 withCString "-e" $ \prog -> withCString str $ \cstr -> do … … 138 138 svToVBool = perl5_SvTRUE 139 139 140 svToVal :: PerlSV -> IO a140 svToVal :: (Show a) => PerlSV -> IO a 141 141 svToVal sv = do 142 142 ptr <- pugs_SvToVal sv -
src/Pugs/Run/Perl5.hs
r3928 r3934 62 62 pugs_apply subPtr invPtr argsPtr = do 63 63 env <- askPerl5Env 64 -- print "DEREF #1" 64 65 sub <- deVal subPtr 66 -- print "DEREF #2" 65 67 inv <- deValMaybe invPtr 68 -- print "DEREF #3" 66 69 args <- mapM deVal =<< peekArray0 nullPtr argsPtr 67 70 let subExp = case sub of … … 75 78 76 79 deVal :: PugsVal -> IO Val 77 deVal ptr = deRefStablePtr (castPtrToStablePtr ptr) 80 deVal ptr = do 81 -- print ("DEVAL", ptr) 82 x <- deRefStablePtr (castPtrToStablePtr ptr) 83 -- print ("INTO", x) 84 return x 78 85 79 86 deValMaybe :: PugsVal -> IO (Maybe Val) … … 83 90 valToSv :: PugsVal -> IO PerlSV 84 91 valToSv ptr = do 92 -- print "1" 85 93 val <- deVal ptr 86 94 case val of … … 90 98 valToIv :: PugsVal -> IO CInt 91 99 valToIv ptr = do 100 -- print "2" 92 101 val <- deVal ptr 93 102 env <- askPerl5Env … … 97 106 valToNv :: PugsVal -> IO CDouble 98 107 valToNv ptr = do 108 -- print "3" 99 109 val <- deVal ptr 100 110 env <- askPerl5Env … … 104 114 valToPv :: PugsVal -> IO CString 105 115 valToPv ptr = do 116 -- print "4" 106 117 val <- deVal ptr 107 118 env <- askPerl5Env … … 119 130 120 131 pvToVal :: CString -> IO PugsVal 121 pvToVal = (mkVal . VStr =<<) . peekCString 132 pvToVal cstr = do 133 str <- peekCString cstr 134 ptr <- mkVal $ VStr str 135 -- print ("PVTOVAL", str, ptr) 136 return ptr 122 137 123 138 #endif -
src/perl5/perl5.c
r3933 r3934 215 215 perl5_get_sv(const char *name) 216 216 { 217 return (get_sv(name, 1)); 217 SV *sv = get_sv(name, 1); 218 /* sv_dump(sv); */ 219 return sv; 218 220 } 219 221 220 222 void * perl5_set_svref (const char *name, void *val) 221 223 { 222 SV *container = get_sv(name, TRUE); 224 /* fprintf(stderr, "setsvref: name: %s, mkvalref: %p\n", name, val); */ 225 226 SV *container = get_sv("pugs::env", TRUE); 223 227 224 228 SV *sv = newSV(0); -
src/perl5/pugsembed.c
r3932 r3934 19 19 isa[0] = pugs_PvToVal("Code"); 20 20 isa[1] = NULL; 21 if (pugs_ValToIv(pugs_Apply( "&isa", val, isa))) {21 if (pugs_ValToIv(pugs_Apply(pugs_PvToVal("&isa"), val, isa))) { 22 22 fprintf(stderr, "got a code!!\n"); 23 23 }
