|
|
| version 1.20, 2003/11/20 16:34:23 | version 1.41, 2026/10/16 13:55:16 |
|---|---|
| Line 1 | Line 1 |
| /** @file | /** @file |
| Parser: @b Methoded and Methoded_array classes. | Parser: @b Methoded and Methoded_array classes. |
| Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com) | Copyright (c) 2001-2026 Art. Lebedev Studio (https://www.artlebedev.com) |
| Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) | Authors: Konstantin Morshnev <moko@design.ru>, Alexandr Petrosian <paf@design.ru> |
| */ | */ |
| static const char * const IDENT_CLASSES_C="$Date$"; | |
| #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 add_method] | // prevent system classes from modification [calling set_method] |
| // ^process[$string:CLASS]{@method} prohibited from now on... | // ^process[$string:CLASS]{@method} prohibited from now on... |
| this->lock(); | this->lock(); |
| } | } |
| Line 37 Methoded_array& methoded_array() { | Line 36 Methoded_array& methoded_array() { |
| // methods | // methods |
| Methoded_array::Methoded_array() { | Methoded_array::Methoded_array() { |
| # include "classes.inc" | ADD_CLASS_VAR(array) |
| ADD_CLASS_VAR(bool) | |
| ADD_CLASS_VAR(curl) | |
| ADD_CLASS_VAR(date) | |
| ADD_CLASS_VAR(double) | |
| ADD_CLASS_VAR(file) | |
| ADD_CLASS_VAR(form) | |
| ADD_CLASS_VAR(hash) | |
| ADD_CLASS_VAR(hashfile) | |
| ADD_CLASS_VAR(image) | |
| ADD_CLASS_VAR(inet) | |
| ADD_CLASS_VAR(int) | |
| ADD_CLASS_VAR(json) | |
| ADD_CLASS_VAR(mail) | |
| ADD_CLASS_VAR(math) | |
| ADD_CLASS_VAR(memcached) | |
| ADD_CLASS_VAR(amqp) | |
| ADD_CLASS_VAR(redis) | |
| ADD_CLASS_VAR(memory) | |
| ADD_CLASS_VAR(reflection) | |
| ADD_CLASS_VAR(regex) | |
| ADD_CLASS_VAR(response) | |
| ADD_CLASS_VAR(websocket) | |
| ADD_CLASS_VAR(string) | |
| ADD_CLASS_VAR(table) | |
| ADD_CLASS_VAR(void) // should be after string for set_base | |
| #ifdef XML | |
| ADD_CLASS_VAR(xnode) | |
| ADD_CLASS_VAR(xdoc) // should be after xnode for set_base | |
| #endif | |
| } | } |
| static void configure_admin_one(Methoded_array::element_type methoded, Request *r) { | static void configure_admin_one(Methoded_array::element_type methoded, Request *r) { |
| if(methoded) | methoded->configure_admin(*r); |
| 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(Methoded_array::element_type methoded, Request *r) { | |
| if(methoded) | |
| methoded->configure_user(*r); | |
| } | |
| void Methoded_array::configure_user(Request& r) { | |
| for_each(configure_user_one, &r); | |
| } | |
| static void register_one(Methoded_array::element_type methoded, Request *r) { | static void register_one(Methoded_array::element_type methoded, Request *r) { |
| if(methoded) | methoded->register_directly_used(*r); |
| 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); |