Annotation of parser3/src/types/pa_vstateless_object.h, revision 1.46
1.5 paf 1: /** @file
1.8 paf 2: Parser: @b stateless_object class decl.
1.5 paf 3:
1.45 moko 4: Copyright (c) 2001-2023 Art. Lebedev Studio (http://www.artlebedev.com)
5: Authors: Konstantin Morshnev <moko@design.ru>, Alexandr Petrosian <paf@design.ru>
1.1 paf 6: */
7:
8: #ifndef PA_VSTATELESS_OBJECT_H
9: #define PA_VSTATELESS_OBJECT_H
1.18 paf 10:
1.46 ! moko 11: #define IDENT_PA_VSTATELESS_OBJECT_H "$Id: pa_vstateless_object.h,v 1.45 2023/09/26 20:49:13 moko Exp $"
1.29 paf 12:
13: // include
1.1 paf 14:
15: #include "pa_vjunction.h"
1.13 paf 16: #include "pa_vstateless_class.h"
1.1 paf 17:
1.6 paf 18: /** the object of some class.
1.5 paf 19:
1.23 paf 20: "of some class" means "with some set of methods and CLASS_fields".
1.5 paf 21: */
1.29 paf 22: class VStateless_object: public Value {
1.1 paf 23: public: // Value
24:
1.27 paf 25: /// VStateless_object: class_transparent
1.39 misha 26: override Value* get_element(const String& aname) {
27: return get_class()->get_element(*this, aname);
1.27 paf 28: }
29:
1.46 ! moko 30: #ifdef FEATURE_GET_ELEMENT4CALL
! 31: /// same as get_element, but with proper error reporting
! 32: override Value* get_element4call(const String& aname) {
! 33: if(Value* result=get_class()->get_element(*this, aname))
! 34: return result;
! 35: return bark("%s method not found", &aname);
! 36: }
! 37: #endif
! 38:
1.27 paf 39: /// VStateless_object: class_transparent
1.41 moko 40: override const VJunction* put_element(const String& aname, Value* avalue) {
41: return get_class()->put_element(*this, aname, avalue);
1.1 paf 42: }
43:
1.37 misha 44: /// VStateless_object: class_transparent
45: override Value* get_default_getter(Value& aself, const String& aname) {
46: return get_class()->get_default_getter(aself, aname);
47: }
48:
1.38 misha 49: /// VStateless_object: class_transparent
50: override Value* get_scalar(Value& aself){
51: return get_class()->get_scalar(aself);
52: }
53:
1.1 paf 54: };
55:
56: #endif
E-mail: