Annotation of parser3/src/types/pa_vclass.h, revision 1.62
1.13 paf 1: /** @file
1.14 paf 2: Parser: @b class parser class decl.
1.13 paf 3:
1.59 moko 4: Copyright (c) 2001-2012 Art. Lebedev Studio (http://www.artlebedev.com)
1.24 paf 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.1 paf 6: */
7:
8: #ifndef PA_VCLASS_H
9: #define PA_VCLASS_H
1.26 paf 10:
1.62 ! moko 11: #define IDENT_PA_VCLASS_H "$Id: pa_vclass.h,v 1.61 2013/10/04 21:21:55 moko Exp $"
1.40 paf 12:
13: // includes
1.1 paf 14:
1.8 paf 15: #include "pa_vstateless_class.h"
1.1 paf 16: #include "pa_vjunction.h"
17:
1.13 paf 18: /** stores
1.55 misha 19: - static fields, getters & setters: VClass::ffields
1.13 paf 20: */
1.40 paf 21: class VClass: public VStateless_class {
1.1 paf 22: public: // Value
23:
1.55 misha 24: override const char* type() const { return name_cstr(); }
1.20 parser 25:
26: /// VClass: true
1.40 paf 27: override bool as_bool() const { return true; }
1.55 misha 28: override Value* as(const char* atype);
1.1 paf 29:
1.55 misha 30: override Value* get_element(Value& aself, const String& aname);
1.61 moko 31: override const VJunction* put_element(Value& self, const String& name, Value* value);
32: // for VObject::put_element
33: const VJunction* put_element_replace_only(Value& self, const String& name, Value* value);
34:
1.55 misha 35: override Value* create_new_value(Pool&);
1.8 paf 36:
1.60 misha 37: override HashStringValue *get_hash();
38: override HashStringValue* get_fields() { return get_hash(); };
1.58 misha 39:
1.55 misha 40: public:
41:
42: // VStateless_class
1.57 misha 43: override void real_set_method(const String& aname, Method* amethod);
1.55 misha 44: override HashStringProperty* get_properties(){ return &ffields; };
45: override void set_base(VStateless_class* abase);
1.47 paf 46:
1.62 ! moko 47: /// VClass default getter & setter support
! 48: override void enable_default_getter(){ state |= IS_GETTER_ACTIVE; }
! 49: override void enable_default_setter(){ if(has_default_setter()) state |= IS_SETTER_ACTIVE; }
! 50: override void disable_default_getter(){ state &= ~IS_GETTER_ACTIVE; }
! 51: override void disable_default_setter(){ state &= ~IS_SETTER_ACTIVE; }
! 52: override bool is_enabled_default_getter(){ return (state & IS_GETTER_ACTIVE) > 0; }
! 53: override bool is_enabled_default_setter(){ return (state & IS_SETTER_ACTIVE) > 0; }
! 54:
1.47 paf 55: private:
56:
1.62 ! moko 57: enum State {
! 58: IS_GETTER_ACTIVE = 0x01,
! 59: IS_SETTER_ACTIVE = 0x02
! 60: };
! 61:
! 62: int state; // default setter & getter state
! 63:
! 64: HashStringProperty ffields;
! 65:
1.55 misha 66: Property& get_property(const String& aname);
1.4 paf 67:
1.62 ! moko 68: public:
1.1 paf 69:
1.62 ! moko 70: VClass() : state(IS_GETTER_ACTIVE){}
1.25 paf 71:
1.1 paf 72: };
73:
74: #endif
E-mail: