Diff for /parser3/src/include/pa_request.h between versions 1.201 and 1.219

version 1.201, 2010/05/25 03:58:17 version 1.219, 2015/09/28 22:26:13
Line 1 Line 1
 /** @file  /** @file
         Parser: request class decl.          Parser: request class decl.
   
         Copyright (c) 2001-2009 ArtLebedev Group (http://www.artlebedev.com)          Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com)
         Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)          Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
 */  */
   
 #ifndef PA_REQUEST_H  #ifndef PA_REQUEST_H
 #define PA_REQUEST_H  #define PA_REQUEST_H
   
 static const char * const IDENT_REQUEST_H="$Date$";  #define IDENT_PA_REQUEST_H "$Id$"
   
 #include "pa_pool.h"  #include "pa_pool.h"
 #include "pa_hash.h"  #include "pa_hash.h"
Line 18  static const char * const IDENT_REQUEST_ Line 18  static const char * const IDENT_REQUEST_
 #include "pa_request_info.h"  #include "pa_request_info.h"
 #include "pa_request_charsets.h"  #include "pa_request_charsets.h"
 #include "pa_sapi.h"  #include "pa_sapi.h"
 #include "pa_vconsole.h"  
   
 #ifdef RESOURCES_DEBUG  
 #include <sys/resource.h>  
 #endif  
   
 // consts  // consts
   
Line 39  class VForm; Line 34  class VForm;
 class VResponse;  class VResponse;
 class VCookie;  class VCookie;
 class VStateless_class;  class VStateless_class;
   class VConsole;
   
 /// Main workhorse.  /// Main workhorse.
 class Request: public PA_Object {  class Request: public PA_Object {
         friend class Temp_lang;          friend class Temp_lang;
         friend class Temp_connection;          friend class Temp_connection;
         friend class Request_context_saver;  
         friend class Temp_request_self;          friend class Temp_request_self;
           friend class Temp_value_element;
           friend class Request_context_saver;
         friend class Exception_trace;          friend class Exception_trace;
   
 public:  public:
Line 140  private: Line 137  private:
         Exception_trace exception_trace;          Exception_trace exception_trace;
 public:  public:
   
           bool allow_class_replace;
   
         //@{ request processing status          //@{ request processing status
         /// contexts          /// contexts
         VMethodFrame* method_frame;          VMethodFrame* method_frame;
Line 183  public: Line 182  public:
 #endif    #endif  
   
         Request(SAPI_Info& asapi_info, Request_info& arequest_info,          Request(SAPI_Info& asapi_info, Request_info& arequest_info,
                 String::Language adefault_lang, ///< all tainted data default untainting lang                  String::Language adefault_lang ///< all tainted data default untainting lang
                 bool status_allowed ///<  status class allowed  
         );          );
         ~Request();          ~Request();
   
Line 206  public: Line 204  public:
         void execute(ArrayOperation& ops); // execute.C          void execute(ArrayOperation& ops); // execute.C
         void op_call(VMethodFrame &frame);          void op_call(VMethodFrame &frame);
         void op_call_write(VMethodFrame &frame);          void op_call_write(VMethodFrame &frame);
         void op_call(VMethodFrame &frame, bool constructing);          Value& construct(Value &class_value, const Method &method);
   
         /// execute ops with anti-recoursion check          /// execute ops with anti-recoursion check
         void recoursion_checked_execute(/*const String& name, */ArrayOperation& ops) {          void recoursion_checked_execute(/*const String& name, */ArrayOperation& ops) {
                 // anti_endless_execute_recoursion                  // anti_endless_execute_recoursion
Line 239  public: Line 238  public:
                 int line_no_offset=0);                  int line_no_offset=0);
   
         /// processes any code-junction there may be inside of @a value          /// processes any code-junction there may be inside of @a value
           StringOrValue process_getter(Junction& junction); // execute.C
         StringOrValue process(Value& input_value, bool intercept_string=true); // execute.C          StringOrValue process(Value& input_value, bool intercept_string=true); // execute.C
         void process_write(Value& input_value); // execute.C          void process_write(Value& input_value); // execute.C
         //@{ convinient helpers          //@{ convinient helpers
Line 263  public: Line 263  public:
         /// appending, sure of clean string inside          /// appending, sure of clean string inside
         void write_no_lang(const String& astring) {          void write_no_lang(const String& astring) {
                 wcontext->write(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          /// appending sure value, that would be converted to clean string
         void write_no_lang(Value& avalue) {          void write_no_lang(Value& avalue) {
Line 271  public: Line 271  public:
                         wcontext->write(avalue);                          wcontext->write(avalue);
                 else                  else
                         wcontext->write(avalue,                           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          /// appending string, passing language built into string being written
Line 300  public: Line 300  public:
         /// returns an absolute @a path to relative @a name          /// returns an absolute @a path to relative @a name
         const String& absolute(const String& relative_name);          const String& absolute(const String& relative_name);
   
           /// returns the mime type of 'user_file_name'
           const String& mime_type_of(const String* file_name);
   
         /// returns the mime type of 'user_file_name_cstr'          /// returns the mime type of 'user_file_name_cstr'
         const String& mime_type_of(const char* user_file_name_cstr);          const String& mime_type_of(const char* user_file_name_cstr);
   
Line 363  public: // status read methods Line 366  public: // status read methods
         }          }
         */          */
   
           /// public for ^reflection:copy[]
           void put_element(Value& ncontext, const String& name, Value* value);
   
         /// for @main[]          /// for @main[]
         const String* execute_virtual_method(Value& aself, const String& method_name);          const String* execute_virtual_method(Value& aself, const String& method_name);
   
         /// for @postprocess[body]          /// executes parser method, use op_call(frame) to execute native method
         StringOrValue execute_method(VMethodFrame& amethodFrame, const Method& method);          void execute_method(VMethodFrame& aframe);
   
         //{ for @conf[filespec] and @auto[filespec] and parser://method/call          //{ for @conf[filespec] and @auto[filespec] and parser://method/call
         const String* execute_method(Value& aself,           const String* execute_method(Value& aself, 
                 const Method& method, Value* optional_param,                  const Method& method, Value* optional_param,
Line 413  private: // compile.C Line 420  private: // compile.C
   
 private: // execute.C  private: // execute.C
   
         void put_element(Value& ncontext, const String& name, Value* value);  
         Value& get_element(Value& ncontext, const String& name);          Value& get_element(Value& ncontext, const String& name);
   #ifdef FEATURE_GET_ELEMENT4CALL
           Value& get_element4call(Value& ncontext, const String& name);
   #endif
   
 private: // defaults  private: // defaults
   
Line 534  public: Line 543  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  // defines for externs
   
 #define EXCEPTION_HANDLED_PART_NAME "handled"  #define EXCEPTION_HANDLED_PART_NAME "handled"
Line 543  public: Line 575  public:
   
 extern const String main_method_name;  extern const String main_method_name;
 extern const String auto_method_name;  extern const String auto_method_name;
 extern const String body_name;  
   
 extern const String exception_type_part_name;  extern const String exception_type_part_name;
 extern const String exception_source_part_name;  extern const String exception_source_part_name;

Removed from v.1.201  
changed lines
  Added in v.1.219


E-mail: