Annotation of parser3/src/types/pa_venv.h, revision 1.8
1.2 paf 1: /*
2: Parser
3: Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
4: Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
5:
1.8 ! paf 6: $Id: pa_venv.h,v 1.7 2001/03/13 20:02:11 paf Exp $
1.2 paf 7: */
8:
9: #ifndef PA_VENV_H
10: #define PA_VENV_H
11:
1.8 ! paf 12: #include "pa_common.h"
1.3 paf 13: #include "pa_vstateless_class.h"
14: #include "pa_string.h"
15: #include "_env.h"
1.2 paf 16:
1.3 paf 17: class VEnv : public VStateless_class {
1.2 paf 18: public: // Value
19:
20: // all: for error reporting after fail(), etc
21: const char *type() const { return "env"; }
1.7 paf 22:
23: // env: this
24: VStateless_class *get_class() { return this; }
1.2 paf 25:
26: // env: CLASS,BASE,method,field
27: Value *get_element(const String& aname) {
28: // $CLASS,$BASE,$method
1.3 paf 29: if(Value *result=VStateless_class::get_element(aname))
1.2 paf 30: return result;
31:
1.5 paf 32: // getenv
1.3 paf 33: String& string=*NEW String(pool());
1.5 paf 34: string.APPEND_TAINTED(getenv(aname.cstr()), 0, "environment", 0);
1.3 paf 35: return NEW VString(string);
1.2 paf 36: }
37:
38: public: // usage
39:
1.6 paf 40: VEnv(Pool& apool) : VStateless_class(apool, env_base_class) {
1.2 paf 41: }
42:
43: };
44:
45: #endif
E-mail: