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