Diff for /parser3/src/classes/op.C between versions 1.42 and 1.48

version 1.42, 2001/09/18 16:05:42 version 1.48, 2001/10/09 07:06:00
Line 2 Line 2
         Parser: parser @b operators.          Parser: parser @b operators.
   
         Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)          Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
   
         Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)          Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
   
           $Id$
 */  */
 static const char *RCSId="$Id$";   
   
 #include "classes.h"  #include "classes.h"
 #include "pa_config_includes.h"  #include "pa_config_includes.h"
Line 39  private: Line 39  private:
 // methods  // methods
   
 static void _if(Request& r, const String&, MethodParams *params) {  static void _if(Request& r, const String&, MethodParams *params) {
         Value& condition_code=params->get(0);          Value& condition_code=params->as_junction(0, "condition must be expression");
   
         bool condition=r.process(condition_code,           bool condition=r.process(condition_code, 
                 0/*no name*/,                  0/*no name*/,
Line 53  static void _if(Request& r, const String Line 53  static void _if(Request& r, const String
 static void _untaint(Request& r, const String& method_name, MethodParams *params) {  static void _untaint(Request& r, const String& method_name, MethodParams *params) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
   
         const String& lang_name=r.process(params->get(0)).as_string();          const String& lang_name=params->as_string(0, "lang must be string");
         String::Untaint_lang lang=static_cast<String::Untaint_lang>(          String::Untaint_lang lang=static_cast<String::Untaint_lang>(
                 untaint_lang_name2enum->get_int(lang_name));                  untaint_lang_name2enum->get_int(lang_name));
         if(!lang)          if(!lang)
Line 76  static void _taint(Request& r, const Str Line 76  static void _taint(Request& r, const Str
         if(params->size()==1)          if(params->size()==1)
                 lang=String::UL_TAINTED; // mark as simply 'tainted'. useful in table:set                  lang=String::UL_TAINTED; // mark as simply 'tainted'. useful in table:set
         else {          else {
                 const String& lang_name=                  const String& lang_name=params->as_string(0, "lang must be string");
                         r.process(params->get(0)).as_string();  
                 lang=static_cast<String::Untaint_lang>(                  lang=static_cast<String::Untaint_lang>(
                         untaint_lang_name2enum->get_int(lang_name));                          untaint_lang_name2enum->get_int(lang_name));
                 if(!lang)                  if(!lang)
Line 119  static void _process(Request& r, const S Line 118  static void _process(Request& r, const S
                                   
                 // evaluate source to process                  // evaluate source to process
                 const String& source=                  const String& source=
                         r.process(params->get(0)).as_string();                          r.process(params->as_no_junction(0, "body must be string")).as_string();
   
                 // process source code, append processed methods to 'self' class                  // process source code, append processed methods to 'self' class
                 // maybe-define new @main                  // maybe-define new @main
Line 171  static void _use(Request& r, const Strin Line 170  static void _use(Request& r, const Strin
   
 static void _for(Request& r, const String& method_name, MethodParams *params) {  static void _for(Request& r, const String& method_name, MethodParams *params) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
         const String& var_name=r.process(params->get(0)).as_string();          const String& var_name=params->as_string(0, "var name must be string");
         int from=r.process(params->get(1)).as_int();          int from=params->as_int(1, "from must be int", r);
         int to=r.process(params->get(2)).as_int();          int to=params->as_int(2, "to must be int", r);
         Value& body_code=params->as_junction(3, "body must be code");          Value& body_code=params->as_junction(3, "body must be code");
         Value *delim_code=params->size()==3+1+1?&params->get(3+1):0;          Value *delim_code=params->size()==3+1+1?&params->as_junction(3+1, "delim must be code"):0;
   
         bool need_delim=false;          bool need_delim=false;
         VInt *vint=new(pool) VInt(pool, 0);          VInt *vint=new(pool) VInt(pool, 0);
Line 375  Methoded *MOP_create(Pool& pool) { Line 374  Methoded *MOP_create(Pool& pool) {
         return new(pool) MOP(pool);          return new(pool) MOP(pool);
 }  }
   
   
 void MOP::configure_user(Request& r) {  void MOP::configure_user(Request& r) {
         Pool& pool=r.pool();          Pool& pool=r.pool();
   

Removed from v.1.42  
changed lines
  Added in v.1.48


E-mail: