--- parser3/src/include/pa_request.h 2013/08/21 12:11:14 1.212 +++ parser3/src/include/pa_request.h 2015/06/03 00:13:19 1.218 @@ -8,7 +8,7 @@ #ifndef PA_REQUEST_H #define PA_REQUEST_H -#define IDENT_PA_REQUEST_H "$Id: pa_request.h,v 1.212 2013/08/21 12:11:14 moko Exp $" +#define IDENT_PA_REQUEST_H "$Id: pa_request.h,v 1.218 2015/06/03 00:13:19 moko Exp $" #include "pa_pool.h" #include "pa_hash.h" @@ -18,7 +18,6 @@ #include "pa_request_info.h" #include "pa_request_charsets.h" #include "pa_sapi.h" -#include "pa_vconsole.h" // consts @@ -35,13 +34,15 @@ class VForm; class VResponse; class VCookie; class VStateless_class; +class VConsole; /// Main workhorse. class Request: public PA_Object { friend class Temp_lang; friend class Temp_connection; - friend class Request_context_saver; friend class Temp_request_self; + friend class Temp_value_element; + friend class Request_context_saver; friend class Exception_trace; public: @@ -136,6 +137,8 @@ private: Exception_trace exception_trace; public: + bool allow_class_replace; + //@{ request processing status /// contexts VMethodFrame* method_frame; @@ -260,7 +263,7 @@ public: /// appending, sure of clean string inside void write_no_lang(const String& astring) { wcontext->write(astring, - (String::Language)(String::L_CLEAN | flang&String::L_OPTIMIZE_BIT)); + (String::Language)(String::L_CLEAN | (flang & String::L_OPTIMIZE_BIT) )); } /// appending sure value, that would be converted to clean string void write_no_lang(Value& avalue) { @@ -268,7 +271,7 @@ public: wcontext->write(avalue); else wcontext->write(avalue, - (String::Language)(String::L_CLEAN | flang&String::L_OPTIMIZE_BIT)); + (String::Language)(String::L_CLEAN | (flang & String::L_OPTIMIZE_BIT) )); } /// appending string, passing language built into string being written @@ -537,6 +540,29 @@ public: } }; +/// Auto-object used for temporary changing Request::allow_class_replace. +class Temp_class_replace { + Request& frequest; +public: + Temp_class_replace(Request& arequest, bool avalue) : frequest(arequest){ + frequest.allow_class_replace=avalue; + } + ~Temp_class_replace() { + frequest.allow_class_replace=false; + } +}; + +/// Auto-object used for temporarily substituting/removing elements +class Temp_value_element { + Request& frequest; + Value& fwhere; + const String& fname; + Value* saved; +public: + Temp_value_element(Request& arequest, Value& awhere, const String& aname, Value* awhat); + ~Temp_value_element(); +}; + // defines for externs #define EXCEPTION_HANDLED_PART_NAME "handled" @@ -546,7 +572,6 @@ public: extern const String main_method_name; extern const String auto_method_name; -extern const String body_name; extern const String exception_type_part_name; extern const String exception_source_part_name;