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

1.24      misha       1: /** @file
                      2:        Parser: @b Methoded and Methoded_array classes.
                      3: 
1.39    ! moko        4:        Copyright (c) 2001-2026 Art. Lebedev Studio (https://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.39    ! moko       11: volatile const char * IDENT_CLASSES_C="$Id: classes.C,v 1.38 2026/03/01 00:51:19 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)
1.37      moko       55:        ADD_CLASS_VAR(amqp)
1.34      moko       56:        ADD_CLASS_VAR(memory)
                     57:        ADD_CLASS_VAR(reflection)
                     58:        ADD_CLASS_VAR(regex)
                     59:        ADD_CLASS_VAR(response)
                     60:        ADD_CLASS_VAR(string)
                     61:        ADD_CLASS_VAR(table)
1.36      moko       62:        ADD_CLASS_VAR(void) // should be after string for set_base
1.35      moko       63: #ifdef XML
1.36      moko       64:        ADD_CLASS_VAR(xnode)
                     65:        ADD_CLASS_VAR(xdoc) // should be after xnode for set_base
1.35      moko       66: #endif
1.24      misha      67: }
                     68: 
                     69: static void configure_admin_one(Methoded_array::element_type methoded, Request *r) {
1.27      moko       70:        methoded->configure_admin(*r);
1.24      misha      71: }
                     72: void Methoded_array::configure_admin(Request& r) {
                     73:        for_each(configure_admin_one, &r);
                     74: }
                     75: 
                     76: static void register_one(Methoded_array::element_type methoded, Request *r) {
1.27      moko       77:        methoded->register_directly_used(*r);
1.24      misha      78: }
                     79: void Methoded_array::register_directly_used(Request& r) {
                     80:        for_each(register_one, &r);
                     81: }

E-mail: