Annotation of parser3/src/types/pa_vvoid.h, revision 1.33
1.1 parser 1: /** @file
2: Parser: @b void parser class.
3:
1.29 misha 4: Copyright (c) 2001-2009 ArtLebedev Group (http://www.artlebedev.com)
1.8 paf 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.1 parser 6: */
7:
8: #ifndef PA_VVOID_H
9: #define PA_VVOID_H
1.10 paf 10:
1.33 ! moko 11: static const char * const IDENT_VVOID_H="$Date: 2010-09-16 23:33:52 $";
1.1 parser 12:
1.3 parser 13: #include "classes.h"
1.1 parser 14: #include "pa_vstateless_object.h"
15: #include "pa_globals.h"
16:
1.18 paf 17: extern Methoded* void_class;
1.1 parser 18:
19: /// value of type 'void'. ex: usually $sjfklsjfksjdfk has this type
1.18 paf 20: class VVoid: public VStateless_object {
1.1 parser 21: public: // Value
22:
1.18 paf 23: override const char* type() const { return "void"; }
24: override VStateless_class *get_class() { return void_class; }
1.1 parser 25:
1.27 paf 26: /// VVoid: true [the only one, that reports true]
27: override bool is_void() const { return true; }
1.33 ! moko 28: /// VVoid: with OPTIMIZE_SINGLE_STRING_WRITE it allows void to survive in [$void]
! 29: override bool is_string() const { return true; }
1.1 parser 30: /// VVoid: ""
1.27 paf 31: override const String* get_string() { return &void_string_value; }
1.1 parser 32: /// VVoid: false
1.18 paf 33: override bool as_bool() const { return false; }
1.2 parser 34: /// VVoid: false
1.18 paf 35: override bool is_defined() const { return false; }
1.1 parser 36: /// VVoid: 0
1.18 paf 37: override double as_double() const { return 0; }
1.1 parser 38: /// VVoid: 0
1.18 paf 39: override int as_int() const { return 0; }
1.1 parser 40: /// VVoid: this
1.19 paf 41: override Value& as_expr_result(bool /*return_string_as_is=false*/) { return *this; }
1.32 misha 42: /// VVoid: json-string ("null")
43: override const String* get_json_string(Json_options*) {
44: static const String singleton_json_null(String("null"));
45: return &singleton_json_null;
46: }
1.22 paf 47:
48: /// VVoid: empty vfile
1.30 misha 49: override VFile* as_vfile(String::Language lang, const Request_charsets *charsets);
1.1 parser 50:
51: /// VVoid: methods
1.31 misha 52: override Value* get_element(const String& aname) {
1.1 parser 53: // methods
1.31 misha 54: if(Value* result=VStateless_object::get_element(aname))
1.1 parser 55: return result;
56:
1.18 paf 57: return 0;
1.16 paf 58: }
59:
60: /// VVoid: bark
1.31 misha 61: override const VJunction* put_element(const String& aname, Value* avalue, bool areplace) {
62: return Value::put_element(aname, avalue, areplace);
1.1 parser 63: }
1.27 paf 64:
1.29 misha 65: inline static VVoid *get(){
66: static VVoid singleton;
67: return &singleton;
68: }
69:
1.27 paf 70: private:
71:
72: static const String void_string_value;
1.1 parser 73:
74: };
75:
76: #endif
E-mail: