Annotation of parser3/src/types/pa_venv.C, revision 1.17
1.2 paf 1: /** @file
2: Parser: @b env class.
3:
1.16 moko 4: Copyright (c) 2001-2015 Art. Lebedev Studio (http://www.artlebedev.com)
1.2 paf 5: Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
6: */
7:
8: #include "pa_venv.h"
9: #include "pa_vstring.h"
1.13 misha 10: #include "pa_vhash.h"
1.2 paf 11: #include "pa_version.h"
12:
1.17 ! moko 13: volatile const char * IDENT_PA_PA_VENV_C="$Id: pa_venv.C,v 1.16 2015/10/26 01:22:01 moko Exp $" IDENT_PA_VENV_H;
1.12 moko 14:
1.4 misha 15: #define PARSER_VERSION_ELEMENT_NAME "PARSER_VERSION"
1.13 misha 16: #define ENV_FIELDS_ELEMENT_NAME "fields"
1.4 misha 17:
1.2 paf 18: static const String parser_version(PARSER_VERSION);
19:
1.11 misha 20: Value* VEnv::get_element(const String& aname) {
1.17 ! moko 21: // $env:CLASS, CLASS_NAME or method
! 22: if(Value* result=VStateless_class::get_element(aname))
! 23: return result;
1.5 misha 24:
1.2 paf 25: // $env:PARSER_VERSION
1.4 misha 26: if(aname==PARSER_VERSION_ELEMENT_NAME)
1.2 paf 27: return new VString(parser_version);
28:
1.15 moko 29: // $env:fields
1.13 misha 30: if(aname==ENV_FIELDS_ELEMENT_NAME){
31: HashStringValue *result=new HashStringValue();
1.15 moko 32: for(SAPI::Env::Iterator i(finfo); i; i.next() )
33: result->put(
34: i.key(),
35: new VString(*new String(i.value(), String::L_TAINTED))
36: );
1.13 misha 37: return new VHash(*result);
38: }
39:
1.6 misha 40: // $env:field
1.15 moko 41: if(const char* value=SAPI::Env::get(finfo, aname.cstr())){
42: return new VString(*new String(value, String::L_TAINTED));
1.7 misha 43: }
1.6 misha 44:
45: return 0;
1.3 paf 46: }
E-mail: