Annotation of parser3/src/types/pa_venv.C, revision 1.28

1.2       paf         1: /** @file
                      2:        Parser: @b env class.
                      3: 
1.26      moko        4:        Copyright (c) 2001-2026 Art. Lebedev Studio (https://www.artlebedev.com)
1.23      moko        5:        Authors: Konstantin Morshnev <moko@design.ru>, Alexandr Petrosian <paf@design.ru>
1.2       paf         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.28    ! moko       13: volatile const char * IDENT_PA_PA_VENV_C="$Id: pa_venv.C,v 1.27 2026/10/07 19:37:27 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.27      moko       18: static const String parser_version(PARSER_VERSION_WITH_FEATURES);
1.2       paf        19: 
1.11      misha      20: Value* VEnv::get_element(const String& aname) {
1.28    ! moko       21:        MAYBE_GET_SPECIAL(VStateless_class::get_element(aname));
1.5       misha      22: 
1.2       paf        23:        // $env:PARSER_VERSION
1.4       misha      24:        if(aname==PARSER_VERSION_ELEMENT_NAME)
1.2       paf        25:                return new VString(parser_version);
                     26: 
1.15      moko       27:        // $env:fields
1.13      misha      28:        if(aname==ENV_FIELDS_ELEMENT_NAME){
                     29:                HashStringValue *result=new HashStringValue();
1.15      moko       30:                for(SAPI::Env::Iterator i(finfo); i; i.next() )
                     31:                        result->put(
                     32:                                i.key(),
1.25      moko       33:                                new VString(i.value())
1.15      moko       34:                        );
1.13      misha      35:                return new VHash(*result);
                     36:        }
                     37: 
1.6       misha      38:        // $env:field
1.20      moko       39:        if(const char* value=SAPI::Env::get(finfo, aname.cstr()))
1.25      moko       40:                return new VString(value);
1.6       misha      41:        
                     42:        return 0;
1.3       paf        43: }
1.20      moko       44: 
                     45: const VJunction* VEnv::put_element(const String& aname, Value* avalue) {
                     46:        if(SAPI::Env::set(finfo, aname.cstr(), avalue->as_string().cstr()))
1.21      moko       47:                return 0;
1.20      moko       48: 
                     49:        return Value::put_element(aname, avalue);
                     50: }
                     51: 

E-mail: