43 #ifndef __OmXmlWriter__
44 #define __OmXmlWriter__
58 virtual bool put(uint8_t ch)
73 virtual bool putS(
const char *s)
76 while(uint8_t ch = (uint8_t)(*s++))
78 result &= this->
put(ch);
93 static const int kOmXmlMaxDepth = 20;
96 int hasAnything[kOmXmlMaxDepth];
97 const char *elementName[kOmXmlMaxDepth];
99 bool indenting =
false;
101 unsigned int byteCount = 0;
103 const char *attributeName = 0;
112 void beginElement(
const char *elementName,
const char *attribute1,
const char *value1);
126 void addAttribute(
const char *attribute,
const char *value);
129 void addAttributeF(
const char *attribute,
const char *fmt,...);
132 void addAttributeFBig(
int reserve,
const char *attribute,
const char *fmt,...);
138 void addAttribute(
const char *attribute,
long long int value);
144 void addElement(
const char *elementName,
const char *content);
147 void addElementF(
const char *elementName,
const char *fmt,...);
175 bool put(uint8_t ch)
override;
176 bool done()
override;
178 void beginAttribute(
const char *attributeName);
181 void putf(
const char *fmt,...);
182 bool puts(
const char *stuff,
bool contentEscapes =
false);
188 bool inElementContentWithEscapes =
false;
virtual bool put(uint8_t ch)
emit a single byte, overridden by any implementation
Definition: OmXmlWriter.h:58
void beginElement(const char *elementName)
Begins a new XML element, like <elementName>
Definition: OmXmlWriter.cpp:92
void addElementF(const char *elementName, const char *fmt,...)
Adds an element with content (no need for endElement()) like <h1>Content</h1>
Definition: OmXmlWriter.cpp:345
void endElement()
Ends the most recent beginElement(). Caps them with either <element/> or </element>.
Definition: OmXmlWriter.cpp:355
void addContentRaw(const char *content)
Adds text to the document ignoring XML rules But also needed things like rendering DOCTYPE at the sta...
Definition: OmXmlWriter.cpp:220
unsigned int getByteCount()
Bytes written.
Definition: OmXmlWriter.cpp:447
Definition: OmXmlWriter.h:91
bool put(uint8_t ch) override
Definition: OmXmlWriter.cpp:452
virtual bool putS(const char *s)
convenience routine, same as put byte-by-byte.
Definition: OmXmlWriter.h:73
void addAttributeUrlF(const char *attribute, const char *fmt,...)
Adds an attribute to an element, using printf semantics, and %20 escapes.
Definition: OmXmlWriter.cpp:311
void addAttribute(const char *attribute, const char *value)
Adds an attribute to an element, like <element attr="value">
Definition: OmXmlWriter.cpp:243
Definition: OmXmlWriter.h:53
int getErrorCount()
Returns nonzero of any errors occurred, usually buffer overruns leading to missing portions.
Definition: OmXmlWriter.cpp:442
void addContentF(const char *fmt,...)
Adds text to an element, using printf semantics.
Definition: OmXmlWriter.cpp:225
void addElement(const char *elementName)
Adds an element with no attributes or content (no need for endElement()) like <hr/>
Definition: OmXmlWriter.cpp:332
void addRawContent(const char *rawContent)
Add content directly to the output stream, no escaping or element balancing. You can definitely break...
Definition: OmXmlWriter.cpp:387
void addContent(const char *content)
Adds text to an element, like <element>content</element>
Definition: OmXmlWriter.cpp:206
OmXmlWriter(OmIByteStream *consumer)
Instantiate an XML writer to write into the specified buffer.
Definition: OmXmlWriter.cpp:59
void addAttributeFBig(int reserve, const char *attribute, const char *fmt,...)
Handle oversized attribute. :-/.
Definition: OmXmlWriter.cpp:269
void addAttributeF(const char *attribute, const char *fmt,...)
Adds an attribute to an element, using printf semantics.
Definition: OmXmlWriter.cpp:255
void endElements()
Ends any remaining elements.
Definition: OmXmlWriter.cpp:381
void setIndenting(int onOff)
Enables primitive formatting. Uses more bytes of buffer.
Definition: OmXmlWriter.cpp:437