diff options
Diffstat (limited to 'Build/source/libs/graphite2/graphite2-1.2.3/src/json.cpp')
-rw-r--r-- | Build/source/libs/graphite2/graphite2-1.2.3/src/json.cpp | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/Build/source/libs/graphite2/graphite2-1.2.3/src/json.cpp b/Build/source/libs/graphite2/graphite2-1.2.3/src/json.cpp deleted file mode 100644 index c10037f3afe..00000000000 --- a/Build/source/libs/graphite2/graphite2-1.2.3/src/json.cpp +++ /dev/null @@ -1,126 +0,0 @@ -/* GRAPHITE2 LICENSING - - Copyright 2010, SIL International - All rights reserved. - - This library is free software; you can redistribute it and/or modify - it under the terms of the GNU Lesser General Public License as published - by the Free Software Foundation; either version 2.1 of License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should also have received a copy of the GNU Lesser General Public - License along with this library in the file named "LICENSE". - If not, write to the Free Software Foundation, 51 Franklin Street, - Suite 500, Boston, MA 02110-1335, USA or visit their web page on the - internet at http://www.fsf.org/licenses/lgpl.html. - -Alternatively, the contents of this file may be used under the terms of the -Mozilla Public License (http://mozilla.org/MPL) or the GNU General Public -License, as published by the Free Software Foundation, either version 2 -of the License or (at your option) any later version. -*/ -// JSON debug logging -// Author: Tim Eves - -#if !defined GRAPHITE2_NTRACING - -#include <cstdio> -#include "inc/json.h" - -using namespace graphite2; - -namespace -{ - enum - { - seq = ',', - obj='}', member=':', empty_obj='{', - arr=']', empty_arr='[' - }; -} - -const json::_null_t json::null = {}; - -inline -void json::context(const char current) throw() -{ - fprintf(_stream, "%c", *_context); - indent(); - *_context = current; -} - - -void json::indent(const int d) throw() -{ - if (*_context == member || (_flatten && _flatten < _context)) - fputc(' ', _stream); - else - fprintf(_stream, "\n%*s", 4*int(_context - _contexts + d), ""); -} - - -inline -void json::push_context(const char prefix, const char suffix) throw() -{ - assert(_context - _contexts < ptrdiff_t(sizeof _contexts)); - - if (_context == _contexts) - *_context = suffix; - else - context(suffix); - *++_context = prefix; -} - - -void json::pop_context() throw() -{ - assert(_context > _contexts); - - if (*_context == seq) indent(-1); - else fputc(*_context, _stream); - - fputc(*--_context, _stream); - if (_context == _contexts) fputc('\n', _stream); - fflush(_stream); - - if (_flatten >= _context) _flatten = 0; - *_context = seq; -} - - -// These four functions cannot be inlined as pointers to these -// functions are needed for operator << (_context_t) to work. -void json::flat(json & j) throw() { if (!j._flatten) j._flatten = j._context; } -void json::close(json & j) throw() { j.pop_context(); } -void json::object(json & j) throw() { j.push_context('{', '}'); } -void json::array(json & j) throw() { j.push_context('[', ']'); } -void json::item(json & j) throw() -{ - while (j._context > j._contexts+1 && j._context[-1] != arr) - j.pop_context(); -} - - -json & json::operator << (json::string s) throw() -{ - const char ctxt = _context[-1] == obj ? *_context == member ? seq : member : seq; - context(ctxt); - fprintf(_stream, "\"%s\"", s); - if (ctxt == member) fputc(' ', _stream); - - return *this; -} - -json & json::operator << (json::number f) throw() { context(seq); fprintf(_stream, "%g", f); return *this; } -json & json::operator << (json::integer d) throw() { context(seq); fprintf(_stream, "%ld", d); return *this; } -json & json::operator << (long unsigned d) throw() { context(seq); fprintf(_stream, "%ld", d); return *this; } -json & json::operator << (json::boolean b) throw() { context(seq); fputs(b ? "true" : "false", _stream); return *this; } -json & json::operator << (json::_null_t) throw() { context(seq); fputs("null",_stream); return *this; } - -#endif - |