18 #if !defined(XALANUTF8WRITER_HEADER_GUARD_1357924680) 19 #define XALANUTF8WRITER_HEADER_GUARD_1357924680 26 XALAN_CPP_NAMESPACE_BEGIN
33 return static_cast<char>((theChar >> 18) & 0x7);
41 return static_cast<char>((theChar >> 12) & 0x3F);
49 return static_cast<char>((theChar >> 12) & 0xF);
57 return static_cast<char>((theChar >> 6) & 0x3f);
65 return static_cast<char>((theChar >> 6) & 0x1f);
73 return static_cast<char>(theChar & 0x3f);
81 return static_cast<char>(0xC0 + theBits);
89 return static_cast<char>(0xE0 + theBits);
97 return static_cast<char>(0xF0 + theBits);
105 return static_cast<char>(0x80 + theBits);
119 MemoryManager& theMemoryManager);
142 const XalanDOMChar chars[],
147 assert(chars != 0 && length != 0 && start < length);
149 return write(chars, start, length);
158 const XalanDOMChar* data,
161 write(data, theLength);
170 const XalanDOMChar* data,
173 write(data, theLength);
182 const XalanDOMChar* data,
185 write(data, theLength);
190 const XalanDOMChar* theChars,
201 const value_type* theChars,
205 if (theLength >
sizeof(m_buffer))
213 if (m_bufferRemaining < theLength)
220 *m_bufferPosition = theChars[i];
225 m_bufferRemaining -= theLength;
250 assert(theChar < 128);
252 if (m_bufferRemaining == 0)
257 *m_bufferPosition = theChar;
265 const XalanDOMChar* theChars,
272 write(static_cast<XalanUnicodeChar>(theChars[i]));
274 else if (i + 1 >= theLength)
296 const XalanDOMChar chars[],
300 const XalanDOMChar ch = chars[start];
304 write(static_cast<XalanUnicodeChar>(ch));
306 else if (start + 1 >= length)
327 const XalanDOMChar* theChars,
332 const XalanDOMChar ch = theChars[i];
336 if (i + 1 >= theLength)
356 write(static_cast<XalanUnicodeChar>(ch));
379 m_bufferPosition = m_buffer;
380 m_bufferRemaining = kBufferSize;
386 write(XalanUnicodeChar theChar)
390 write(
char(theChar));
392 else if (theChar <= 0x7FF)
394 if (m_bufferRemaining < 2)
404 m_bufferRemaining -= 2;
406 else if (theChar <= 0xFFFF)
409 assert(theChar < 0xD800 || theChar > 0xDBFF);
410 assert(theChar < 0xDC00 || theChar > 0xDFFF);
412 if (m_bufferRemaining < 3)
424 m_bufferRemaining -= 3;
426 else if (theChar <= 0x10FFFF)
428 if (m_bufferRemaining < 4)
442 m_bufferRemaining -= 4;
457 value_type m_buffer[kBufferSize];
459 value_type* m_bufferPosition;
466 XALAN_CPP_NAMESPACE_END
470 #endif // XALANUTF8WRITER_HEADER_GUARD_1357924680
void writeCommentChars(const XalanDOMChar *data, size_type theLength)
Writes comment characters.
virtual void write(const char *s, size_t theOffset=0, size_t theLength=npos)=0
Writes a string.
void write(const XalanDOMString &theChars)
void writePIChars(const XalanDOMChar *data, size_type theLength)
Writes PI characters.
char bits7to11(XalanUnicodeChar theChar)
char leadingByteOf3(char theBits)
void safeWriteContent(const XalanDOMChar *theChars, size_type theLength)
char leadingByteOf4(char theBits)
void write(const XalanDOMChar *theChars)
char bits7to12(XalanUnicodeChar theChar)
size_type write(const XalanDOMChar chars[], size_type start, size_type length)
size_type writeCDATAChar(const XalanDOMChar chars[], size_type start, size_type length, bool &)
const XalanDOMChar * c_str() const
void outputNewline()
Output a line break.
char bits1to6(XalanUnicodeChar theChar)
void write(value_type theChar)
virtual void flush()=0
Flush the stream.
char bits13to16(XalanUnicodeChar theChar)
XalanUTF8Writer(Writer &writer, MemoryManager &theMemoryManager)
virtual ~XalanUTF8Writer()
char trailingByte(char theBits)
char leadingByteOf2(char theBits)
void writeSafe(const XalanDOMChar *theChars, size_type theLength)
void write(const XalanDOMChar *theChars, size_type theLength)
XalanDOMString::size_type length(const XalanDOMString &theString)
Get the length of a XalanDOMString.
char bits13to18(XalanUnicodeChar theChar)
XALAN_CPP_NAMESPACE_BEGIN char bits19to21(XalanUnicodeChar theChar)
void write(const value_type *theChars, size_type theLength)
void write(const value_type *theChars)
void writeNameChar(const XalanDOMChar *data, size_type theLength)
Writes name characters.