Changeset 22015

Show
Ignore:
Timestamp:
08/22/08 22:13:40 (3 months ago)
Author:
ruoso
Message:

[smop] SMOPS1PPurePrototypeHow implements a dispatch that .!methods.{name}.($actualcapture)

Location:
v6/smop
Files:
2 added
5 modified

Legend:

Unmodified
Added
Removed
  • v6/smop/CMakeLists.txt

    r21971 r22015  
    6363    src/smop_s1p_lexicalscope.sm0p 
    6464    src/smop_s1p_defaultblocksignature.sm0p 
     65    src/smop_s1p_pureprototypehow.sm0p 
    6566    src/p6opaque.sm0p 
    6667    src/smop_s1p_attribute.sm0p 
     
    8990    src/smop_s1p_ccode.c 
    9091    src/smop_s1p_code.c 
     92    src/smop_s1p_pureprototypehow.c 
    9193    src/smop_s1p_defaultblocksignature.c 
    9294    src/smop_s1p_hash.c 
     
    133135    test/25_lexical_scope.p6 
    134136    test/27_default_block_signature.p6 
     137    test/28_pure_prototype_how.sm0p 
    135138) 
    136139    set(c_file) 
  • v6/smop/include/smop_s1p.h

    r21900 r22015  
    1919extern SMOP__Object* SMOP__S1P__LexicalScope; 
    2020extern SMOP__Object* SMOP__S1P__DefaultBlockSignature; 
     21extern SMOP__Object* SMOP__S1P__PurePrototypeHow; 
    2122extern SMOP__Object* SMOP__GlobalInterpreter; 
    2223 
  • v6/smop/m0ld/M0ld.hs

    r21921 r22015  
    2323identifier = do 
    2424    first <- choice [alphaNum, char '_'] 
    25     rest <- many1 $ choice [alphaNum, char '_', digit] 
     25    rest <- many1 $ choice [alphaNum, char '_', digit, char '^', char '!'] 
    2626    return $ [first] ++ rest 
    2727 
  • v6/smop/src/smop_internal.h

    r21971 r22015  
    5858     smop_s1p_lexicalscope_init();          \ 
    5959     smop_s1p_capturize_init();             \ 
    60      smop_s1p_defaultblocksignature_init();  
     60     smop_s1p_defaultblocksignature_init(); \ 
     61     smop_s1p_pureprototypehow_init(); 
    6162#define SMOP_INTERNAL_DESTROY_SEQUENCE      \ 
     63     smop_s1p_pureprototypehow_destr();     \ 
    6264     smop_s1p_defaultblocksignature_destr();\ 
    6365     smop_s1p_capturize_destr();            \ 
     
    8183     smop_s1p_defaultblocksignature_mold_init(); \ 
    8284     smop_s1p_code_mold_init();             \ 
     85     smop_s1p_pureprototypehow_mold_init(); \ 
    8386 
    8487#define SMOP_BOOTSTRAP_DESTR_SEQUENCE       \ 
     88     smop_s1p_pureprototypehow_mold_destr();\ 
    8589     smop_s1p_code_mold_destr();            \ 
    8690     smop_s1p_defaultblocksignature_mold_destr();\ 
     
    128132void smop_s1p_defaultblocksignature_mold_init(); 
    129133void smop_s1p_defaultblocksignature_mold_destr(); 
     134void smop_s1p_pureprototypehow_init(); 
     135void smop_s1p_pureprototypehow_destr(); 
     136void smop_s1p_pureprototypehow_mold_init(); 
     137void smop_s1p_pureprototypehow_mold_destr(); 
    130138void smop_s1p_capturize_init(); 
    131139void smop_s1p_capturize_destr(); 
  • v6/smop/src/smop_mold.c

    r21971 r22015  
    4444    } 
    4545} 
     46 
     47SMOP__Object* mold_back_set(SMOP__Object* interpreter,SMOP__Object* moldframe, SMOP__Object* value) { 
     48    smop_mold_frame* frame = (smop_mold_frame*) moldframe; 
     49    if (frame->back) { 
     50      printf('Cannot redefine mold back!'); 
     51      abort(); 
     52    } 
     53    frame->back = value; 
     54} 
     55 
    4656SMOP__Object* mold_reg_set(SMOP__Object* interpreter,SMOP__Object* moldframe, int regnum, SMOP__Object* value) { 
    4757    smop_mold_frame* frame = (smop_mold_frame*) moldframe;