Annotation of parser3/src/classes/classes.C, revision 1.34

1.24      misha       1: /** @file
                      2:        Parser: @b Methoded and Methoded_array classes.
                      3: 
1.33      moko        4:        Copyright (c) 2001-2024 Art. Lebedev Studio (http://www.artlebedev.com)
1.32      moko        5:        Authors: Konstantin Morshnev <moko@design.ru>, Alexandr Petrosian <paf@design.ru>
1.24      misha       6: */
                      7: 
                      8: #include "classes.h"
                      9: #include "pa_request.h"
                     10: 
1.34    ! moko       11: volatile const char * IDENT_CLASSES_C="$Id: classes.C,v 1.33 2024/11/04 03:53:25 moko Exp $" IDENT_CLASSES_H;
1.25      moko       12: 
1.24      misha      13: // Methoded
                     14: 
                     15: void Methoded::register_directly_used(Request& r) {
1.29      moko       16:        if(used_directly())
                     17:                r.put_class(this);
1.24      misha      18: 
                     19:        // prevent system classes from modification [calling set_method]
                     20:        // ^process[$string:CLASS]{@method} prohibited from now on...
                     21:        this->lock();
                     22: }
                     23: 
                     24: // Methoded_array
                     25: 
                     26: // global variable
                     27: 
                     28: Methoded_array& methoded_array() {
                     29:        static Methoded_array* result=0;
                     30:        if(!result)
                     31:                result=new Methoded_array;
                     32: 
                     33:        return *result;
                     34: }
                     35: 
                     36: // methods
                     37: 
                     38: Methoded_array::Methoded_array() {
1.34    ! moko       39:        ADD_CLASS_VAR(array)
        !            40:        ADD_CLASS_VAR(bool)
        !            41:        ADD_CLASS_VAR(curl)
        !            42:        ADD_CLASS_VAR(date)
        !            43:        ADD_CLASS_VAR(double)
        !            44:        ADD_CLASS_VAR(file)
        !            45:        ADD_CLASS_VAR(form)
        !            46:        ADD_CLASS_VAR(hash)
        !            47:        ADD_CLASS_VAR(hashfile)
        !            48:        ADD_CLASS_VAR(image)
        !            49:        ADD_CLASS_VAR(inet)
        !            50:        ADD_CLASS_VAR(int)
        !            51:        ADD_CLASS_VAR(json)
        !            52:        ADD_CLASS_VAR(mail)
        !            53:        ADD_CLASS_VAR(math)
        !            54:        ADD_CLASS_VAR(memcached)
        !            55:        ADD_CLASS_VAR(memory)
        !            56:        ADD_CLASS_VAR(reflection)
        !            57:        ADD_CLASS_VAR(regex)
        !            58:        ADD_CLASS_VAR(response)
        !            59:        ADD_CLASS_VAR(string)
        !            60:        ADD_CLASS_VAR(table)
        !            61:        ADD_CLASS_VAR(void)
        !            62:        ADD_CLASS_VAR(xnode) // should be before xdoc
        !            63:        ADD_CLASS_VAR(xdoc)
1.24      misha      64: }
                     65: 
                     66: static void configure_admin_one(Methoded_array::element_type methoded, Request *r) {
1.27      moko       67:        methoded->configure_admin(*r);
1.24      misha      68: }
                     69: void Methoded_array::configure_admin(Request& r) {
                     70:        for_each(configure_admin_one, &r);
                     71: }
                     72: 
                     73: static void configure_user_one(Methoded_array::element_type methoded, Request *r) {
1.27      moko       74:        methoded->configure_user(*r);
1.24      misha      75: }
                     76: void Methoded_array::configure_user(Request& r) {
                     77:        for_each(configure_user_one, &r);
                     78: }
                     79: 
                     80: static void register_one(Methoded_array::element_type methoded, Request *r) {
1.27      moko       81:        methoded->register_directly_used(*r);
1.24      misha      82: }
                     83: void Methoded_array::register_directly_used(Request& r) {
                     84:        for_each(register_one, &r);
                     85: }

E-mail: