Changeset 3918 for src/perl5

Show
Ignore:
Timestamp:
05/26/05 17:22:54 (4 years ago)
Author:
autrijus
svk:copy_cache_prev:
5482
Message:

* new pugsembed API with code!

Location:
src/perl5
Files:
4 modified

Legend:

Unmodified
Added
Removed
  • src/perl5/perl5.c

    r3911 r3918  
    22#include <XSUB.h> 
    33#include "perlxsi.c" 
     4#include "pugsembed.c" 
    45 
    56/* Workaround for mapstart: the only op which needs a different ppaddr */ 
     
    126127} 
    127128 
     129int 
     130perl5_SvIV ( SV *sv ) 
     131{ 
     132    return((int)SvIV(sv)); 
     133} 
     134 
     135double 
     136perl5_SvNV ( SV *sv ) 
     137{ 
     138    return((double)SvNV(sv)); 
     139} 
     140 
    128141bool 
    129142perl5_SvTRUE ( SV * sv ) 
     
    134147} 
    135148 
    136 void * 
    137 perl5_SvPtr ( SV *sv ) 
    138 { 
    139     if (!sv_isa(sv, "pugs")) { 
    140         return NULL; 
    141     } 
    142     IV tmp = SvIV((SV*)SvRV(sv)); 
    143     return((void *)tmp); 
    144 } 
    145  
    146149SV * 
    147150perl5_newSVpv ( char * pv ) 
     
    154157{ 
    155158    return(newSViv(iv)); 
    156 } 
    157  
    158 SV * 
    159 perl5_newSVptr ( void * ptr ) 
    160 { 
    161     SV *sv = newSV(0); 
    162     sv_setref_pv(sv, "pugs", ptr); 
    163     return(sv); 
    164159} 
    165160 
  • src/perl5/perl5.h

    r3901 r3918  
    55PerlInterpreter * perl5_init ( int argc, char **argv ); 
    66char * perl5_SvPV ( SV * sv ); 
     7int perl5_SvIV ( SV * sv ); 
     8double perl5_SvNV ( SV * sv ); 
    79bool perl5_SvTRUE ( SV * sv ); 
    8 void * perl5_SvPtr ( SV * sv ); 
    910SV * perl5_newSVpv ( char * pv ); 
    1011SV * perl5_newSViv ( int iv ); 
    11 SV * perl5_newSVptr ( void * ptr ); 
    1212SV * perl5_call(char *subname, int argc, SV** args, int cxt); 
    1313bool perl5_can(SV *inv, char *subname); 
  • src/perl5/pugsembed.c

    r3917 r3918  
    1818    return (sv); 
    1919} 
     20 
     21Val *pugs_Eval ( char *code ) { return NULL; } 
     22 
     23Val *pugs_Apply ( Val *sub, Val *inv, Val **args ) { return NULL; } 
     24 
     25Val *pugs_IvToVal ( IV iv ) { return NULL; } 
     26 
     27Val *pugs_NvToVal ( NV iv ) { return NULL; } 
     28 
     29Val *pugs_PvToVal ( char *pv ) { return NULL; } 
     30 
     31Val *pugs_MkSvRef  ( SV *sv ) { return NULL; } 
     32 
     33SV  *pugs_ValToSv ( Val *val ) { return NULL; } 
  • src/perl5/pugsembed.h

    r3917 r3918  
    11#include "perl5.h" 
     2#include <HsFFI.h> 
    23 
    3 typedef void Val; 
     4#ifndef PugsValDefined 
     5#define PugsValDefined 1 
     6/* #define PUGS_EXTERN extern */ 
     7#define PUGS_EXTERN   
     8typedef HsStablePtr Val; 
     9#endif 
    410 
    5 extern Val *pugs_Eval ( char *code ); 
    6 extern Val *pugs_Apply ( Val *sub, Val *inv, Val **args ); 
     11PUGS_EXTERN Val *pugs_Eval ( char *code ); 
     12PUGS_EXTERN Val *pugs_Apply ( Val *sub, Val *inv, Val **args ); 
    713 
    8 extern Val *pugs_IvToVal ( IV iv ); 
    9 extern Val *pugs_NvToVal ( NV iv ); 
    10 extern Val *pugs_PvToVal ( char *pv ); 
     14PUGS_EXTERN Val *pugs_IvToVal ( IV iv ); 
     15PUGS_EXTERN Val *pugs_NvToVal ( NV iv ); 
     16PUGS_EXTERN Val *pugs_PvToVal ( char *pv ); 
    1117 
    12 extern Val *pugs_MkSvRef  ( SV *sv ); 
    13 extern SV  *pugs_ValToSv ( Val *val ); 
     18PUGS_EXTERN Val *pugs_MkSvRef  ( SV *sv ); 
     19PUGS_EXTERN SV  *pugs_ValToSv ( Val *val ); 
    1420 
    1521Val *pugs_SvToVal ( SV *sv );