Annotation of parser3/src/types/pa_wcontext.C, revision 1.6
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.6 ! paf 8: $Id: pa_wcontext.C,v 1.5 2001/04/05 13:19:47 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
24: &fvalue->name(),
25: "(%s) may not be overwritten with '%s' (%s), use constructor instead",
26: fvalue->type(), avalue.name().cstr(), avalue.type());
27: else
28: THROW(0,0, // must not construct twice
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: