|
|
| version 1.5, 2001/04/28 15:22:38 | version 1.23.2.9.2.1, 2003/03/18 15:14:13 |
|---|---|
| Line 1 | Line 1 |
| /** @file | /** @file |
| Parser: @b Methoded class decl. | Parser: @b Methoded class decl. |
| Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) | Copyright (c) 2001-2003 ArtLebedev Group (http://www.artlebedev.com) |
| Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru) | |
| Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf) | |
| $Id$ | |
| */ | */ |
| #ifndef CLASSES_H | #ifndef CLASSES_H |
| #define CLASSES_H | #define CLASSES_H |
| static const char* IDENT_CLASSES_H="$Date$"; | |
| // include | |
| #include "pa_vstateless_class.h" | #include "pa_vstateless_class.h" |
| #include "pa_array.h" | #include "pa_array.h" |
| /** Pure virtual base for configurable Methoded descendants | /** Pure virtual base for configurable Methoded descendants |
| @see Methoded_array | |
| */ | */ |
| class Methoded : public VStateless_class { | class Methoded: public VStateless_class { |
| public: // Value | public: // Value |
| /// all: for error reporting after fail(), etc | override bool put_element(const String& /*name*/, Value * /*value*/, bool /*replace*/) { |
| const char *type() const { return "m_base"; } | return false; // fewer useless Exceptions |
| } | |
| public: // Methoded | public: // Methoded |
| /** should Methoded_array::register_directly_used register this class in | |
| Request::classes() or not. | |
| if not - global variable with Methoded descendant | |
| is used in VStateless_class parameter | |
| */ | |
| virtual bool used_directly() =0; | virtual bool used_directly() =0; |
| virtual void configure_admin(Request& r) {} | /// use this method to read parameters from root "auto.p"; access r.main_class |
| virtual void configure_user(Request& r) {} | virtual void configure_admin(Request& ) {} |
| /// use this method to read parameters from 'MAIN' class; access r.main_class | |
| virtual void configure_user(Request& ) {} | |
| /// use it to construct static variables. check some static so that would be only ONCE! | |
| virtual void construct_statics() {} | |
| public: // usage | public: // usage |
| Methoded(Pool& pool) : VStateless_class(pool) { | Methoded(const char* aname, VStateless_class* abase=0): |
| VStateless_class(String* (new String(aname)), abase) { | |
| } | } |
| void register_directly_used(Request& r); | void register_directly_used(Request& r); |
| }; | }; |
| DECLARE_OBJECT_PTR(Methoded); | |
| /// all Methoded registered here in autogenerated classes.C | |
| class Methoded_array : public Array { | class Methoded_array: public Array<MethodedPtr> { |
| public: | public: |
| Methoded_array(Pool& pool); | Methoded_array(); |
| public: // Methoded for_each-es | public: // Methoded for_each-es |
| /// @see Methoded::configure_admin | |
| void configure_admin(Request& r); | void configure_admin(Request& r); |
| /// @see Methoded::configure_user | |
| void configure_user(Request& r); | void configure_user(Request& r); |
| /// @see Methoded::register_directly_used | |
| void register_directly_used(Request& r); | void register_directly_used(Request& r); |
| }; | }; |
| DECLARE_OBJECT_PTR(Methoded_array); | |
| // globals | |
| Methoded_array& methoded_array(); | |
| // defines | |
| extern Methoded_array *methoded_array; | #define DECLARE_CLASS_VAR(name, self, base) \ |
| void init_methoded_array(Pool& pool); | MethodedPtr name##_class(self); \ |
| MethodedPtr name##_base_class(base) | |
| #endif | #endif |