Annotation of parser3/src/types/pa_venv.h, revision 1.6

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.6     ! paf         6:        $Id: pa_venv.h,v 1.5 2001/03/13 14:11:08 paf Exp $
1.2       paf         7: */
                      8: 
                      9: #ifndef PA_VENV_H
                     10: #define PA_VENV_H
                     11: 
1.3       paf        12: #include "pa_vstateless_class.h"
                     13: #include "pa_string.h"
                     14: #include "_env.h"
1.5       paf        15: #include "pa_common.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"; }
                     22: 
                     23:        // env: CLASS,BASE,method,field
                     24:        Value *get_element(const String& aname) {
                     25:                // $CLASS,$BASE,$method
1.3       paf        26:                if(Value *result=VStateless_class::get_element(aname))
1.2       paf        27:                        return result;
                     28: 
1.5       paf        29:                // getenv
1.3       paf        30:                String& string=*NEW String(pool());
1.5       paf        31:                string.APPEND_TAINTED(getenv(aname.cstr()), 0, "environment", 0);
1.3       paf        32:                return NEW VString(string);
1.2       paf        33:        }
                     34: 
                     35: public: // usage
                     36: 
1.6     ! paf        37:        VEnv(Pool& apool) : VStateless_class(apool, env_base_class) {
1.2       paf        38:        }
                     39: 
                     40: };
                     41: 
                     42: #endif

E-mail: