Annotation of parser3/src/classes/string.C, revision 1.3

1.1       paf         1: /*
1.3     ! paf         2: $Id: string.C,v 1.2 2001/03/10 11:03:47 paf Exp $
1.1       paf         3: */
                      4: 
                      5: #include "pa_request.h"
                      6: #include "_string.h"
                      7: #include "pa_vdouble.h"
                      8: #include "pa_vint.h"
                      9: 
                     10: // global var
                     11: 
                     12: VClass *string_class;
                     13: 
                     14: // methods
                     15: 
                     16: static void _length(Request& r, Array *) {
                     17:        Pool& pool=r.pool();
                     18:        Value& value=*new(pool) VDouble(pool, r.self->as_string().size());
1.3     ! paf        19:        r.wcontext->write(value, String::Untaint_lang::NO /*always object, not string*/);
1.1       paf        20: }
                     21: 
                     22: static void _int(Request& r, Array *) {
                     23:        Pool& pool=r.pool();
                     24:        Value& value=*new(pool) VInt(pool, static_cast<int>(r.self->get_double()));
1.3     ! paf        25:        r.wcontext->write(value, String::Untaint_lang::NO /*always object, not string*/);
1.1       paf        26: }
                     27: 
                     28: static void _double(Request& r, Array *) {
                     29:        Pool& pool=r.pool();
                     30:        Value& value=*new(pool) VDouble(pool, r.self->get_double());
1.3     ! paf        31:        r.wcontext->write(value, String::Untaint_lang::NO /*always object, not string*/);
1.1       paf        32: }
                     33: 
1.2       paf        34: void initialize_string_class(Pool& pool, VClass& vclass) {
1.1       paf        35:        // ^string.length[]
                     36:        String& LENGTH_NAME=*new(pool) String(pool);
                     37:        LENGTH_NAME.APPEND_CONST("length");
                     38: 
                     39:        Method& LENGTH_METHOD=*new(pool) Method(pool,
                     40:                LENGTH_NAME,
                     41:                0, 0, // min,max numbered_params_count
                     42:                0/*params_names*/, 0/*locals_names*/,
                     43:                0/*parser_code*/, _length
                     44:        );
1.2       paf        45:        vclass.add_method(LENGTH_NAME, LENGTH_METHOD);
1.1       paf        46: 
                     47:        // ^string.int[]
                     48:        String& INT_NAME=*new(pool) String(pool);
                     49:        INT_NAME.APPEND_CONST("int");
                     50: 
                     51:        Method& INT_METHOD=*new(pool) Method(pool,
                     52:                INT_NAME,
                     53:                0, 0, // min,max numbered_params_count
                     54:                0/*params_names*/, 0/*locals_names*/,
                     55:                0/*parser_code*/, _int
                     56:        );
1.2       paf        57:        vclass.add_method(INT_NAME, INT_METHOD);
1.1       paf        58: 
                     59:        // ^string.double[]
                     60:        String& DOUBLE_NAME=*new(pool) String(pool);
                     61:        DOUBLE_NAME.APPEND_CONST("double");
                     62: 
                     63:        Method& DOUBLE_METHOD=*new(pool) Method(pool,
                     64:                DOUBLE_NAME,
                     65:                0, 0, // min,max numbered_params_count
                     66:                0/*params_names*/, 0/*locals_names*/,
                     67:                0/*parser_code*/, _double
                     68:        );
1.2       paf        69:        vclass.add_method(DOUBLE_NAME, DOUBLE_METHOD);
                     70: }      
1.1       paf        71: 

E-mail: