Annotation of parser3/src/types/pa_vresponse.h, revision 1.18

1.3       paf         1: /** @file
                      2:        Parser: response class.
                      3: 
1.1       paf         4:        Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
1.17      paf         5:        Author: Alexander Petrosyan <paf@design.ru> (http://paf.design.ru)
1.1       paf         6: 
1.18    ! paf         7:        $Id: pa_vresponse.h,v 1.17 2001/11/05 11:46:34 paf Exp $
1.1       paf         8: */
                      9: 
                     10: #ifndef PA_VRESPONSE_H
                     11: #define PA_VRESPONSE_H
                     12: 
1.3       paf        13: #include "pa_vstateless_object.h"
1.1       paf        14: #include "pa_string.h"
1.9       paf        15: 
1.11      parser     16: // externals
                     17: 
1.9       paf        18: extern Methoded *response_class;
1.1       paf        19: 
1.11      parser     20: // forwards
                     21: 
1.1       paf        22: class Response;
                     23: 
1.5       paf        24: /// value of type 'response'
1.3       paf        25: class VResponse : public VStateless_object {
1.1       paf        26: public: // Value
                     27:        
                     28:        const char *type() const { return "response"; }
1.2       paf        29: 
1.5       paf        30:        /// Response: ffields
1.16      parser     31:        Hash *get_hash(const String * /*source*/) { return &ffields; }
1.1       paf        32: 
1.8       paf        33:        /// Response: method,fields
1.1       paf        34:        Value *get_element(const String& name) {
1.8       paf        35:                // $method
1.3       paf        36:                if(Value *result=VStateless_object::get_element(name))
1.1       paf        37:                        return result;
                     38:                
                     39:                // $field
                     40:                return static_cast<Value *>(ffields.get(name));
                     41:        }
                     42: 
1.5       paf        43:        /// Response: (attribute)=value
1.1       paf        44:        void put_element(const String& name, Value *value) { 
                     45:                ffields.put(name, value);
                     46:        }
1.4       paf        47: 
                     48: protected: // VAliased
                     49: 
1.6       paf        50:        /// disable .CLASS element. @see VAliased::get_element
1.7       paf        51:        bool hide_class() { return true; }
1.1       paf        52: 
                     53: public: // usage
                     54: 
1.3       paf        55:        VResponse(Pool& apool) : VStateless_object(apool, *response_class),
1.1       paf        56:                ffields(apool) {
                     57:        }
1.11      parser     58: public:        
1.12      parser     59: 
1.1       paf        60:        Hash& fields() { return ffields; }
                     61: 
                     62: private:
                     63: 
                     64:        Hash ffields;
                     65: 
                     66: };
                     67: 
                     68: #endif

E-mail: