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: