|
|
| version 1.13, 2001/02/21 17:53:02 | version 1.15, 2001/02/22 09:14:46 |
|---|---|
| Line 5 | Line 5 |
| #include "pa_array.h" | #include "pa_array.h" |
| #include "code.h" | #include "code.h" |
| #include "pa_request.h" | #include "pa_request.h" |
| #include "pa_vstring.h" | |
| #include <stdio.h> | #include <stdio.h> |
| char *opcode_name[]={ | char *opcode_name[]={ |
| "STRING", | "STRING", "VSTRING", "CODE_ARRAY", |
| "CODE_ARRAY", | |
| "WITH_ROOT", "WITH_SELF", "WITH_READ", "WITH_WRITE", | "WITH_ROOT", "WITH_SELF", "WITH_READ", "WITH_WRITE", |
| "CONSTRUCT", | "CONSTRUCT", |
| "EXPRESSION_EVAL", "MODIFY_EVAL", | "EXPRESSION_EVAL", "MODIFY_EVAL", |
| "WRITE", | "WRITE_STRING", "WRITE_VALUE", |
| "GET_ELEMENT", "GET_ELEMENT__WRITE", | "GET_ELEMENT", "GET_ELEMENT__WRITE_VALUE", |
| "CREATE_EWPOOL", "REDUCE_EWPOOL", | "CREATE_EWPOOL", "REDUCE_EWPOOL", |
| "CREATE_RWPOOL", "REDUCE_RWPOOL", | "CREATE_RWPOOL", "REDUCE_RWPOOL", |
| "GET_METHOD_FRAME", | "GET_METHOD_FRAME", |
| Line 32 void dump(int level, const Array& ops) { | Line 32 void dump(int level, const Array& ops) { |
| printf("%*s%s", level*4, "", opcode_name[code]); | printf("%*s%s", level*4, "", opcode_name[code]); |
| if(code==OP_STRING) { | if(code==OP_STRING) { |
| const String *string=static_cast<const String *>(ops.quick_get(++i)); | String *string=static_cast<String *>(ops.quick_get(++i)); |
| printf(" \"%s\"", string->cstr()); | printf(" \"%s\"", string->cstr()); |
| } | } |
| if(code==OP_VSTRING) { | |
| Value *value=static_cast<Value *>(ops.quick_get(++i)); | |
| printf(" \"%s\"", value->get_string()->cstr()); | |
| } | |
| printf("\n"); | printf("\n"); |
| if(code==OP_CODE_ARRAY) { | if(code==OP_CODE_ARRAY) { |
| Line 67 void Request::execute(Array& ops) { | Line 71 void Request::execute(Array& ops) { |
| stack.push(wcontext); | stack.push(wcontext); |
| break; | break; |
| } | } |
| case OP_WITH_READ: | |
| { | |
| stack.push(rcontext); | |
| break; | |
| } | |
| case OP_STRING: | case OP_STRING: |
| { | { |
| Line 75 void Request::execute(Array& ops) { | Line 84 void Request::execute(Array& ops) { |
| break; | break; |
| } | } |
| case OP_VSTRING: | |
| { | |
| Value *value=static_cast<Value *>(ops.quick_get(++i)); | |
| stack.push(value); | |
| break; | |
| } | |
| case OP_CONSTRUCT: | case OP_CONSTRUCT: |
| { | { |
| Value *value=static_cast<Value *>(stack.pop()); | Value *value=static_cast<Value *>(stack.pop()); |
| Line 84 void Request::execute(Array& ops) { | Line 100 void Request::execute(Array& ops) { |
| break; | break; |
| } | } |
| /*case OP_WRITE: | case OP_WRITE_STRING: |
| { | |
| String *string=static_cast<String *>(stack.pop()); | |
| wcontext->write(string); | |
| break; | |
| } | |
| case OP_WRITE_VALUE: | |
| { | { |
| Value *value=static_cast<Value *>(stack.pop()); | Value *value=static_cast<Value *>(stack.pop()); |
| wcontext.write(value); | wcontext->write(value); |
| break; | break; |
| }*/ | } |
| /*case OP_GET_ELEMENT: | case OP_GET_ELEMENT: |
| { | { |
| String *name=static_cast<String *>(stack.pop()); | String *name=static_cast<String *>(stack.pop()); |
| Value *ncontext=static_cast<Value *>(stack.pop()); | Value *ncontext=static_cast<Value *>(stack.pop()); |
| Line 99 void Request::execute(Array& ops) { | Line 122 void Request::execute(Array& ops) { |
| // name бывает имя junction, тогда или оставляет в покое, или вычисляет в зависимости от флага АВТОВЫЧИСЛЯТЬ | // name бывает имя junction, тогда или оставляет в покое, или вычисляет в зависимости от флага АВТОВЫЧИСЛЯТЬ |
| stack.push(value); | stack.push(value); |
| break; | break; |
| }*/ | } |
| default: | default: |
| printf("\tTODO\n"); | printf("\tTODO\n"); |