Changeset 3948

Show
Ignore:
Timestamp:
05/27/05 04:03:10 (4 years ago)
Author:
autrijus
svk:copy_cache_prev:
5515
Message:

* method.t all pass!

Location:
src
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Run/Perl5.hs

    r3945 r3948  
    1818 
    1919foreign export ccall "pugs_Apply" 
    20     pugs_apply :: PugsVal -> PugsVal -> Ptr PugsVal -> IO PugsVal 
     20    pugs_apply :: PugsVal -> PugsVal -> Ptr PugsVal -> IO PerlSV 
    2121 
    2222foreign export ccall "pugs_ValToSv" 
     
    6060    mkVal val 
    6161 
    62 pugs_apply :: PugsVal -> PugsVal -> Ptr PugsVal -> IO PugsVal 
     62pugs_apply :: PugsVal -> PugsVal -> Ptr PugsVal -> IO PerlSV 
    6363pugs_apply subPtr invPtr argsPtr = do 
    6464    -- print "DEREF #0" 
     
    6666    -- print "DEREF #1" 
    6767    sub     <- deVal subPtr 
    68     -- print "DEREF #2" 
     68    -- print ("DEREF #2", sub) 
    6969    inv     <- deValMaybe invPtr 
    7070    -- print ("DEREF #3", inv) 
     
    7575            _           -> Val sub 
    7676    val <- runEvalIO env $ evalExp (App subExp (fmap Val inv) (map Val args)) 
    77     mkVal val 
     77    case val of 
     78        PerlSV sv   -> return sv 
     79        VStr str    -> vstrToSV str 
     80        VBool bool  -> vintToSV (fromEnum bool) 
     81        VInt int    -> vintToSV int 
     82        VRat rat    -> vnumToSV rat 
     83        VNum num    -> vnumToSV num 
     84        _           -> mkValRef val 
    7885 
    7986deVal :: PugsVal -> IO Val 
  • src/perl5/perl5.c

    r3946 r3948  
    4444 
    4545    /* fprintf(stderr, "back to pugs\n"); */ 
    46     ret = pugs_ValToSv(pugs_Apply (val, inv, stack)); 
     46    ret = pugs_Apply(val, inv, stack); 
    4747    free (stack); 
    4848 
    49     ST(0) = ret; 
     49    sv_setsv(ST(0), ret); 
    5050     
    5151    XSRETURN(1); 
  • src/perl5/pugsembed.c

    r3946 r3948  
    2323    isa[0] = pugs_PvToVal("Code"); 
    2424    isa[1] = NULL; 
    25     if (pugs_ValToIv(pugs_Apply(pugs_PvToVal("&isa"), val, isa))) { 
     25    if (SvTRUE(pugs_Apply(pugs_PvToVal("&isa"), val, isa))) { 
    2626        if (__init) { 
    2727            stack[0] = sv; 
    2828            stack[1] = NULL; 
    29             fprintf (stderr, "isa code\n"); 
     29            /* fprintf (stderr, "isa code\n"); */ 
    3030            sv = perl5_apply(newSVpv("code", 0), newSVpv("pugs::guts", 0), stack, NULL, G_SCALAR); 
    3131        } 
  • src/perl5/pugsembed.h

    r3943 r3948  
    88 
    99extern Val *pugs_Eval ( char *code ); 
    10 extern Val *pugs_Apply ( Val *sub, Val *inv, Val **args ); 
     10extern SV *pugs_Apply ( Val *sub, Val *inv, Val **args ); 
    1111 
    1212extern Val *pugs_IvToVal ( IV iv );