Annotation of parser3/src/classes/root.C, revision 1.10

1.1       paf         1: /*
1.10    ! paf         2:        Parser
        !             3:        Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
        !             4:        Author: Alexander Petrosyan <paf@design.ru>
        !             5: 
        !             6:        $Id: pa_string.C,v 1.35 2001/03/10 12:12:51 paf Exp $
1.1       paf         7: */
                      8: 
                      9: #include "pa_request.h"
1.8       paf        10: #include "_root.h"
1.1       paf        11: 
1.6       paf        12: static void _if(Request& r, Array *params) {
1.2       paf        13:        bool condition=
                     14:                r.autocalc(
1.6       paf        15:                        *static_cast<Value *>(params->get(0)), 
1.2       paf        16:                        false/*don't make it string*/).get_bool();
1.6       paf        17:        if(condition) {
                     18:                Value& value=r.autocalc(*static_cast<Value *>(params->get(1)));
1.9       paf        19:                r.wcontext->write(value, String::Untaint_lang::PASS_APPENDED);
1.6       paf        20:        } else if(params->size()==3) {
                     21:                Value& value=r.autocalc(*static_cast<Value *>(params->get(2)));
1.9       paf        22:                r.wcontext->write(value, String::Untaint_lang::PASS_APPENDED);
1.6       paf        23:        }
1.1       paf        24: }
                     25: 
1.7       paf        26: void initialize_root_class(Pool& pool, VClass& vclass) {
1.1       paf        27:        String& IF_NAME=*new(pool) String(pool);
                     28:        IF_NAME.APPEND_CONST("if");
                     29: 
                     30:        Method& IF_METHOD=*new(pool) Method(pool,
                     31:                IF_NAME,
1.6       paf        32:                2, 3, // min,max numbered_params_count
1.1       paf        33:                0/*params_names*/, 0/*locals_names*/,
                     34:                0/*parser_code*/, _if
                     35:        );
                     36: 
1.7       paf        37:        vclass.add_method(IF_NAME, IF_METHOD);
1.1       paf        38: }

E-mail: