Annotation of parser3/src/classes/classes.h, revision 1.49
1.2 paf 1: /** @file
2: Parser: @b Methoded class decl.
3:
1.48 moko 4: Copyright (c) 2001-2026 Art. Lebedev Studio (https://www.artlebedev.com)
1.42 moko 5: Authors: Konstantin Morshnev <moko@design.ru>, Alexandr Petrosian <paf@design.ru>
1.2 paf 6: */
1.24 paf 7:
1.5 paf 8: #ifndef CLASSES_H
9: #define CLASSES_H
1.20 paf 10:
1.49 ! moko 11: #define IDENT_CLASSES_H "$Id: classes.h,v 1.48 2026/04/25 13:38:46 moko Exp $"
1.24 paf 12:
13: // include
1.2 paf 14:
15: #include "pa_vstateless_class.h"
16: #include "pa_array.h"
17:
18: /** Pure virtual base for configurable Methoded descendants
1.7 paf 19: @see Methoded_array
1.2 paf 20: */
1.24 paf 21: class Methoded: public VStateless_class {
1.38 moko 22: public: // Value
23:
24: override const char* type() const { return ftype; }
25:
1.2 paf 26: public: // Methoded
27:
1.6 paf 28: /** should Methoded_array::register_directly_used register this class in
29: Request::classes() or not.
30: if not - global variable with Methoded descendant
31: is used in VStateless_class parameter
32: */
1.33 moko 33: virtual bool used_directly() { return true; }
1.6 paf 34: /// use this method to read parameters from root "auto.p"; access r.main_class
1.13 parser 35: virtual void configure_admin(Request& ) {}
1.2 paf 36:
1.38 moko 37: private:
38:
39: const char* ftype;
40:
1.2 paf 41: public: // usage
42:
1.38 moko 43: Methoded(const char* atype): ftype(atype){}
1.2 paf 44:
45: void register_directly_used(Request& r);
46:
47: };
48:
1.8 parser 49: /// all Methoded registered here in autogenerated classes.C
1.24 paf 50: class Methoded_array: public Array<Methoded*> {
1.2 paf 51: public:
1.24 paf 52: Methoded_array();
1.2 paf 53:
54: public: // Methoded for_each-es
1.7 paf 55: /// @see Methoded::configure_admin
1.3 paf 56: void configure_admin(Request& r);
1.7 paf 57: /// @see Methoded::configure_user
1.3 paf 58: void configure_user(Request& r);
1.7 paf 59: /// @see Methoded::register_directly_used
1.2 paf 60: void register_directly_used(Request& r);
61: };
62:
1.24 paf 63: // globals
64:
65: Methoded_array& methoded_array();
66:
67: // defines
68:
1.36 moko 69: #define DECLARE_CLASS_VAR(name, self) \
1.46 moko 70: Methoded* name##_class=NULL; \
71: Methoded* name##_instance(){ if(!name##_class){ name##_class=self; } return name##_class; }
72:
73: #define ADD_CLASS_VAR(name) \
1.49 ! moko 74: extern Methoded* name##_instance(); \
1.46 moko 75: *this+=name##_instance();
1.2 paf 76:
77: #endif
E-mail: