--- parser3/src/main/execute.C 2002/11/20 13:37:23 1.293 +++ parser3/src/main/execute.C 2003/01/31 14:03:54 1.295.2.5 @@ -1,11 +1,11 @@ /** @file Parser: executor part of request class. - Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com) + Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com) Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_EXECUTE_C="$Date: 2002/11/20 13:37:23 $"; +static const char* IDENT_EXECUTE_C="$Date: 2003/01/31 14:03:54 $"; #include "pa_opcode.h" #include "pa_array.h" @@ -62,13 +62,13 @@ char *opcode_name[]={ "IS" }; -void va_debug_printf(Pool& pool, const char *fmt,va_list args) { +void va_debug_printf(Pool& pool, const char* fmt,va_list args) { char buf[MAX_STRING]; vsnprintf(buf, MAX_STRING, fmt, args); SAPI::log(pool, "%s", buf); } -void debug_printf(Pool& pool, const char *fmt, ...) { +void debug_printf(Pool& pool, const char* fmt, ...) { va_list args; va_start(args,fmt); va_debug_printf(pool,fmt,args); @@ -112,6 +112,8 @@ void debug_dump(Pool& pool, int level, c #define POP_NAME() static_cast(stack.pop())->as_string() #define POP_CODE() static_cast(stack.pop()) +// Request + void Request::execute(const Array& ops) { // _asm int 3; #ifdef DEBUG_EXECUTE @@ -125,7 +127,7 @@ void Request::execute(const Array& ops) while(i.has_next()) { if(interrupted()) throw Exception("parser.interrupted", - 0, + Exception::undefined_source, "execution stopped"); Operation op; @@ -432,7 +434,7 @@ void Request::execute(const Array& ops) if(frame.junction.method->call_type!=Method::CT_STATIC) { // this is a constructor call - if(Value *value=called_class->create_new_value(pool())) { + if(ValuePtr value=called_class->create_new_value()) { // some stateless_class creatable derivates new_self=value; } else @@ -478,7 +480,7 @@ void Request::execute(const Array& ops) } catch(...) { // record it to stack trace exception_trace.push((void *)&frame.name()); - /*re*/throw; + rethrow; } } else throw Exception("parser.runtime", @@ -543,7 +545,7 @@ void Request::execute(const Array& ops) { /// @test String::cmp Value *operand=POP(); - const char *path=operand->as_string().cstr(); + const char* path=operand->as_string().cstr(); value=NEW VBool(pool(), info.uri && strncmp(path, info.uri, strlen(path))==0); PUSH(value); @@ -869,7 +871,7 @@ Value *Request::get_element(const String value_ready: if(value) - value=&process_to_value(*value); // process possible code-junction + value=&process_to_value(*value); // process possible code-junction else value=NEW VVoid(pool()); @@ -1005,7 +1007,7 @@ void Request::execute_method(Value& asel } void Request::execute_nonvirtual_method(VStateless_class& aclass, - const String& method_name, VString *optional_param, + StringPtr method_name, VStringPtr optional_param, const String **return_string, const Method **return_method) { @@ -1019,8 +1021,8 @@ void Request::execute_nonvirtual_method( execute_method(aclass, *method, optional_param, return_string); } -const String *Request::execute_virtual_method(Value& aself, - const String& method_name) { +StringPtr Request::execute_virtual_method(Value& aself, + StringPtr method_name) { if(Value *value=aself.get_element(method_name, aself, false)) if(Junction *junction=value->get_junction()) if(const Method *method=junction->method) {