Changeset 22092 for v6

Show
Ignore:
Timestamp:
09/02/08 02:05:59 (3 months ago)
Author:
ruoso
Message:

[smop] adding postfix:<++> to native int

Location:
v6/smop
Files:
1 added
5 modified

Legend:

Unmodified
Added
Removed
  • v6/smop/CMakeLists.txt

    r22091 r22092  
    142142    test/29_bind_capture_signature.p6 
    143143    test/30_for_operator.m0ld 
     144    test/31_int_postfix_plusplus.m0ld 
    144145) 
    145146    set(c_file) 
  • v6/smop/include/smop_identifiers.h

    r22017 r22092  
    7373extern SMOP__Object* SMOP__ID__postcircumfix_parens;          /* "postcircumfix:( )" */ 
    7474extern SMOP__Object* SMOP__ID__postcircumfix_square;          /* "postcircumfix:[ ]" */ 
     75extern SMOP__Object* SMOP__ID__postfix_plusplus;              /* "postfix:++" */ 
    7576extern SMOP__Object* SMOP__ID__private_name;      /* "private_name" */ 
    7677extern SMOP__Object* SMOP__ID__push;              /* "push" */ 
  • v6/smop/src/idconst_decl_all.h

    r22017 r22092  
    6161SMOP__Object* SMOP__ID__postcircumfix_parens; 
    6262SMOP__Object* SMOP__ID__postcircumfix_square; 
     63SMOP__Object* SMOP__ID__postfix_plusplus; 
    6364SMOP__Object* SMOP__ID__private_name; 
    6465SMOP__Object* SMOP__ID__push; 
  • v6/smop/src/idconst_init_all.c

    r22017 r22092  
    6161SMOP__ID__postcircumfix_parens = SMOP__NATIVE__idconst_create_nolist( "postcircumfix:( )" ); 
    6262SMOP__ID__postcircumfix_square = SMOP__NATIVE__idconst_create_nolist( "postcircumfix:[ ]" ); 
     63SMOP__ID__postfix_plusplus = SMOP__NATIVE__idconst_create_nolist( "postfix:++" ); 
    6364SMOP__ID__private_name = SMOP__NATIVE__idconst_create_nolist( "private_name" ); 
    6465SMOP__ID__push = SMOP__NATIVE__idconst_create_nolist( "push" ); 
     
    9798SMOP__ID__signature = SMOP__NATIVE__idconst_create_nolist( "signature" ); 
    9899SMOP__ID__STORE = SMOP__NATIVE__idconst_create_nolist( "STORE" ); 
    99 constlist_size = 98; 
     100constlist_size = 99; 
    100101constlist = calloc(constlist_size,sizeof(SMOP__Object*)); 
    101102assert(constlist); 
     
    162163constlist[60] = SMOP__ID__postcircumfix_parens; 
    163164constlist[61] = SMOP__ID__postcircumfix_square; 
    164 constlist[62] = SMOP__ID__private_name; 
    165 constlist[63] = SMOP__ID__push; 
    166 constlist[64] = SMOP__ID__register; 
    167 constlist[65] = SMOP__ID__REPR_attributes; 
    168 constlist[66] = SMOP__ID__REPR_bless; 
    169 constlist[67] = SMOP__ID__REPR_can; 
    170 constlist[68] = SMOP__ID__REPR_class_storage; 
    171 constlist[69] = SMOP__ID__REPR_clone; 
    172 constlist[70] = SMOP__ID__REPR_CREATE; 
    173 constlist[71] = SMOP__ID__REPR_defined; 
    174 constlist[72] = SMOP__ID__REPR_DESTROY; 
    175 constlist[73] = SMOP__ID__REPR_destroy_instance_storage; 
    176 constlist[74] = SMOP__ID__REPR_destroy_instance_storage_slot; 
    177 constlist[75] = SMOP__ID__REPR_does; 
    178 constlist[76] = SMOP__ID__REPR_has; 
    179 constlist[77] = SMOP__ID__REPR_how; 
    180 constlist[78] = SMOP__ID__REPR_initialize_instance_storage; 
    181 constlist[79] = SMOP__ID__REPR_initialize_instance_storage_slot; 
    182 constlist[80] = SMOP__ID__REPR_instance; 
    183 constlist[81] = SMOP__ID__REPR_instanceof; 
    184 constlist[82] = SMOP__ID__REPR_isa; 
    185 constlist[83] = SMOP__ID__REPR_methods; 
    186 constlist[84] = SMOP__ID__REPR_multimethods; 
    187 constlist[85] = SMOP__ID__REPR_multisubmethods; 
    188 constlist[86] = SMOP__ID__REPR_package; 
    189 constlist[87] = SMOP__ID__REPR_private_storage; 
    190 constlist[88] = SMOP__ID__REPR_properties; 
    191 constlist[89] = SMOP__ID__REPR_submethods; 
    192 constlist[90] = SMOP__ID__REPR_whence; 
    193 constlist[91] = SMOP__ID__REPR_who; 
    194 constlist[92] = SMOP__ID__responder; 
    195 constlist[93] = SMOP__ID__result; 
    196 constlist[94] = SMOP__ID__setr; 
    197 constlist[95] = SMOP__ID__shift; 
    198 constlist[96] = SMOP__ID__signature; 
    199 constlist[97] = SMOP__ID__STORE; 
     165constlist[62] = SMOP__ID__postfix_plusplus; 
     166constlist[63] = SMOP__ID__private_name; 
     167constlist[64] = SMOP__ID__push; 
     168constlist[65] = SMOP__ID__register; 
     169constlist[66] = SMOP__ID__REPR_attributes; 
     170constlist[67] = SMOP__ID__REPR_bless; 
     171constlist[68] = SMOP__ID__REPR_can; 
     172constlist[69] = SMOP__ID__REPR_class_storage; 
     173constlist[70] = SMOP__ID__REPR_clone; 
     174constlist[71] = SMOP__ID__REPR_CREATE; 
     175constlist[72] = SMOP__ID__REPR_defined; 
     176constlist[73] = SMOP__ID__REPR_DESTROY; 
     177constlist[74] = SMOP__ID__REPR_destroy_instance_storage; 
     178constlist[75] = SMOP__ID__REPR_destroy_instance_storage_slot; 
     179constlist[76] = SMOP__ID__REPR_does; 
     180constlist[77] = SMOP__ID__REPR_has; 
     181constlist[78] = SMOP__ID__REPR_how; 
     182constlist[79] = SMOP__ID__REPR_initialize_instance_storage; 
     183constlist[80] = SMOP__ID__REPR_initialize_instance_storage_slot; 
     184constlist[81] = SMOP__ID__REPR_instance; 
     185constlist[82] = SMOP__ID__REPR_instanceof; 
     186constlist[83] = SMOP__ID__REPR_isa; 
     187constlist[84] = SMOP__ID__REPR_methods; 
     188constlist[85] = SMOP__ID__REPR_multimethods; 
     189constlist[86] = SMOP__ID__REPR_multisubmethods; 
     190constlist[87] = SMOP__ID__REPR_package; 
     191constlist[88] = SMOP__ID__REPR_private_storage; 
     192constlist[89] = SMOP__ID__REPR_properties; 
     193constlist[90] = SMOP__ID__REPR_submethods; 
     194constlist[91] = SMOP__ID__REPR_whence; 
     195constlist[92] = SMOP__ID__REPR_who; 
     196constlist[93] = SMOP__ID__responder; 
     197constlist[94] = SMOP__ID__result; 
     198constlist[95] = SMOP__ID__setr; 
     199constlist[96] = SMOP__ID__shift; 
     200constlist[97] = SMOP__ID__signature; 
     201constlist[98] = SMOP__ID__STORE; 
  • v6/smop/src/native_int.c

    r22017 r22092  
    4444  } else if (identifier == SMOP__ID__DESTROYALL) { 
    4545    // notthing 
     46  } else if (identifier == SMOP__ID__new) { 
     47 
     48    SMOP__Object* other = SMOP__NATIVE__capture_positional(interpreter,capture,0); 
     49    if (other && SMOP_RI(other) == (SMOP__ResponderInterface*)SMOP__NATIVE__int) { 
     50      return other; 
     51    } else { 
     52      if (other) SMOP_RELEASE(interpreter, other); 
     53      return SMOP__NATIVE__int_create(0); 
     54    } 
     55 
     56  } else if (identifier == SMOP__ID__postfix_plusplus) { 
     57 
     58    ___NATIVE_CAPTURE_ONLY___; 
     59    ___INVOCANT_RI_SHOULD_MATCH___; 
     60     
     61    smop_lowlevel_wrlock(invocant); 
     62    ((smop_native_int_struct*)invocant)->intvalue++; 
     63    smop_lowlevel_unlock(invocant); 
     64     
    4665  } else { 
    4766    ___UNKNOWN_METHOD___;