--- parser3/src/include/pa_request.h 2003/02/14 16:52:21 1.160.2.20 +++ parser3/src/include/pa_request.h 2003/03/08 16:35:03 1.160.2.32 @@ -8,7 +8,7 @@ #ifndef PA_REQUEST_H #define PA_REQUEST_H -static const char* IDENT_REQUEST_H="$Date: 2003/02/14 16:52:21 $"; +static const char* IDENT_REQUEST_H="$Date: 2003/03/08 16:35:03 $"; #include "pa_pool.h" #include "pa_request_info.h" @@ -18,12 +18,8 @@ static const char* IDENT_REQUEST_H="$Dat #include "pa_stack.h" #include "pa_vclass.h" #include "pa_vobject.h" -#include "pa_venv.h" -#include "pa_vstatus.h" #include "pa_vform.h" -#include "pa_vmail.h" -#include "pa_vmath.h" -#include "pa_vrequest.h" +//#include "pa_vmail.h" #include "pa_vresponse.h" #include "pa_vcookie.h" #include "pa_request_info.h" @@ -58,6 +54,9 @@ const uint ANTI_ENDLESS_EXECUTE_RECOURSI class Temp_lang; class Methoded; class VMethodFrame; +class GdomeDOMString_auto_ptr; +class VMail; DECLARE_OBJECT_PTR(VMail); + /// Main workhorse. class Request: public PA_Object { @@ -67,7 +66,7 @@ class Request: public PA_Object { friend class Temp_request_self; /// all files and classes and other hard-to-place allocations go to this pool - Pool fpool; + Pool& fpool; ///@{ core data @@ -88,17 +87,16 @@ public: class StackItem { public: - StringPtr string; + StringPtr string(Pool& pool) const { return value->get_string(&pool); } ValuePtr value; ArrayOperationPtr ops; - void *unknown; + void *ptr; /// needed to fill unused Array entries StackItem() {} - StackItem(StringPtr astring): string(astring) {} StackItem(ValuePtr avalue): value(avalue) {} StackItem(ArrayOperationPtr aops): ops(aops) {} - StackItem(void *aunknown): unknown(aunknown) {} + StackItem(void *aptr): ptr(aptr) {} }; //@{ request processing status @@ -111,7 +109,7 @@ public: Value *rcontext; WContext *wcontext; /// current language - uchar flang; + String_UL flang; /// current connection SQL_Connection *fconnection; //@} @@ -129,8 +127,8 @@ public: double sql_request_time; #endif - Request(SAPI_Info& asapi_info, Request_info& arequest_info, - uchar adefault_lang, ///< all tainted data default untainting lang + Request(Pool& apool, SAPI_Info& asapi_info, Request_info& arequest_info, + String_UL adefault_lang, ///< all tainted data default untainting lang bool status_allowed ///< status class allowed ); ~Request(); @@ -276,18 +274,10 @@ public: /// 'MAIN' class conglomerat & operators are methods of this class VStateless_classPtr main_class; - /// $env:fields - //VEnv env; - /// $status:fields - //VStatus status; /// $form:elements VFormPtr form; /// $mail VMailPtr mail; - /// $math:constants - //VMath math; - /// $request:elements - //VRequest request; /// $response:elements VResponsePtr response; /// $cookie:elements @@ -310,7 +300,25 @@ public: // status read methods } */ +#ifdef XML +public: // charset helpers + /// @see Charset::transcode + GdomeDOMString_auto_ptr transcode(StringPtr s); + /// @see Charset::transcode + StringPtr transcode(GdomeDOMString* s +#ifndef NO_STRING_ORIGIN + , StringPtr origin +#endif + ); + /// @see Charset::transcode + StringPtr transcode(xmlChar* s +#ifndef NO_STRING_ORIGIN + , StringPtr origin +#endif + ); + +#endif private: @@ -331,10 +339,13 @@ private: // execute.C StringPtr execute_method(ValuePtr aself, const Method& method, VStringPtr optional_param, bool do_return_string); - StringPtr execute_nonvirtual_method(VStateless_class& aclass, + struct Execute_nonvirtual_method_result { + StringPtr string; + MethodPtr method; + }; + Execute_nonvirtual_method_result execute_nonvirtual_method(VStateless_class& aclass, StringPtr method_name, VStringPtr optional_param, - bool do_return_string, - const Method **return_method=0); + bool do_return_string); //} /// for @main[] StringPtr execute_virtual_method(ValuePtr aself, StringPtr method_name); @@ -343,8 +354,7 @@ private: // execute.C private: // defaults - const uchar fdefault_lang; - Value *default_content_type; + const String_UL fdefault_lang; private: // mime types @@ -353,12 +363,12 @@ private: // mime types private: // lang manipulation - uchar set_lang(uchar alang) { - uchar result=flang; + String_UL set_lang(String_UL alang) { + String_UL result=flang; flang=alang; return result; } - void restore_lang(uchar alang) { + void restore_lang(String_UL alang) { flang=alang; } @@ -391,7 +401,7 @@ class Request_context_saver { Value *rcontext; WContext *wcontext; /// current language - uchar flang; + String_UL flang; /// current connection SQL_Connection *fconnection; @@ -461,5 +471,6 @@ extern StringPtr content_disposition_fil // defines for statics #define MAIN_CLASS_NAME "MAIN" +#define AUTO_FILE_NAME "auto.p" #endif