Diff for /parser3/src/classes/classes.C between versions 1.10 and 1.32

version 1.10, 2001/09/26 13:39:57 version 1.32, 2023/09/26 20:49:05
Line 1 Line 1
 /** @file  /** @file
         Parser: @b Methoded and Methoded_array classes.          Parser: @b Methoded and Methoded_array classes.
   
         Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)          Copyright (c) 2001-2023 Art. Lebedev Studio (http://www.artlebedev.com)
         Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)          Authors: Konstantin Morshnev <moko@design.ru>, Alexandr Petrosian <paf@design.ru>
   
         $Id$  
 */  */
   
 #include "classes.h"  #include "classes.h"
 #include "pa_request.h"  #include "pa_request.h"
   
   volatile const char * IDENT_CLASSES_C="$Id$" IDENT_CLASSES_H;
   
 // Methoded  // Methoded
   
 void Methoded::register_directly_used(Request& r) {  void Methoded::register_directly_used(Request& r) {
         if(used_directly())          if(used_directly())
                 r.classes().put(name(), this);                  r.put_class(this);
   
           // prevent system classes from modification [calling set_method]
           // ^process[$string:CLASS]{@method} prohibited from now on...
           this->lock();
 }  }
   
 // Methoded_array  // Methoded_array
   
 // global variable  // global variable
   
 Methoded_array *methoded_array;  Methoded_array& methoded_array() {
           static Methoded_array* result=0;
           if(!result)
                   result=new Methoded_array;
   
           return *result;
   }
   
 // methods  // methods
   
 Methoded_array::Methoded_array(Pool& apool) : Array(apool) {  Methoded_array::Methoded_array() {
 #       include "classes.inc"  #       include "classes.inc"
 }  }
   
 static void configure_admin_one(Array::Item *value, void *info) {  static void configure_admin_one(Methoded_array::element_type methoded, Request *r) {
         Request& r=*static_cast<Request *>(info);          methoded->configure_admin(*r);
         if(Methoded *methoded=static_cast<Methoded *>(value))  
                 methoded->configure_admin(r);  
 }  }
   
 void Methoded_array::configure_admin(Request& r) {  void Methoded_array::configure_admin(Request& r) {
         for_each(configure_admin_one, &r);          for_each(configure_admin_one, &r);
 }  }
   
 static void configure_user_one(Array::Item *value, void *info) {  static void configure_user_one(Methoded_array::element_type methoded, Request *r) {
         Request& r=*static_cast<Request *>(info);          methoded->configure_user(*r);
         if(Methoded *methoded=static_cast<Methoded *>(value))  
                 methoded->configure_user(r);  
 }  }
   
 void Methoded_array::configure_user(Request& r) {  void Methoded_array::configure_user(Request& r) {
         for_each(configure_user_one, &r);          for_each(configure_user_one, &r);
 }  }
   
 static void register_one(Array::Item *value, void *info) {  static void register_one(Methoded_array::element_type methoded, Request *r) {
         Request& r=*static_cast<Request *>(info);          methoded->register_directly_used(*r);
         if(Methoded *methoded=static_cast<Methoded *>(value))  
                 methoded->register_directly_used(r);  
 }  }
   
 void Methoded_array::register_directly_used(Request& r) {  void Methoded_array::register_directly_used(Request& r) {
         for_each(register_one, &r);          for_each(register_one, &r);
 }  }
   
 // creator  
   
 void init_methoded_array(Pool& pool) {  
         methoded_array=new(pool) Methoded_array(pool);  
 }  

Removed from v.1.10  
changed lines
  Added in v.1.32


E-mail: