--- parser3/src/main/execute.C 2001/03/10 14:05:36 1.85 +++ parser3/src/main/execute.C 2001/03/10 15:44:31 1.87 @@ -1,5 +1,5 @@ /* - $Id: execute.C,v 1.85 2001/03/10 14:05:36 paf Exp $ + $Id: execute.C,v 1.87 2001/03/10 15:44:31 paf Exp $ */ #include "pa_array.h" @@ -29,7 +29,7 @@ char *opcode_name[]={ "WITH_SELF", "WITH_ROOT", "WITH_READ", "WITH_WRITE", "GET_CLASS", "CONSTRUCT_VALUE", "CONSTRUCT_DOUBLE", - "WRITE", + "WRITE", "STRING__WRITE", "GET_ELEMENT", "GET_ELEMENT__WRITE", "CREATE_EWPOOL", "REDUCE_EWPOOL", "CREATE_RWPOOL", "REDUCE_RWPOOL", @@ -66,7 +66,7 @@ void dump(int level, const Array& ops) { op.cast=ops.quick_get(i); fprintf(stderr, "%*s%s", level*4, "", opcode_name[op.code]); - if(op.code==OP_VALUE) { + if(op.code==OP_VALUE || op.code==OP_STRING__WRITE) { Value *value=static_cast(ops.quick_get(++i)); fprintf(stderr, " \"%s\" %s", value->get_string()->cstr(), value->type()); } @@ -116,7 +116,6 @@ void Request::execute(const Array& ops) root, frame, frame, local_ops); Value *value=NEW VJunction(j); - ///value->set_name(frame->name()); // store param frame->store_param(value); @@ -182,6 +181,13 @@ void Request::execute(const Array& ops) write(*value); break; } + case OP_STRING__WRITE: + { + VString *vstring=static_cast(ops.quick_get(++i)); + fprintf(stderr, " \"%s\"", vstring->value().cstr()); + write(vstring->value()); + break; + } case OP_GET_ELEMENT: { @@ -618,7 +624,7 @@ Value& Request::autocalc(Value& value, c return value; } -char *Request::execute_static(VClass& vclass, String& method_name, bool return_cstr) { +char *Request::execute_static_method(VClass& vclass, String& method_name, bool return_cstr) { Value *value=vclass.get_element(method_name); if(value) { // found some 'METHOD_NAME' element Junction *junction=value->get_junction();