Hi Andrew, cool work!
A few repeating style violations came up on my eyes :
+
+ // TODO; there is considerable opportunity for performance
improvements
+ // here by buffering the input and then feeding it into
the parse
+ // algorithm character by character.
+
+ status_t NextChar(char* buffer) {
++/*! Note that this method will expect a UTF-8 encoded string. */
+
+status_t
+BJsonTextWriter::StreamStringEncoded(const char* string,
+ off_t offset, size_t length)
+{
+ status_t writeResult = B_OK;
+ uint8* string8bit = (uint8*)string;
+
+ while (writeResult == B_OK && 0 != length) {
+BJsonTextWriterArrayStackedEventListener::BJsonTextWriterArrayStackedEve
ntListener(
+ BJsonTextWriter* writer,
+ BJsonTextWriterStackedEventListener* parent)
+ : BJsonTextWriterStackedEventListener(writer, parent)
+{
+}
+ case ']': // terminate the array
+ if (!jsonParseContext.Listener()->Handle(
+ BJsonEvent(B_JSON_ARRAY_END))) {
+ return false;
+ }
+ return true;
+ || !NextChar(jsonParseContext, &buffer[1])
+ || !NextChar(jsonParseContext, &buffer[2])
+ || !NextChar(jsonParseContext, &buffer[3])) {
+ return false;
+ }