Changeset 22525

Show
Ignore:
Timestamp:
10/07/08 17:03:40 (6 weeks ago)
Author:
ruoso
Message:

[smop] SMOPS1PAdhocSignature lets you define a signature with custom molds for ACCEPTS and BIND

Location:
v6/smop
Files:
2 added
6 modified

Legend:

Unmodified
Added
Removed
  • v6/smop/CMakeLists.txt

    r22523 r22525  
    138138    src/s1p_bindcapturesignature.c 
    139139    src/s1p_defaultblocksignature.c 
     140    src/s1p_adhocsignature.c 
    140141    src/s1p_hash.c 
    141142    src/s1p_io.c 
     
    193194    test/34_array_unshift.m0ld 
    194195    test/35_array_grep.m0ld 
     196    test/36_adhoc_signature.m0ld 
    195197) 
    196198    set(c_file) 
  • v6/smop/include/smop_identifiers.h

    r22289 r22525  
    88 */ 
    99 
    10  
    11  
    12  
     10extern SMOP__Object* SMOP__ID__ACCEPTS;           /* "ACCEPTS" */ 
    1311extern SMOP__Object* SMOP__ID__back;              /* "back" */ 
    1412extern SMOP__Object* SMOP__ID__BIND;              /* "BIND" */ 
  • v6/smop/include/smop_s1p.h

    r22511 r22525  
    2525extern SMOP__Object* SMOP__S1P__DefaultBlockSignature; 
    2626extern SMOP__Object* SMOP__S1P__BindCaptureSignature; 
     27extern SMOP__Object* SMOP__S1P__AdhocSignature; 
    2728extern SMOP__Object* SMOP__S1P__PurePrototypeHow; 
    2829extern SMOP__Object* SMOP__GlobalInterpreter; 
  • v6/smop/src/idconst_decl_all.h

    r22289 r22525  
     1SMOP__Object* SMOP__ID__ACCEPTS; 
    12SMOP__Object* SMOP__ID__back; 
    23SMOP__Object* SMOP__ID__BIND; 
  • v6/smop/src/idconst_init_all.c

    r22289 r22525  
     1SMOP__ID__ACCEPTS = SMOP__NATIVE__idconst_create_nolist( "ACCEPTS" ); 
    12SMOP__ID__back = SMOP__NATIVE__idconst_create_nolist( "back" ); 
    23SMOP__ID__BIND = SMOP__NATIVE__idconst_create_nolist( "BIND" ); 
     
    106107SMOP__ID__unshift = SMOP__NATIVE__idconst_create_nolist( "unshift" ); 
    107108SMOP__ID__Void = SMOP__NATIVE__idconst_create_nolist( "Void" ); 
    108 constlist_size = 107; 
     109constlist_size = 108; 
    109110constlist = calloc(constlist_size,sizeof(SMOP__Object*)); 
    110111assert(constlist); 
    111 constlist[0] = SMOP__ID__back; 
    112 constlist[1] = SMOP__ID__BIND; 
    113 constlist[2] = SMOP__ID__bless; 
    114 constlist[3] = SMOP__ID__bool; 
    115 constlist[4] = SMOP__ID__BUILDALL; 
    116 constlist[5] = SMOP__ID__BUILD; 
    117 constlist[6] = SMOP__ID__call; 
    118 constlist[7] = SMOP__ID__can; 
    119 constlist[8] = SMOP__ID__capture; 
    120 constlist[9] = SMOP__ID__capturize; 
    121 constlist[10] = SMOP__ID__clone; 
    122 constlist[11] = SMOP__ID__container_type; 
    123 constlist[12] = SMOP__ID__continuation; 
    124 constlist[13] = SMOP__ID__continues; 
    125 constlist[14] = SMOP__ID__copy; 
    126 constlist[15] = SMOP__ID__count; 
    127 constlist[16] = SMOP__ID__create_container; 
    128 constlist[17] = SMOP__ID__CREATE; 
    129 constlist[18] = SMOP__ID__current; 
    130 constlist[19] = SMOP__ID__debug; 
    131 constlist[20] = SMOP__ID__defined; 
    132 constlist[21] = SMOP__ID__DESTROYALL; 
    133 constlist[22] = SMOP__ID__DESTROY; 
    134 constlist[23] = SMOP__ID__dispatch; 
    135 constlist[24] = SMOP__ID__does; 
    136 constlist[25] = SMOP__ID__drop; 
    137 constlist[26] = SMOP__ID__elems; 
    138 constlist[27] = SMOP__ID__eval; 
    139 constlist[28] = SMOP__ID__exists; 
    140 constlist[29] = SMOP__ID__FETCH; 
    141 constlist[30] = SMOP__ID__forget; 
    142 constlist[31] = SMOP__ID__free; 
    143 constlist[32] = SMOP__ID__goto; 
    144 constlist[33] = SMOP__ID__has_next; 
    145 constlist[34] = SMOP__ID__HOW_attributes; 
    146 constlist[35] = SMOP__ID__HOW_can; 
    147 constlist[36] = SMOP__ID__HOW_CREATE; 
    148 constlist[37] = SMOP__ID__HOW_has; 
    149 constlist[38] = SMOP__ID__HOW_isa; 
    150 constlist[39] = SMOP__ID__HOW_methods; 
    151 constlist[40] = SMOP__ID__identifier; 
    152 constlist[41] = SMOP__ID__infix_eq; 
    153 constlist[42] = SMOP__ID__infix_num_gt; 
    154 constlist[43] = SMOP__ID__infix_num_ge; 
    155 constlist[44] = SMOP__ID__input_array; 
    156 constlist[45] = SMOP__ID__invocant; 
    157 constlist[46] = SMOP__ID__isa; 
    158 constlist[47] = SMOP__ID__Iterator; 
    159 constlist[48] = SMOP__ID__jail; 
    160 constlist[49] = SMOP__ID__lexical; 
    161 constlist[50] = SMOP__ID__List; 
    162 constlist[51] = SMOP__ID__loop; 
    163 constlist[52] = SMOP__ID__mold; 
    164 constlist[53] = SMOP__ID__move_capturize; 
    165 constlist[54] = SMOP__ID__move_identifier; 
    166 constlist[55] = SMOP__ID__move_responder; 
    167 constlist[56] = SMOP__ID__named; 
    168 constlist[57] = SMOP__ID__name; 
    169 constlist[58] = SMOP__ID__new; 
    170 constlist[59] = SMOP__ID__next; 
    171 constlist[60] = SMOP__ID__outer; 
    172 constlist[61] = SMOP__ID__past; 
    173 constlist[62] = SMOP__ID__perl; 
    174 constlist[63] = SMOP__ID__positional; 
    175 constlist[64] = SMOP__ID__postcircumfix_curly; 
    176 constlist[65] = SMOP__ID__postcircumfix_parens; 
    177 constlist[66] = SMOP__ID__postcircumfix_square; 
    178 constlist[67] = SMOP__ID__postfix_plusplus; 
    179 constlist[68] = SMOP__ID__prefix_equal; 
    180 constlist[69] = SMOP__ID__private_name; 
    181 constlist[70] = SMOP__ID__push; 
    182 constlist[71] = SMOP__ID__register; 
    183 constlist[72] = SMOP__ID__REPR_attributes; 
    184 constlist[73] = SMOP__ID__REPR_bless; 
    185 constlist[74] = SMOP__ID__REPR_can; 
    186 constlist[75] = SMOP__ID__REPR_class_storage; 
    187 constlist[76] = SMOP__ID__REPR_clone; 
    188 constlist[77] = SMOP__ID__REPR_CREATE; 
    189 constlist[78] = SMOP__ID__REPR_defined; 
    190 constlist[79] = SMOP__ID__REPR_DESTROY; 
    191 constlist[80] = SMOP__ID__REPR_destroy_instance_storage; 
    192 constlist[81] = SMOP__ID__REPR_destroy_instance_storage_slot; 
    193 constlist[82] = SMOP__ID__REPR_does; 
    194 constlist[83] = SMOP__ID__REPR_has; 
    195 constlist[84] = SMOP__ID__REPR_how; 
    196 constlist[85] = SMOP__ID__REPR_initialize_instance_storage; 
    197 constlist[86] = SMOP__ID__REPR_initialize_instance_storage_slot; 
    198 constlist[87] = SMOP__ID__REPR_instance; 
    199 constlist[88] = SMOP__ID__REPR_instanceof; 
    200 constlist[89] = SMOP__ID__REPR_isa; 
    201 constlist[90] = SMOP__ID__REPR_methods; 
    202 constlist[91] = SMOP__ID__REPR_multimethods; 
    203 constlist[92] = SMOP__ID__REPR_multisubmethods; 
    204 constlist[93] = SMOP__ID__REPR_package; 
    205 constlist[94] = SMOP__ID__REPR_private_storage; 
    206 constlist[95] = SMOP__ID__REPR_properties; 
    207 constlist[96] = SMOP__ID__REPR_submethods; 
    208 constlist[97] = SMOP__ID__REPR_whence; 
    209 constlist[98] = SMOP__ID__REPR_who; 
    210 constlist[99] = SMOP__ID__responder; 
    211 constlist[100] = SMOP__ID__result; 
    212 constlist[101] = SMOP__ID__setr; 
    213 constlist[102] = SMOP__ID__shift; 
    214 constlist[103] = SMOP__ID__signature; 
    215 constlist[104] = SMOP__ID__STORE; 
    216 constlist[105] = SMOP__ID__unshift; 
    217 constlist[106] = SMOP__ID__Void; 
     112constlist[0] = SMOP__ID__ACCEPTS; 
     113constlist[1] = SMOP__ID__back; 
     114constlist[2] = SMOP__ID__BIND; 
     115constlist[3] = SMOP__ID__bless; 
     116constlist[4] = SMOP__ID__bool; 
     117constlist[5] = SMOP__ID__BUILDALL; 
     118constlist[6] = SMOP__ID__BUILD; 
     119constlist[7] = SMOP__ID__call; 
     120constlist[8] = SMOP__ID__can; 
     121constlist[9] = SMOP__ID__capture; 
     122constlist[10] = SMOP__ID__capturize; 
     123constlist[11] = SMOP__ID__clone; 
     124constlist[12] = SMOP__ID__container_type; 
     125constlist[13] = SMOP__ID__continuation; 
     126constlist[14] = SMOP__ID__continues; 
     127constlist[15] = SMOP__ID__copy; 
     128constlist[16] = SMOP__ID__count; 
     129constlist[17] = SMOP__ID__create_container; 
     130constlist[18] = SMOP__ID__CREATE; 
     131constlist[19] = SMOP__ID__current; 
     132constlist[20] = SMOP__ID__debug; 
     133constlist[21] = SMOP__ID__defined; 
     134constlist[22] = SMOP__ID__DESTROYALL; 
     135constlist[23] = SMOP__ID__DESTROY; 
     136constlist[24] = SMOP__ID__dispatch; 
     137constlist[25] = SMOP__ID__does; 
     138constlist[26] = SMOP__ID__drop; 
     139constlist[27] = SMOP__ID__elems; 
     140constlist[28] = SMOP__ID__eval; 
     141constlist[29] = SMOP__ID__exists; 
     142constlist[30] = SMOP__ID__FETCH; 
     143constlist[31] = SMOP__ID__forget; 
     144constlist[32] = SMOP__ID__free; 
     145constlist[33] = SMOP__ID__goto; 
     146constlist[34] = SMOP__ID__has_next; 
     147constlist[35] = SMOP__ID__HOW_attributes; 
     148constlist[36] = SMOP__ID__HOW_can; 
     149constlist[37] = SMOP__ID__HOW_CREATE; 
     150constlist[38] = SMOP__ID__HOW_has; 
     151constlist[39] = SMOP__ID__HOW_isa; 
     152constlist[40] = SMOP__ID__HOW_methods; 
     153constlist[41] = SMOP__ID__identifier; 
     154constlist[42] = SMOP__ID__infix_eq; 
     155constlist[43] = SMOP__ID__infix_num_gt; 
     156constlist[44] = SMOP__ID__infix_num_ge; 
     157constlist[45] = SMOP__ID__input_array; 
     158constlist[46] = SMOP__ID__invocant; 
     159constlist[47] = SMOP__ID__isa; 
     160constlist[48] = SMOP__ID__Iterator; 
     161constlist[49] = SMOP__ID__jail; 
     162constlist[50] = SMOP__ID__lexical; 
     163constlist[51] = SMOP__ID__List; 
     164constlist[52] = SMOP__ID__loop; 
     165constlist[53] = SMOP__ID__mold; 
     166constlist[54] = SMOP__ID__move_capturize; 
     167constlist[55] = SMOP__ID__move_identifier; 
     168constlist[56] = SMOP__ID__move_responder; 
     169constlist[57] = SMOP__ID__named; 
     170constlist[58] = SMOP__ID__name; 
     171constlist[59] = SMOP__ID__new; 
     172constlist[60] = SMOP__ID__next; 
     173constlist[61] = SMOP__ID__outer; 
     174constlist[62] = SMOP__ID__past; 
     175constlist[63] = SMOP__ID__perl; 
     176constlist[64] = SMOP__ID__positional; 
     177constlist[65] = SMOP__ID__postcircumfix_curly; 
     178constlist[66] = SMOP__ID__postcircumfix_parens; 
     179constlist[67] = SMOP__ID__postcircumfix_square; 
     180constlist[68] = SMOP__ID__postfix_plusplus; 
     181constlist[69] = SMOP__ID__prefix_equal; 
     182constlist[70] = SMOP__ID__private_name; 
     183constlist[71] = SMOP__ID__push; 
     184constlist[72] = SMOP__ID__register; 
     185constlist[73] = SMOP__ID__REPR_attributes; 
     186constlist[74] = SMOP__ID__REPR_bless; 
     187constlist[75] = SMOP__ID__REPR_can; 
     188constlist[76] = SMOP__ID__REPR_class_storage; 
     189constlist[77] = SMOP__ID__REPR_clone; 
     190constlist[78] = SMOP__ID__REPR_CREATE; 
     191constlist[79] = SMOP__ID__REPR_defined; 
     192constlist[80] = SMOP__ID__REPR_DESTROY; 
     193constlist[81] = SMOP__ID__REPR_destroy_instance_storage; 
     194constlist[82] = SMOP__ID__REPR_destroy_instance_storage_slot; 
     195constlist[83] = SMOP__ID__REPR_does; 
     196constlist[84] = SMOP__ID__REPR_has; 
     197constlist[85] = SMOP__ID__REPR_how; 
     198constlist[86] = SMOP__ID__REPR_initialize_instance_storage; 
     199constlist[87] = SMOP__ID__REPR_initialize_instance_storage_slot; 
     200constlist[88] = SMOP__ID__REPR_instance; 
     201constlist[89] = SMOP__ID__REPR_instanceof; 
     202constlist[90] = SMOP__ID__REPR_isa; 
     203constlist[91] = SMOP__ID__REPR_methods; 
     204constlist[92] = SMOP__ID__REPR_multimethods; 
     205constlist[93] = SMOP__ID__REPR_multisubmethods; 
     206constlist[94] = SMOP__ID__REPR_package; 
     207constlist[95] = SMOP__ID__REPR_private_storage; 
     208constlist[96] = SMOP__ID__REPR_properties; 
     209constlist[97] = SMOP__ID__REPR_submethods; 
     210constlist[98] = SMOP__ID__REPR_whence; 
     211constlist[99] = SMOP__ID__REPR_who; 
     212constlist[100] = SMOP__ID__responder; 
     213constlist[101] = SMOP__ID__result; 
     214constlist[102] = SMOP__ID__setr; 
     215constlist[103] = SMOP__ID__shift; 
     216constlist[104] = SMOP__ID__signature; 
     217constlist[105] = SMOP__ID__STORE; 
     218constlist[106] = SMOP__ID__unshift; 
     219constlist[107] = SMOP__ID__Void; 
  • v6/smop/src/internal.h

    r22523 r22525  
    6262     smop_s1p_defaultblocksignature_init(); \ 
    6363     smop_s1p_bindcapturesignature_init();  \ 
     64     smop_s1p_adhocsignature_init();        \ 
    6465     smop_s1p_pureprototypehow_init();      \ 
    6566     smop_s1p_map_init();                   \ 
     
    7576     smop_s1p_map_destr();                  \ 
    7677     smop_s1p_pureprototypehow_destr();     \ 
     78     smop_s1p_adhocsignature_destr();       \ 
    7779     smop_s1p_bindcapturesignature_destr(); \ 
    7880     smop_s1p_defaultblocksignature_destr();\ 
     
    148150void smop_s1p_lexicalscope_init(); 
    149151void smop_s1p_lexicalscope_destr(); 
     152void smop_s1p_adhocsignature_init(); 
     153void smop_s1p_adhocsignature_destr(); 
    150154void smop_s1p_defaultblocksignature_init(); 
    151155void smop_s1p_defaultblocksignature_destr();