Annotation of parser3/src/classes/classes.C, revision 1.23
1.23 ! misha 1: /** @file
! 2: Parser: @b Methoded and Methoded_array classes.
! 3:
! 4: Copyright (c) 2001-2005 ArtLebedev Group (http://www.artlebedev.com)
! 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
! 6: */
! 7:
! 8: static const char * const IDENT_CLASSES_C="$Date: 2005/08/09 08:14:47 $";
! 9:
! 10: #include "classes.h"
! 11: #include "pa_request.h"
! 12:
! 13: // Methoded
! 14:
! 15: void Methoded::register_directly_used(Request& r) {
! 16: if(used_directly()) {
! 17: r.classes().put(name(), this);
! 18: }
! 19:
! 20: // prevent system classes from modification [calling set_method]
! 21: // ^process[$string:CLASS]{@method} prohibited from now on...
! 22: this->lock();
! 23: }
! 24:
! 25: // Methoded_array
! 26:
! 27: // global variable
! 28:
! 29: Methoded_array& methoded_array() {
! 30: static Methoded_array* result=0;
! 31: if(!result)
! 32: result=new Methoded_array;
! 33:
! 34: return *result;
! 35: }
! 36:
! 37: // methods
! 38:
! 39: Methoded_array::Methoded_array() {
! 40: # include "classes.inc"
! 41: }
! 42:
! 43: static void configure_admin_one(Methoded_array::element_type methoded, Request *r) {
! 44: if(methoded)
! 45: methoded->configure_admin(*r);
! 46: }
! 47: void Methoded_array::configure_admin(Request& r) {
! 48: for_each(configure_admin_one, &r);
! 49: }
! 50:
! 51: static void configure_user_one(Methoded_array::element_type methoded, Request *r) {
! 52: if(methoded)
! 53: methoded->configure_user(*r);
! 54: }
! 55: void Methoded_array::configure_user(Request& r) {
! 56: for_each(configure_user_one, &r);
! 57: }
! 58:
! 59: static void register_one(Methoded_array::element_type methoded, Request *r) {
! 60: if(methoded)
! 61: methoded->register_directly_used(*r);
! 62: }
! 63: void Methoded_array::register_directly_used(Request& r) {
! 64: for_each(register_one, &r);
! 65: }
E-mail: