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

1.6       paf         1: /**    @file
                      2:        Parser: write context class.
                      3: 
1.14      paf         4:        Copyright (c) 2001, 2002 ArtLebedev Group (http://www.artlebedev.com)
1.15      paf         5:        Author: Alexandr Petrosian <paf@design.ru> (http://paf.design.ru)
1.6       paf         6: 
1.16    ! paf         7:        $Id: pa_wcontext.C,v 1.15 2002/02/08 08:30:21 paf Exp $
1.1       paf         8: */
                      9: 
                     10: #include "pa_wcontext.h"
                     11: #include "pa_exception.h"
1.3       paf        12: #include "pa_request.h"
1.1       paf        13: 
                     14: // appends a fstring to result
1.13      paf        15: void WContext::write(const String& astring, uchar lang) {
1.1       paf        16:        fstring.append(astring, lang);
                     17: }
                     18: 
1.4       paf        19: void WContext::write(Value& avalue) {
                     20:        if(fvalue) { // already have value?
1.16    ! paf        21:                // must not construct twice
1.4       paf        22:                if(avalue.name()==UNNAMED_NAME)
1.16    ! paf        23:                        throw Exception(0,0,  
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
1.16    ! paf        28:                        throw Exception(0,0,
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
1.13      paf        38: void WContext::write(Value& value, uchar lang) {
1.10      parser     39:        if(const String *fstring=value.get_string())
1.1       paf        40:                write(*fstring, lang);
                     41:        else
1.10      parser     42:                write(value);
1.1       paf        43: }

E-mail: