Changeset 21971 for v6/smop/src/smop_mold.c
- Timestamp:
- 08/20/08 20:48:37 (5 months ago)
- Files:
-
- 1 modified
-
v6/smop/src/smop_mold.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
v6/smop/src/smop_mold.c
r21919 r21971 8 8 SMOP__Object* SMOP__Mold; 9 9 SMOP__Object* SMOP__Mold__Frame; 10 11 static SMOP__Object* SMOP__ID__set_reg; 12 static SMOP__Object* SMOP__ID__set_back; 10 13 11 14 typedef struct smop_mold { … … 143 146 SMOP__Object* mold = SMOP__NATIVE__capture_positional(interpreter, capture, 0); 144 147 ret = SMOP__Mold__Frame_create(interpreter,mold); 148 } else if (SMOP__ID__set_reg == identifier) { 149 150 SMOP__Object* reg_pos = SMOP__NATIVE__capture_positional(interpreter, capture, 0); 151 SMOP__Object* value = SMOP__NATIVE__capture_positional(interpreter, capture, 1); 152 mold_reg_set(interpreter, invocant, SMOP__NATIVE__int_fetch(reg_pos), value); 153 154 } else if (SMOP__ID__back == identifier) { 155 156 SMOP__Object* value = SMOP__NATIVE__capture_positional(interpreter, capture, 0); 157 if (frame->back) { 158 ret = SMOP_REFERENCE(interpreter,frame->back); 159 } 160 161 } else if (SMOP__ID__set_back == identifier) { 162 163 SMOP__Object* value = SMOP__NATIVE__capture_positional(interpreter, capture, 0); 164 if (!frame->back) { 165 frame->back = value; 166 } else { 167 printf("trying to set a new back to the frame\n"); 168 abort(); 169 } 170 145 171 } else if (SMOP__ID__has_next == identifier) { 146 172 if (mold->opcodes[frame->position]) { … … 289 315 290 316 void smop_mold_init() { 317 SMOP__ID__set_reg = SMOP__NATIVE__idconst_create("set_reg"); 318 SMOP__ID__set_back = SMOP__NATIVE__idconst_create("set_back"); 319 291 320 SMOP__Mold = calloc(1,sizeof(SMOP__ResponderInterface)); 292 321 ((SMOP__ResponderInterface*)SMOP__Mold)->MESSAGE = smop_mold_message;
