Changeset 22798 for v6

Show
Ignore:
Timestamp:
10/28/08 15:04:53 (2 months ago)
Author:
ruoso
Message:

[smop-XS] SMOP::S1P->Foo returns the prototype for each of the SMOPS1P* types...

Location:
v6/smop/SMOP
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • v6/smop/SMOP/SMOP.xs

    r22797 r22798  
    2727                                                               SMOP_REFERENCE(SMOP__GlobalInterpreter, SMOP__GlobalInterpreter), 
    2828                                                               NULL, NULL)); 
    29  
    30 SV* 
    31 __dispatch(char* name, SV* self, AV* positional, HV* named) 
    32   CODE: 
    33     printf("TODO!\n"); 
    3429 
    3530MODULE = SMOP       PACKAGE = SMOP::NATIVE::bool 
     
    107102  OUTPUT: 
    108103    RETVAL 
     104 
     105MODULE = SMOP       PACKAGE = SMOP::S1P 
     106 
     107SV* 
     108Scalar(SV* p5class) 
     109  CODE: 
     110    SV* pointer = newSViv((int)SMOP__S1P__Scalar); 
     111    SV* object = newRV_noinc(pointer); 
     112    HV* class = gv_stashpv("SMOP::Object", 0); 
     113    RETVAL = sv_bless(object, class); 
     114  OUTPUT: 
     115    RETVAL 
     116 
     117SV* 
     118Hash_BValue(SV* p5class) 
     119  CODE: 
     120    SV* pointer = newSViv((int)SMOP__S1P__Hash_BValue); 
     121    SV* object = newRV_noinc(pointer); 
     122    HV* class = gv_stashpv("SMOP::Object", 0); 
     123    RETVAL = sv_bless(object, class); 
     124  OUTPUT: 
     125    RETVAL 
     126 
     127SV* 
     128Array(SV* p5class) 
     129  CODE: 
     130    SV* pointer = newSViv((int)SMOP__S1P__Array); 
     131    SV* object = newRV_noinc(pointer); 
     132    HV* class = gv_stashpv("SMOP::Object", 0); 
     133    RETVAL = sv_bless(object, class); 
     134  OUTPUT: 
     135    RETVAL 
     136 
     137SV* 
     138Array_Iterator(SV* p5class) 
     139  CODE: 
     140    SV* pointer = newSViv((int)SMOP__S1P__Array_Iterator); 
     141    SV* object = newRV_noinc(pointer); 
     142    HV* class = gv_stashpv("SMOP::Object", 0); 
     143    RETVAL = sv_bless(object, class); 
     144  OUTPUT: 
     145    RETVAL 
     146 
     147SV* 
     148EndOfIterator(SV* p5class) 
     149  CODE: 
     150    SV* pointer = newSViv((int)SMOP__S1P__EndOfIterator); 
     151    SV* object = newRV_noinc(pointer); 
     152    HV* class = gv_stashpv("SMOP::Object", 0); 
     153    RETVAL = sv_bless(object, class); 
     154  OUTPUT: 
     155    RETVAL 
     156 
     157SV* 
     158Str(SV* p5class) 
     159  CODE: 
     160    SV* pointer = newSViv((int)SMOP__S1P__Str); 
     161    SV* object = newRV_noinc(pointer); 
     162    HV* class = gv_stashpv("SMOP::Object", 0); 
     163    RETVAL = sv_bless(object, class); 
     164  OUTPUT: 
     165    RETVAL 
     166 
     167SV* 
     168Hash(SV* p5class) 
     169  CODE: 
     170    SV* pointer = newSViv((int)SMOP__S1P__Hash); 
     171    SV* object = newRV_noinc(pointer); 
     172    HV* class = gv_stashpv("SMOP::Object", 0); 
     173    RETVAL = sv_bless(object, class); 
     174  OUTPUT: 
     175    RETVAL 
     176 
     177SV* 
     178Code(SV* p5class) 
     179  CODE: 
     180    SV* pointer = newSViv((int)SMOP__S1P__Code); 
     181    SV* object = newRV_noinc(pointer); 
     182    HV* class = gv_stashpv("SMOP::Object", 0); 
     183    RETVAL = sv_bless(object, class); 
     184  OUTPUT: 
     185    RETVAL 
     186 
     187SV* 
     188CCode(SV* p5class) 
     189  CODE: 
     190    SV* pointer = newSViv((int)SMOP__S1P__CCode); 
     191    SV* object = newRV_noinc(pointer); 
     192    HV* class = gv_stashpv("SMOP::Object", 0); 
     193    RETVAL = sv_bless(object, class); 
     194  OUTPUT: 
     195    RETVAL 
     196 
     197SV* 
     198map(SV* p5class) 
     199  CODE: 
     200    SV* pointer = newSViv((int)SMOP__S1P__map); 
     201    SV* object = newRV_noinc(pointer); 
     202    HV* class = gv_stashpv("SMOP::Object", 0); 
     203    RETVAL = sv_bless(object, class); 
     204  OUTPUT: 
     205    RETVAL 
     206 
     207SV* 
     208grep(SV* p5class) 
     209  CODE: 
     210    SV* pointer = newSViv((int)SMOP__S1P__grep); 
     211    SV* object = newRV_noinc(pointer); 
     212    HV* class = gv_stashpv("SMOP::Object", 0); 
     213    RETVAL = sv_bless(object, class); 
     214  OUTPUT: 
     215    RETVAL 
     216 
     217SV* 
     218Multi(SV* p5class) 
     219  CODE: 
     220    SV* pointer = newSViv((int)SMOP__S1P__Multi); 
     221    SV* object = newRV_noinc(pointer); 
     222    HV* class = gv_stashpv("SMOP::Object", 0); 
     223    RETVAL = sv_bless(object, class); 
     224  OUTPUT: 
     225    RETVAL 
     226 
     227SV* 
     228Attribute(SV* p5class) 
     229  CODE: 
     230    SV* pointer = newSViv((int)SMOP__S1P__Attribute); 
     231    SV* object = newRV_noinc(pointer); 
     232    HV* class = gv_stashpv("SMOP::Object", 0); 
     233    RETVAL = sv_bless(object, class); 
     234  OUTPUT: 
     235    RETVAL 
     236 
     237SV* 
     238Method(SV* p5class) 
     239  CODE: 
     240    SV* pointer = newSViv((int)SMOP__S1P__Method); 
     241    SV* object = newRV_noinc(pointer); 
     242    HV* class = gv_stashpv("SMOP::Object", 0); 
     243    RETVAL = sv_bless(object, class); 
     244  OUTPUT: 
     245    RETVAL 
     246 
     247SV* 
     248RootNamespace(SV* p5class) 
     249  CODE: 
     250    SV* pointer = newSViv((int)SMOP__S1P__RootNamespace); 
     251    SV* object = newRV_noinc(pointer); 
     252    HV* class = gv_stashpv("SMOP::Object", 0); 
     253    RETVAL = sv_bless(object, class); 
     254  OUTPUT: 
     255    RETVAL 
     256 
     257SV* 
     258LexicalPrelude(SV* p5class) 
     259  CODE: 
     260    SV* pointer = newSViv((int)SMOP__S1P__LexicalPrelude); 
     261    SV* object = newRV_noinc(pointer); 
     262    HV* class = gv_stashpv("SMOP::Object", 0); 
     263    RETVAL = sv_bless(object, class); 
     264  OUTPUT: 
     265    RETVAL 
     266 
     267SV* 
     268Capturize(SV* p5class) 
     269  CODE: 
     270    SV* pointer = newSViv((int)SMOP__S1P__Capturize); 
     271    SV* object = newRV_noinc(pointer); 
     272    HV* class = gv_stashpv("SMOP::Object", 0); 
     273    RETVAL = sv_bless(object, class); 
     274  OUTPUT: 
     275    RETVAL 
     276 
     277SV* 
     278EmptyList(SV* p5class) 
     279  CODE: 
     280    SV* pointer = newSViv((int)SMOP__S1P__EmptyList); 
     281    SV* object = newRV_noinc(pointer); 
     282    HV* class = gv_stashpv("SMOP::Object", 0); 
     283    RETVAL = sv_bless(object, class); 
     284  OUTPUT: 
     285    RETVAL 
     286 
     287SV* 
     288LexicalScope(SV* p5class) 
     289  CODE: 
     290    SV* pointer = newSViv((int)SMOP__S1P__LexicalScope); 
     291    SV* object = newRV_noinc(pointer); 
     292    HV* class = gv_stashpv("SMOP::Object", 0); 
     293    RETVAL = sv_bless(object, class); 
     294  OUTPUT: 
     295    RETVAL 
     296 
     297SV* 
     298DefaultBlockSignature(SV* p5class) 
     299  CODE: 
     300    SV* pointer = newSViv((int)SMOP__S1P__DefaultBlockSignature); 
     301    SV* object = newRV_noinc(pointer); 
     302    HV* class = gv_stashpv("SMOP::Object", 0); 
     303    RETVAL = sv_bless(object, class); 
     304  OUTPUT: 
     305    RETVAL 
     306 
     307SV* 
     308BindCaptureSignature(SV* p5class) 
     309  CODE: 
     310    SV* pointer = newSViv((int)SMOP__S1P__BindCaptureSignature); 
     311    SV* object = newRV_noinc(pointer); 
     312    HV* class = gv_stashpv("SMOP::Object", 0); 
     313    RETVAL = sv_bless(object, class); 
     314  OUTPUT: 
     315    RETVAL 
     316 
     317SV* 
     318AdhocSignature(SV* p5class) 
     319  CODE: 
     320    SV* pointer = newSViv((int)SMOP__S1P__AdhocSignature); 
     321    SV* object = newRV_noinc(pointer); 
     322    HV* class = gv_stashpv("SMOP::Object", 0); 
     323    RETVAL = sv_bless(object, class); 
     324  OUTPUT: 
     325    RETVAL 
     326 
     327SV* 
     328PurePrototypeHow(SV* p5class) 
     329  CODE: 
     330    SV* pointer = newSViv((int)SMOP__S1P__PurePrototypeHow); 
     331    SV* object = newRV_noinc(pointer); 
     332    HV* class = gv_stashpv("SMOP::Object", 0); 
     333    RETVAL = sv_bless(object, class); 
     334  OUTPUT: 
     335    RETVAL 
     336 
     337SV* 
     338ritest(SV* p5class) 
     339  CODE: 
     340    SV* pointer = newSViv((int)SMOP__S1P__ritest); 
     341    SV* object = newRV_noinc(pointer); 
     342    HV* class = gv_stashpv("SMOP::Object", 0); 
     343    RETVAL = sv_bless(object, class); 
     344  OUTPUT: 
     345    RETVAL 
  • v6/smop/SMOP/lib/SMOP.pm

    r22797 r22798  
    1010require XSLoader; 
    1111XSLoader::load('SMOP', $VERSION); 
    12  
    13 package SMOP::Object; 
    14  
    15 our $AUTOLOAD; 
    16  
    17 sub AUTOLOAD { 
    18     my $self = shift; 
    19     my $name = $AUTOLOAD; 
    20     $name =~ s/.*://; 
    21     __dispatch($name, $self, [ @_ ], { @_ }); 
    22 } 
    2312 
    24131; 
     
    3625  my $fals = SMOP::NATIVE::bool->false; 
    3726  my $idconst = SMOP::NATIVE::idconst->create('Hello World'); 
    38   my $p6opaque = SMOP::p6opaque->create(); 
    39   my $mold = SMOP::Mold->create([$int, $true, $fals],[1,2,3,1,2,3,1,2,3]); 
     27  my $rootns = SMOP::S1P->RootNamespace; 
     28  my $prelud = SMOP::S1P->LexicalPrelude; 
     29  my $mold = SMOP::Mold->create([$rootns, $int, $true, $fals], 
     30                                [1,2,3,1,2,3,1,2,3]); 
    4031  my $frame = SMOP::MoldFrame->create($mold); 
    4132  my $result = SMOP::Interpreter->run($frame); 
  • v6/smop/SMOP/t/SMOP.t

    r22797 r22798  
    11 
    2 use Test::More tests => 11; 
     2use Test::More tests => 13; 
    33BEGIN { use_ok('SMOP') }; 
    44 
     
    2121is(ref($r),'SMOP::Object','returns a SMOP::Object'); 
    2222is($r->SMOP::NATIVE::idconst::fetch, 'Hello World!', 'fetches the idconst'); 
     23 
     24eval '$r = SMOP::S1P->Scalar()'; 
     25ok(!$@,'Can call SMOP::S1P->Scalar'); 
     26is(ref($r),'SMOP::Object','returns a SMOP::Object');