Annotation of parser3/src/types/pa_wcontext.C, revision 1.7

1.6       paf         1: /**    @file
                      2:        Parser: write context class.
                      3: 
1.1       paf         4:        Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com)
1.6       paf         5: 
1.2       paf         6:        Author: Alexander Petrosyan <paf@design.ru> (http://design.ru/paf)
1.1       paf         7: 
1.7     ! parser      8:        $Id: pa_wcontext.C,v 1.6 2001/04/26 15:01:52 paf Exp $
1.1       paf         9: */
                     10: 
                     11: #include "pa_wcontext.h"
                     12: #include "pa_exception.h"
1.3       paf        13: #include "pa_request.h"
1.1       paf        14: 
                     15: // appends a fstring to result
                     16: void WContext::write(const String& astring, String::Untaint_lang lang) {
                     17:        fstring.append(astring, lang);
                     18: }
                     19: 
1.4       paf        20: void WContext::write(Value& avalue) {
                     21:        if(fvalue) { // already have value?
                     22:                if(avalue.name()==UNNAMED_NAME)
                     23:                        THROW(0,0,  // must not construct twice
1.7     ! parser     24:                                &fvalue->name(),
        !            25:                                "(%s) may not be overwritten with '%s' (%s), use constructor instead",
        !            26:                                fvalue->type(), avalue.name().cstr(), avalue.type());
1.4       paf        27:                else
                     28:                        THROW(0,0,  // must not construct twice
1.7     ! parser     29:                                &avalue.name(),
        !            30:                                "(%s) illegal assignment attempt to '%s' (%s), use constructor instead",
        !            31:                                avalue.type(), fvalue->name().cstr(), fvalue->type());
1.5       paf        32:        } else 
1.4       paf        33:                fvalue=&avalue;
                     34: }
                     35: 
1.1       paf        36: // if value is VString writes fstring,
                     37: // else writes Value; raises an error if already
                     38: void WContext::write(Value& avalue, String::Untaint_lang lang) {
                     39:        const String *fstring=avalue.get_string();
                     40:        if(fstring)
                     41:                write(*fstring, lang);
                     42:        else
1.4       paf        43:                write(avalue);
1.1       paf        44: }

E-mail: