| 16 | using namespace rapidjson; |
| 17 | |
| 18 | int main(int, char*[]) { |
| 19 | #ifdef _WIN32 |
| 20 | // Prevent Windows converting between CR+LF and LF |
| 21 | _setmode(_fileno(stdin), _O_BINARY); // NEW |
| 22 | _setmode(_fileno(stdout), _O_BINARY); // NEW |
| 23 | #endif |
| 24 | |
| 25 | // Prepare reader and input stream. |
| 26 | //Reader reader; |
| 27 | GenericReader<AutoUTF<unsigned>, UTF8<> > reader; // CHANGED |
| 28 | char readBuffer[65536]; |
| 29 | FileReadStream is(stdin, readBuffer, sizeof(readBuffer)); |
| 30 | AutoUTFInputStream<unsigned, FileReadStream> eis(is); // NEW |
| 31 | |
| 32 | // Prepare writer and output stream. |
| 33 | char writeBuffer[65536]; |
| 34 | FileWriteStream os(stdout, writeBuffer, sizeof(writeBuffer)); |
| 35 | |
| 36 | #if 1 |
| 37 | // Use the same Encoding of the input. Also use BOM according to input. |
| 38 | typedef AutoUTFOutputStream<unsigned, FileWriteStream> OutputStream; // NEW |
| 39 | OutputStream eos(os, eis.GetType(), eis.HasBOM()); // NEW |
| 40 | PrettyWriter<OutputStream, UTF8<>, AutoUTF<unsigned> > writer(eos); // CHANGED |
| 41 | #else |
| 42 | // You may also use static bound encoding type, such as output to UTF-16LE with BOM |
| 43 | typedef EncodedOutputStream<UTF16LE<>,FileWriteStream> OutputStream; // NEW |
| 44 | OutputStream eos(os, true); // NEW |
| 45 | PrettyWriter<OutputStream, UTF8<>, UTF16LE<> > writer(eos); // CHANGED |
| 46 | #endif |
| 47 | |
| 48 | // JSON reader parse from the input stream and let writer generate the output. |
| 49 | //if (!reader.Parse<kParseValidateEncodingFlag>(is, writer)) { |
| 50 | if (!reader.Parse<kParseValidateEncodingFlag>(eis, writer)) { // CHANGED |
| 51 | fprintf(stderr, "\nError(%u): %s\n", static_cast<unsigned>(reader.GetErrorOffset()), GetParseError_En(reader.GetParseErrorCode())); |
| 52 | return 1; |
| 53 | } |
| 54 | |
| 55 | return 0; |
| 56 | } |
nothing calls this directly
no test coverage detected