Diff for /parser3/src/include/pa_request.h between versions 1.87 and 1.94.4.1

version 1.87, 2001/04/28 13:25:01 version 1.94.4.1, 2001/09/13 07:41:45
Line 11 Line 11
 #ifndef PA_REQUEST_H  #ifndef PA_REQUEST_H
 #define PA_REQUEST_H  #define PA_REQUEST_H
   
   #include "pa_config_includes.h"
 #include "pa_pool.h"  #include "pa_pool.h"
 #include "pa_hash.h"  #include "pa_hash.h"
 #include "pa_wcontext.h"  #include "pa_wcontext.h"
Line 20 Line 21
 #include "pa_vobject.h"  #include "pa_vobject.h"
 #include "pa_venv.h"  #include "pa_venv.h"
 #include "pa_vform.h"  #include "pa_vform.h"
   #include "pa_vmath.h"
 #include "pa_vrequest.h"  #include "pa_vrequest.h"
 #include "pa_vresponse.h"  #include "pa_vresponse.h"
 #include "pa_vcookie.h"  #include "pa_vcookie.h"
Line 79  public: Line 81  public:
                 BEWARE: may throw exception to you: catch it!                  BEWARE: may throw exception to you: catch it!
         */          */
         void core(          void core(
                 const char *root_auto_path, ///< path to system auto.p file                  const char *root_config_filespec, ///< system config filespec
                 bool root_auto_fail, ///< fail if system auto.p file not found                  bool root_config_fail_on_read_problem, ///< fail if system config file not found
                 const char *site_auto_path, ///< path to site auto.p file                  const char *site_config_filespec, ///< site config filespec
                 bool site_auto_fail, ///< fail if site auto.p file not found                  bool site_config_fail_on_read_problem, ///< fail if site config file not found
                 bool header_only);                  bool header_only);
   
         /// executes ops          /// executes ops
         void execute(const Array& ops);          void execute(const Array& ops); // execute.C
   
         /// compiles the file, maybe forcing it's class @a name and @a base_class.          /// compiles the file, maybe forcing it's class @a name and @a base_class.
         VStateless_class *use_file(          VStateless_class *use_file(
                 const String& file_spec, bool fail_on_read_problem=true,                  const String& file_name, 
                   bool ignore_class_path=false, bool fail_on_read_problem=true,
                 const String *name=0,                   const String *name=0, 
                 VStateless_class *base_class=0); // core.C                  VStateless_class *base_class=0); // core.C
         /// compiles a @a source buffer          /// compiles a @a source buffer
Line 151  public: Line 154  public:
         VEnv env;          VEnv env;
         /// $form:elements          /// $form:elements
         VForm form;          VForm form;
           /// $math:constants
           VMath math;
         /// $request:elements          /// $request:elements
         VRequest request;          VRequest request;
         /// $response:elements          /// $response:elements
Line 177  public: Line 182  public:
   
 private: // core data  private: // core data
   
         // classes          /// classes
         Hash fclasses;          Hash fclasses;
   
         // already used files to avoid cyclic uses          /// already used files to avoid cyclic uses
         Hash used_files;          Hash used_files;
   
         // execution stack          /// execution stack
         Stack stack;          Stack stack;
   
           /**     endless execute(execute(... preventing counter 
                   @see ANTI_ENDLESS_EXECUTE_RECOURSION
           */
           uint anti_endless_execute_recoursion;
   
 private: // compile.C  private: // compile.C
   
         VStateless_class& real_compile(COMPILE_PARAMS);          VStateless_class& real_compile(COMPILE_PARAMS);
   
 private: // execute.C  private: // execute.C
   
         const String *execute_method(Value& aself, const Method& method,           const String *execute_method(Value& aself, 
                 bool return_cstr=true);                  const Method& method, bool return_cstr=true);
         const String *execute_method(Value& aself, const String& method_name,           const String *execute_virtual_method(Value& aself, 
                 bool return_cstr=true);                  const String& method_name, bool return_cstr=true);
           const String *execute_nonvirtual_method(VStateless_class& aclass, 
                   const String& method_name, bool return_cstr=true);
   
         Value *get_element();          Value *get_element();
   
Line 243  public: Line 255  public:
         }          }
 };  };
   
   /**
           @b method parameters passed in this array.
           contains handy typecast ad junction/not junction ensurers
   
   */
   class MethodParams : public Array {
   public:
           MethodParams(Pool& pool, const String& amethod_name) : Array(pool),
                   fmethod_name(amethod_name) {
           }
   
           /// handy typecast. I long for templates
           Value& get(int index) { 
                   return *static_cast<Value *>(Array::get(index)); 
           }
           /// handy is-value-a-junction ensurer
           Value& as_junction(int index, const char *msg) { 
                   return get_as(index, true, msg); 
           }
           /// handy value-is-not-a-junction ensurer
           Value& as_no_junction(int index, const char *msg) { 
                   return get_as(index, false, msg); 
           }
           /// handy expression auto-processing to double
           double as_double(int index, Request& r) { 
                   return get_processed(index, r).as_double(); 
           }
           /// handy expression auto-processing to int
           int as_int(int index, Request& r) { 
                   return get_processed(index, r).as_int(); 
           }
           /// handy string ensurer
           const String& as_string(int index, const char *msg) { 
                   return as_no_junction(index, msg).as_string(); 
           }
   
   private:
   
           /// handy value-is/not-a-junction ensurer
           Value& get_as(int index, bool as_junction, const char *msg) { 
                   Value& result=get(index);
                   if((result.get_junction()!=0) ^ as_junction)
                           THROW(0, 0,
                                   &fmethod_name,
                                   "%s (parameter #%d)", msg, 1+index);
                   return result;
           }
   
           Value& get_processed(int index, Request& r) {
                   return r.process(get(index),
                           0/*no name*/,
                           false/*don't intercept string*/);
           }
   
   private:
   
           const String& fmethod_name;
   
   };
   
 #endif  #endif

Removed from v.1.87  
changed lines
  Added in v.1.94.4.1


E-mail: