78 |
78 |
79 // protect this from public use: |
79 // protect this from public use: |
80 outputStream* out() { return _out; } |
80 outputStream* out() { return _out; } |
81 |
81 |
82 // helpers for writing XML elements |
82 // helpers for writing XML elements |
83 void va_tag(bool push, const char* format, va_list ap); |
83 void va_tag(bool push, const char* format, va_list ap) ATTRIBUTE_PRINTF(3, 0); |
84 virtual void see_tag(const char* tag, bool push) NOT_DEBUG({}); |
84 virtual void see_tag(const char* tag, bool push) NOT_DEBUG({}); |
85 virtual void pop_tag(const char* tag) NOT_DEBUG({}); |
85 virtual void pop_tag(const char* tag) NOT_DEBUG({}); |
86 |
86 |
87 #ifdef ASSERT |
87 #ifdef ASSERT |
88 // in debug mode, we verify matching of opening and closing tags |
88 // in debug mode, we verify matching of opening and closing tags |
107 virtual void write(const char* s, size_t len); |
107 virtual void write(const char* s, size_t len); |
108 void write_text(const char* s, size_t len); // used by xmlTextStream |
108 void write_text(const char* s, size_t len); // used by xmlTextStream |
109 int unflushed_count() { return (int)(out()->count() - _last_flush); } |
109 int unflushed_count() { return (int)(out()->count() - _last_flush); } |
110 |
110 |
111 // writing complete XML elements |
111 // writing complete XML elements |
112 void elem(const char* format, ...); |
112 void elem(const char* format, ...) ATTRIBUTE_PRINTF(2, 3); |
113 void begin_elem(const char* format, ...); |
113 void begin_elem(const char* format, ...) ATTRIBUTE_PRINTF(2, 3); |
114 void end_elem(const char* format, ...); |
114 void end_elem(const char* format, ...) ATTRIBUTE_PRINTF(2, 3); |
115 void end_elem(); |
115 void end_elem(); |
116 void head(const char* format, ...); |
116 void head(const char* format, ...) ATTRIBUTE_PRINTF(2, 3); |
117 void begin_head(const char* format, ...); |
117 void begin_head(const char* format, ...) ATTRIBUTE_PRINTF(2, 3); |
118 void end_head(const char* format, ...); |
118 void end_head(const char* format, ...) ATTRIBUTE_PRINTF(2, 3); |
119 void end_head(); |
119 void end_head(); |
120 void done(const char* format, ...); // xxx_done event, plus tail |
120 void done(const char* format, ...) ATTRIBUTE_PRINTF(2, 3); // xxx_done event, plus tail |
121 void done_raw(const char * kind); |
121 void done_raw(const char * kind); |
122 void tail(const char* kind); |
122 void tail(const char* kind); |
123 |
123 |
124 // va_list versions |
124 // va_list versions |
125 void va_elem(const char* format, va_list ap); |
125 void va_elem(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0); |
126 void va_begin_elem(const char* format, va_list ap); |
126 void va_begin_elem(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0); |
127 void va_head(const char* format, va_list ap); |
127 void va_head(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0); |
128 void va_begin_head(const char* format, va_list ap); |
128 void va_begin_head(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0); |
129 void va_done(const char* format, va_list ap); |
129 void va_done(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0); |
130 |
130 |
131 // write text (with quoting of special XML characters <>&'" etc.) |
131 // write text (with quoting of special XML characters <>&'" etc.) |
132 outputStream* text() { return _text; } |
132 outputStream* text() { return _text; } |
133 void text(const char* format, ...); |
133 void text(const char* format, ...) ATTRIBUTE_PRINTF(2, 3); |
134 void va_text(const char* format, va_list ap) { |
134 void va_text(const char* format, va_list ap) ATTRIBUTE_PRINTF(2, 0) { |
135 text()->vprint(format, ap); |
135 text()->vprint(format, ap); |
136 } |
136 } |
137 |
137 |
138 // commonly used XML attributes |
138 // commonly used XML attributes |
139 void stamp(); // stamp='1.234' |
139 void stamp(); // stamp='1.234' |