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

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.35    ! moko       11: volatile const char * IDENT_CLASSES_C="$Id: classes.C,v 1.34 2024/11/11 05:28:00 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)
1.35    ! moko       62: #ifdef XML
1.34      moko       63:        ADD_CLASS_VAR(xnode) // should be before xdoc
                     64:        ADD_CLASS_VAR(xdoc)
1.35    ! moko       65: #endif
1.24      misha      66: }
                     67: 
                     68: static void configure_admin_one(Methoded_array::element_type methoded, Request *r) {
1.27      moko       69:        methoded->configure_admin(*r);
1.24      misha      70: }
                     71: void Methoded_array::configure_admin(Request& r) {
                     72:        for_each(configure_admin_one, &r);
                     73: }
                     74: 
                     75: static void configure_user_one(Methoded_array::element_type methoded, Request *r) {
1.27      moko       76:        methoded->configure_user(*r);
1.24      misha      77: }
                     78: void Methoded_array::configure_user(Request& r) {
                     79:        for_each(configure_user_one, &r);
                     80: }
                     81: 
                     82: static void register_one(Methoded_array::element_type methoded, Request *r) {
1.27      moko       83:        methoded->register_directly_used(*r);
1.24      misha      84: }
                     85: void Methoded_array::register_directly_used(Request& r) {
                     86:        for_each(register_one, &r);
                     87: }

E-mail: