mirror of
https://github.com/levinsv/pgadmin3.git
synced 2026-05-15 14:15:49 -06:00
Добавлена поддержка json формата для Linux. sysSetting поддерживает чтение/запись в файл расширенных настроек pgadmin3opt.json.
121 lines
3.6 KiB
C++
121 lines
3.6 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: jsonwriter.h
|
|
// Purpose: the generator of JSON text from a JSON value
|
|
// Author: Luciano Cattani
|
|
// Created: 2007/09/15
|
|
// RCS-ID: $Id: jsonwriter.h,v 1.4 2008/03/03 19:05:45 luccat Exp $
|
|
// Copyright: (c) 2007 Luciano Cattani
|
|
// Licence: wxWidgets licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "pgAdmin3.h"
|
|
|
|
|
|
#if !defined( _WX_JSONWRITER_H )
|
|
#define _WX_JSONWRITER_H
|
|
|
|
#ifdef __GNUG__
|
|
//#pragma interface "jsonwriter.h"
|
|
#endif
|
|
|
|
// For compilers that support precompilation, includes "wx/wx.h".
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
// for all others, include the necessary headers (this file is usually all you
|
|
// need because it includes almost all "standard" wxWidgets headers)
|
|
#ifndef WX_PRECOMP
|
|
#include <wx/stream.h>
|
|
#include <wx/string.h>
|
|
#endif
|
|
|
|
#include "utils/json/json_defs.h"
|
|
#include "utils/json/jsonval.h"
|
|
|
|
enum {
|
|
wxJSONWRITER_NONE = 0,
|
|
wxJSONWRITER_STYLED = 1,
|
|
wxJSONWRITER_WRITE_COMMENTS = 2,
|
|
wxJSONWRITER_COMMENTS_BEFORE = 4,
|
|
wxJSONWRITER_COMMENTS_AFTER = 8,
|
|
wxJSONWRITER_SPLIT_STRING = 16,
|
|
wxJSONWRITER_NO_LINEFEEDS = 32,
|
|
wxJSONWRITER_ESCAPE_SOLIDUS = 64,
|
|
wxJSONWRITER_MULTILINE_STRING = 128,
|
|
wxJSONWRITER_RECOGNIZE_UNSIGNED = 256,
|
|
wxJSONWRITER_TAB_INDENT = 512,
|
|
wxJSONWRITER_NO_INDENTATION = 1024,
|
|
wxJSONWRITER_NOUTF8_STREAM = 2048,
|
|
wxJSONWRITER_MEMORYBUFF = 4096
|
|
};
|
|
|
|
// class declaration
|
|
|
|
class WXDLLIMPEXP_JSON wxJSONWriter
|
|
{
|
|
public:
|
|
wxJSONWriter(int style = wxJSONWRITER_STYLED, int indent = 0, int step = 3);
|
|
~wxJSONWriter();
|
|
|
|
void Write(const wxJSONValue& value, wxString& str);
|
|
void Write(const wxJSONValue& value, wxOutputStream& os);
|
|
void SetDoubleFmtString(const char* fmt);
|
|
|
|
protected:
|
|
|
|
int DoWrite(wxOutputStream& os, const wxJSONValue& value, const wxString* key, bool comma);
|
|
int WriteIndent(wxOutputStream& os);
|
|
int WriteIndent(wxOutputStream& os, int num);
|
|
bool IsSpace(wxChar ch);
|
|
bool IsPunctuation(wxChar ch);
|
|
|
|
int WriteString(wxOutputStream& os, const wxString& str);
|
|
int WriteStringValue(wxOutputStream& os, const wxString& str);
|
|
int WriteNullValue(wxOutputStream& os);
|
|
int WriteIntValue(wxOutputStream& os, const wxJSONValue& v);
|
|
int WriteUIntValue(wxOutputStream& os, const wxJSONValue& v);
|
|
int WriteBoolValue(wxOutputStream& os, const wxJSONValue& v);
|
|
int WriteDoubleValue(wxOutputStream& os, const wxJSONValue& v);
|
|
int WriteMemoryBuff(wxOutputStream& os, const wxMemoryBuffer& buff);
|
|
|
|
int WriteInvalid(wxOutputStream& os);
|
|
int WriteSeparator(wxOutputStream& os);
|
|
|
|
int WriteKey(wxOutputStream& os, const wxString& key);
|
|
int WriteComment(wxOutputStream& os, const wxJSONValue& value, bool indent);
|
|
|
|
int WriteError(const wxString& err);
|
|
|
|
private:
|
|
//! The style flag is a combination of wxJSONWRITER_(something) constants.
|
|
int m_style;
|
|
|
|
//! The initial indentation value, in number of spaces.
|
|
int m_indent;
|
|
|
|
//! The indentation increment, in number of spaces.
|
|
int m_step;
|
|
|
|
//! JSON value objects can be nested; this is the level of annidation (used internally).
|
|
int m_level;
|
|
|
|
// The line number when printing JSON text output (not yet used)
|
|
int m_lineNo;
|
|
|
|
// The column number when printing JSON text output
|
|
int m_colNo;
|
|
|
|
// Flag used in ANSI mode that controls UTF-8 conversion
|
|
bool m_noUtf8;
|
|
|
|
// The format string for printing doubles
|
|
char* m_fmt;
|
|
};
|
|
|
|
|
|
#endif // not defined _WX_JSONWRITER_H
|
|
|
|
|
|
|