diff --git a/build/SQLyogCommunity.vcxproj b/build/SQLyogCommunity.vcxproj
index a3e79ae..e663c47 100644
--- a/build/SQLyogCommunity.vcxproj
+++ b/build/SQLyogCommunity.vcxproj
@@ -97,7 +97,7 @@
Disabled../include;../include/scintilla;../include/mysql;../include/htmlayout;../include/pcre;../include/tinyxml;../include/vld;%(AdditionalIncludeDirectories)
- WIN32;_DEBUG;_WINDOWS;_WIN32_WINNT=0x501;COMMUNITY;UNICODE;_UNICODE;PCRE_STATIC;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_NON_CONFORMING_SWPRINTFS;%(PreprocessorDefinitions)
+ WIN32;_DEBUG;_WINDOWS;_WIN32_WINNT=0x600;COMMUNITY;UNICODE;_UNICODE;PCRE_STATIC;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_NON_CONFORMING_SWPRINTFS;%(PreprocessorDefinitions)trueEnableFastChecksMultiThreadedDebug
@@ -108,7 +108,7 @@
EditAndContinue
- shfolder.lib;version.lib;Ws2_32.lib;odbc32.lib;odbccp32.lib;wsock32.lib;comctl32.lib;htmlhelp.lib;wininet.lib;imm32.lib;gdiplus.lib;ole32.lib;msimg32.lib;sqlite3.lib;mariadbclient.lib;HTMLayout.lib;pcre.lib;Rpcrt4.lib;shlwapi.lib;vld.lib;winmm.lib;ssleay32MD.lib;libeay32MD.lib;%(AdditionalDependencies)
+ shfolder.lib;version.lib;Ws2_32.lib;odbc32.lib;odbccp32.lib;wsock32.lib;comctl32.lib;htmlhelp.lib;wininet.lib;imm32.lib;gdiplus.lib;ole32.lib;msimg32.lib;sqlite3.lib;mariadbclient.lib;HTMLayout.lib;pcre.lib;Rpcrt4.lib;shlwapi.lib;vld.lib;winmm.lib;ssleay32MD.lib;libeay32MD.lib;wevtapi.lib;%(AdditionalDependencies)$(OutDir)$(TargetName)$(TargetExt)falseLIBCMT;msvcrt;%(IgnoreSpecificDefaultLibraries)
@@ -159,7 +159,7 @@
AnySuitableSpeed../include;../include/scintilla;../include/mysql;../include/htmlayout;../include/pcre;../include/tinyxml;../include/vld;%(AdditionalIncludeDirectories)
- WIN32;NDEBUG;_WINDOWS;_WIN32_WINNT=0x501;SCI_LEXER;STATIC_BUILD;COMMUNITY;_UNICODE;UNICODE;PCRE_STATIC;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_NON_CONFORMING_SWPRINTFS;%(PreprocessorDefinitions)
+ WIN32;NDEBUG;_WINDOWS;_WIN32_WINNT=0x600;SCI_LEXER;STATIC_BUILD;COMMUNITY;_UNICODE;UNICODE;PCRE_STATIC;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_DEPRECATE;_CRT_NON_CONFORMING_SWPRINTFS;%(PreprocessorDefinitions)trueSyncMultiThreaded
@@ -171,7 +171,7 @@
ProgramDatabase
- shfolder.lib;version.lib;Ws2_32.lib;odbc32.lib;odbccp32.lib;wsock32.lib;comctl32.lib;htmlhelp.lib;wininet.lib;imm32.lib;gdiplus.lib;ole32.lib;msimg32.lib;sqlite3.lib;mariadbclient.lib;HTMLayout.lib;pcre.lib;Rpcrt4.lib;shlwapi.lib;vld.lib;winmm.lib;%(AdditionalDependencies)
+ shfolder.lib;version.lib;Ws2_32.lib;odbc32.lib;odbccp32.lib;wsock32.lib;comctl32.lib;htmlhelp.lib;wininet.lib;imm32.lib;gdiplus.lib;ole32.lib;msimg32.lib;sqlite3.lib;mariadbclient.lib;HTMLayout.lib;pcre.lib;Rpcrt4.lib;shlwapi.lib;vld.lib;winmm.lib;wevtapi.lib;%(AdditionalDependencies)$(OutDir)$(TargetName)$(TargetExt)falseLIBCD;msvcrt;%(IgnoreSpecificDefaultLibraries)
@@ -308,6 +308,7 @@
+
@@ -451,6 +452,7 @@
+
diff --git a/build/SQLyogCommunity.vcxproj.filters b/build/SQLyogCommunity.vcxproj.filters
index f3f57d8..94cf05e 100644
--- a/build/SQLyogCommunity.vcxproj.filters
+++ b/build/SQLyogCommunity.vcxproj.filters
@@ -357,6 +357,9 @@
Source Files
+
+ Source Files
+
@@ -704,6 +707,9 @@
Header Files
+
+ Header Files
+
diff --git a/include/CommonHelper.h b/include/CommonHelper.h
index 45ad983..41b5579 100644
--- a/include/CommonHelper.h
+++ b/include/CommonHelper.h
@@ -109,8 +109,6 @@
//#define CPI_UTF32 12000
#define CPI_CP932 932
-#define MYSQL_TYPE_JSON 245
-#define FIELD_TYPE_JSON MYSQL_TYPE_JSON
enum EntType
{
diff --git a/include/DataView.h b/include/DataView.h
index bb39f8c..8be5ed6 100644
--- a/include/DataView.h
+++ b/include/DataView.h
@@ -392,6 +392,15 @@ class EnumListElem : public wyElem
wyString m_str;
};
+// abstract interface to be used as a callback interface for DataView. Any clients can construct this with
+// non null interface to DataView, and are responsible for implementing that interface which gives the complete
+// live query used at that time. null implies they dont need that.
+class IQueryBuilder
+{
+ public:
+ virtual void GetQuery(wyString& query) = 0;
+};
+
//Class represents the view. This is an abstact class. You need to derive your own class from this and implement the methods
class DataView
{
@@ -405,8 +414,9 @@ class DataView
/**
@param wnd : IN MDI window pointer
@param hwndparent : IN handle to parent window
+ @param queryBuilder : IN IQueryBuilder interface supplied from derived class
*/
- DataView(MDIWindow* wnd, HWND hwndparent);
+ DataView(MDIWindow* wnd, HWND hwndparent, IQueryBuilder* queryBuilder);
///Destrouctor. Has to be virtual to avoid memory leak
virtual ~DataView();
@@ -1859,6 +1869,12 @@ class DataView
//Padding window
HWND m_hwndpadding;
+
+ // IQueryBuilder interface
+ IQueryBuilder* m_querybuilder;
+
+ // backtick string can be used across multiple methods. But reinit them from .ini
+ wyChar* m_backtick;
};
#endif
\ No newline at end of file
diff --git a/include/SortAndFilter.h b/include/SortAndFilter.h
index 5c3b548..8f044ea 100644
--- a/include/SortAndFilter.h
+++ b/include/SortAndFilter.h
@@ -35,6 +35,7 @@ enum ThreadAction;
class MySQLRowExArray;
enum ThreadExecStatus;
enum ArrayAction;
+class IQueryBuilder;
//Filter type enumeration
enum FilterType
@@ -144,6 +145,13 @@ class SortAndFilter
*/
wyBool InitDialog();
+ /// Initializes the main dlg procedure
+ /**
+ @param hwndparent: IN Window handle
+ @returns void
+ */
+ void OnWMInitdlgValues(HWND hwnd);
+
///Function to reset sort
/**
@returns void
@@ -185,10 +193,11 @@ class SortAndFilter
@param datalen : IN cell data length
@param col : IN selected column, can be -1
@param hwndparent : IN handle to the parent window if you are invoking custom filter, can be NULL otherwise
+ @param querybuilder : IN queryBuilder interface
@param prect : IN rectangle with respect to which the dialog box to be positioned, can be NULL if the command is not custom filter
@returns wyTrue on success else wyFalse
*/
- wyBool BeginFilter(wyInt32 command, wyChar* data, wyUInt32 datalen, wyInt32 col, HWND hwndparent = NULL, RECT* prect = NULL);
+ wyBool BeginFilter(wyInt32 command, wyChar* data, wyUInt32 datalen, wyInt32 col, HWND hwndparent = NULL, IQueryBuilder* querybuilder = NULL, RECT* prect = NULL);
///Function finishes the filter operation. This includes copying any new filter applied to the current filter, or canceling it
/**
@@ -443,6 +452,9 @@ class SortAndFilter
wyString m_currfilterstring;
wyBool m_isfilteronnull;
+
+ // IQueryBuilder interface
+ IQueryBuilder* m_querybuilder;
};
#endif
\ No newline at end of file
diff --git a/include/TabFields.h b/include/TabFields.h
index 7ed3d5f..736e70f 100644
--- a/include/TabFields.h
+++ b/include/TabFields.h
@@ -190,6 +190,9 @@ class TabFields
/// Persistence class object pointer
Persist *m_p;
+
+ // backtick string from preferences, either empty or quote
+ wyChar* m_backtick;
/// intializes m_mysql, m_tunnel and calls CreateGrid()
/**
diff --git a/include/TabForeignKeys.h b/include/TabForeignKeys.h
index 5122259..ffe5c04 100644
--- a/include/TabForeignKeys.h
+++ b/include/TabForeignKeys.h
@@ -182,11 +182,13 @@ class TabForeignKeys
RECT m_dlgrect;
-
- List m_controllist;
+ List m_controllist;
//member stores the subclassing procedure for the static control showing the gripper
- WNDPROC m_gripproc;
+ WNDPROC m_gripproc;
+
+ // backtick string from preferences, either empty or quote
+ wyChar* m_backtick;
void InitStructFK(StructFK *value);
@@ -573,6 +575,10 @@ class TabForeignKeys
*/
void ReInitializeGrid(List *unsavedfkwrappers = NULL);
+ // All dervied data should be refreshed based on preferences and also display
+ void Refresh();
+ void Refresh(StructFK* fkInfo);
+
void SetValueToStructure(wyUInt32 row, wyUInt32 col, wyChar* data);
wyBool StructFKContainsOtherValues(StructFK *value, wyInt32 col);
diff --git a/include/TabIndexes.h b/include/TabIndexes.h
index a34b0d7..5862f8a 100644
--- a/include/TabIndexes.h
+++ b/include/TabIndexes.h
@@ -85,12 +85,14 @@ class TabIndexes
wyInt32 m_lastclickindgrid;
wyInt32 m_lastclickdlggrid;
- RECT m_wndrect;
+ RECT m_wndrect;
RECT m_dlgrect;
-
- List m_controllist;
+ List m_controllist;
+
+ // backtick string from preferences, either empty or quote
+ wyChar* m_backtick;
/// Constructor
TabIndexes(HWND hwndparent, TableTabInterfaceTabMgmt* ptabmgmt);
@@ -153,6 +155,10 @@ class TabIndexes
void ResizeColumnsDialog(HWND hwnd, LPARAM lParam);
+ // All dervied data should be refreshed based on preferences and also display
+ void Refresh();
+ void Refresh(IndexInfo *indexInfo);
+
/// Shows the Dialog-box if the grid cell on which mouse is clicked is INDEXCOLUMNS
/**
@returns void
diff --git a/include/TabModule.h b/include/TabModule.h
index 729f109..726174e 100644
--- a/include/TabModule.h
+++ b/include/TabModule.h
@@ -301,6 +301,10 @@ class TabModule
*/
void SetBackQuotesOption();
+ // Will regenerate and refresh all names, etc. which can be affected by preferences and sql previews if needed to
+ // apply any change in preferences etc
+ void Refresh();
+
/// Handles the checking or unchecking the Menu item 'text or grid'
/**
@param pcquerywnd : IN Query window pointer
diff --git a/include/TableTabInterface.h b/include/TableTabInterface.h
index 38596c9..95b1eed 100644
--- a/include/TableTabInterface.h
+++ b/include/TableTabInterface.h
@@ -124,7 +124,7 @@ class TableTabInterface : public TabTypes
HBRUSH m_objbkcolor;
wyBool m_isbuffereddraw;
-
+
TableTabInterface(HWND hwnd, wyBool open_in_dialog, wyBool isaltertable, wyInt32 setfocustotab);
~TableTabInterface();
diff --git a/include/TableView.h b/include/TableView.h
index 56a060a..7328b32 100644
--- a/include/TableView.h
+++ b/include/TableView.h
@@ -64,7 +64,7 @@ class MySQLTableDataEx : public MySQLDataEx
};
//Class representing table view
-class TableView : public DataView
+class TableView : public DataView, public IQueryBuilder
{
public:
///Constuctor
@@ -95,6 +95,12 @@ class TableView : public DataView
@returns void
*/
void ResetToolBarButtons();
+
+ /// IQueryBuilder implementation
+ /**
+ @returns void. But caller needs to destroy query.(they own it)
+ */
+ void GetQuery(wyString& query);
protected:
///Function to create toolbars and additional controls
diff --git a/include/jsoncpp.h b/include/jsoncpp.h
new file mode 100644
index 0000000..faa3a18
--- /dev/null
+++ b/include/jsoncpp.h
@@ -0,0 +1,2191 @@
+/// Json-cpp amalgated header (http://jsoncpp.sourceforge.net/).
+/// It is intended to be used with #include "json/json.h"
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+/*
+The JsonCpp library's source code, including accompanying documentation,
+tests and demonstration applications, are licensed under the following
+conditions...
+
+Baptiste Lepilleur and The JsonCpp Authors explicitly disclaim copyright in all
+jurisdictions which recognize such a disclaimer. In such jurisdictions,
+this software is released into the Public Domain.
+
+In jurisdictions which do not recognize Public Domain property (e.g. Germany as of
+2010), this software is Copyright (c) 2007-2010 by Baptiste Lepilleur and
+The JsonCpp Authors, and is released under the terms of the MIT License (see below).
+
+In jurisdictions which recognize Public Domain property, the user of this
+software may choose to accept it either as 1) Public Domain, 2) under the
+conditions of the MIT License (see below), or 3) under the terms of dual
+Public Domain/MIT License conditions described here, as they choose.
+
+The MIT License is about as close to Public Domain as a license can get, and is
+described in clear, concise terms at:
+
+ http://en.wikipedia.org/wiki/MIT_License
+
+The full text of the MIT License follows:
+
+========================================================================
+Copyright (c) 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use, copy,
+modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
+BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
+ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+========================================================================
+(END LICENSE TEXT)
+
+The MIT license is compatible with both the GPL and commercial
+software, affording one all of the rights of Public Domain with the
+minor nuisance of being required to keep the above copyright notice
+and license text in the source code. Note also that by accepting the
+Public Domain "license" you can re-license your copy using whatever
+license you like.
+
+*/
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: LICENSE
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+#ifndef JSON_AMALGATED_H_INCLUDED
+# define JSON_AMALGATED_H_INCLUDED
+/// If defined, indicates that the source file is amalgated
+/// to prevent private header inclusion.
+#define JSON_IS_AMALGAMATION
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/version.h
+// //////////////////////////////////////////////////////////////////////
+
+// DO NOT EDIT. This file (and "version") is generated by CMake.
+// Run CMake configure step to update it.
+#ifndef JSON_VERSION_H_INCLUDED
+# define JSON_VERSION_H_INCLUDED
+
+# define JSONCPP_VERSION_STRING "1.8.3"
+# define JSONCPP_VERSION_MAJOR 1
+# define JSONCPP_VERSION_MINOR 8
+# define JSONCPP_VERSION_PATCH 3
+# define JSONCPP_VERSION_QUALIFIER
+# define JSONCPP_VERSION_HEXA ((JSONCPP_VERSION_MAJOR << 24) | (JSONCPP_VERSION_MINOR << 16) | (JSONCPP_VERSION_PATCH << 8))
+
+#ifdef JSONCPP_USING_SECURE_MEMORY
+#undef JSONCPP_USING_SECURE_MEMORY
+#endif
+#define JSONCPP_USING_SECURE_MEMORY 0
+// If non-zero, the library zeroes any memory that it has allocated before
+// it frees its memory.
+
+#endif // JSON_VERSION_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/version.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/config.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_CONFIG_H_INCLUDED
+#define JSON_CONFIG_H_INCLUDED
+#include
+#include //typedef String
+#include //typedef int64_t, uint64_t
+
+/// If defined, indicates that json library is embedded in CppTL library.
+//# define JSON_IN_CPPTL 1
+
+/// If defined, indicates that json may leverage CppTL library
+//# define JSON_USE_CPPTL 1
+/// If defined, indicates that cpptl vector based map should be used instead of
+/// std::map
+/// as Value container.
+//# define JSON_USE_CPPTL_SMALLMAP 1
+
+// If non-zero, the library uses exceptions to report bad input instead of C
+// assertion macros. The default is to use exceptions.
+#ifndef JSON_USE_EXCEPTION
+#define JSON_USE_EXCEPTION 1
+#endif
+
+/// If defined, indicates that the source file is amalgated
+/// to prevent private header inclusion.
+/// Remarks: it is automatically defined in the generated amalgated header.
+// #define JSON_IS_AMALGAMATION
+
+#ifdef JSON_IN_CPPTL
+#include
+#ifndef JSON_USE_CPPTL
+#define JSON_USE_CPPTL 1
+#endif
+#endif
+
+#ifdef JSON_IN_CPPTL
+#define JSON_API CPPTL_API
+#elif defined(JSON_DLL_BUILD)
+#if defined(_MSC_VER) || defined(__MINGW32__)
+#define JSON_API __declspec(dllexport)
+#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
+#endif // if defined(_MSC_VER)
+#elif defined(JSON_DLL)
+#if defined(_MSC_VER) || defined(__MINGW32__)
+#define JSON_API __declspec(dllimport)
+#define JSONCPP_DISABLE_DLL_INTERFACE_WARNING
+#endif // if defined(_MSC_VER)
+#endif // ifdef JSON_IN_CPPTL
+#if !defined(JSON_API)
+#define JSON_API
+#endif
+
+// If JSON_NO_INT64 is defined, then Json only support C++ "int" type for
+// integer
+// Storages, and 64 bits integer support is disabled.
+// #define JSON_NO_INT64 1
+
+#if defined(_MSC_VER) // MSVC
+# if _MSC_VER <= 1200 // MSVC 6
+ // Microsoft Visual Studio 6 only support conversion from __int64 to double
+ // (no conversion from unsigned __int64).
+# define JSON_USE_INT64_DOUBLE_CONVERSION 1
+ // Disable warning 4786 for VS6 caused by STL (identifier was truncated to '255'
+ // characters in the debug information)
+ // All projects I've ever seen with VS6 were using this globally (not bothering
+ // with pragma push/pop).
+# pragma warning(disable : 4786)
+# endif // MSVC 6
+
+# if _MSC_VER >= 1500 // MSVC 2008
+ /// Indicates that the following function is deprecated.
+# define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
+# endif
+
+#endif // defined(_MSC_VER)
+
+// In c++11 the override keyword allows you to explicity define that a function
+// is intended to override the base-class version. This makes the code more
+// managable and fixes a set of common hard-to-find bugs.
+#if __cplusplus >= 201103L
+# define JSONCPP_OVERRIDE override
+# define JSONCPP_NOEXCEPT noexcept
+#elif defined(_MSC_VER) && _MSC_VER > 1600 && _MSC_VER < 1900
+# define JSONCPP_OVERRIDE override
+# define JSONCPP_NOEXCEPT throw()
+#elif defined(_MSC_VER) && _MSC_VER >= 1900
+# define JSONCPP_OVERRIDE override
+# define JSONCPP_NOEXCEPT noexcept
+#else
+# define JSONCPP_OVERRIDE
+# define JSONCPP_NOEXCEPT throw()
+#endif
+
+#ifndef JSON_HAS_RVALUE_REFERENCES
+
+#if defined(_MSC_VER) && _MSC_VER >= 1600 // MSVC >= 2010
+#define JSON_HAS_RVALUE_REFERENCES 1
+#endif // MSVC >= 2010
+
+#ifdef __clang__
+#if __has_feature(cxx_rvalue_references)
+#define JSON_HAS_RVALUE_REFERENCES 1
+#endif // has_feature
+
+#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
+#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L)
+#define JSON_HAS_RVALUE_REFERENCES 1
+#endif // GXX_EXPERIMENTAL
+
+#endif // __clang__ || __GNUC__
+
+#endif // not defined JSON_HAS_RVALUE_REFERENCES
+
+#ifndef JSON_HAS_RVALUE_REFERENCES
+#define JSON_HAS_RVALUE_REFERENCES 0
+#endif
+
+#ifdef __clang__
+# if __has_extension(attribute_deprecated_with_message)
+# define JSONCPP_DEPRECATED(message) __attribute__ ((deprecated(message)))
+# endif
+#elif defined __GNUC__ // not clang (gcc comes later since clang emulates gcc)
+# if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5))
+# define JSONCPP_DEPRECATED(message) __attribute__ ((deprecated(message)))
+# elif (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
+# define JSONCPP_DEPRECATED(message) __attribute__((__deprecated__))
+# endif // GNUC version
+#endif // __clang__ || __GNUC__
+
+#if !defined(JSONCPP_DEPRECATED)
+#define JSONCPP_DEPRECATED(message)
+#endif // if !defined(JSONCPP_DEPRECATED)
+
+#if __GNUC__ >= 6
+# define JSON_USE_INT64_DOUBLE_CONVERSION 1
+#endif
+
+#if !defined(JSON_IS_AMALGAMATION)
+
+# include "version.h"
+
+# if JSONCPP_USING_SECURE_MEMORY
+# include "allocator.h" //typedef Allocator
+# endif
+
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+namespace Json {
+typedef int Int;
+typedef unsigned int UInt;
+#if defined(JSON_NO_INT64)
+typedef int LargestInt;
+typedef unsigned int LargestUInt;
+#undef JSON_HAS_INT64
+#else // if defined(JSON_NO_INT64)
+// For Microsoft Visual use specific types as long long is not supported
+#if defined(_MSC_VER) // Microsoft Visual Studio
+typedef __int64 Int64;
+typedef unsigned __int64 UInt64;
+#else // if defined(_MSC_VER) // Other platforms, use long long
+typedef int64_t Int64;
+typedef uint64_t UInt64;
+#endif // if defined(_MSC_VER)
+typedef Int64 LargestInt;
+typedef UInt64 LargestUInt;
+#define JSON_HAS_INT64
+#endif // if defined(JSON_NO_INT64)
+#if JSONCPP_USING_SECURE_MEMORY
+#define JSONCPP_STRING std::basic_string, Json::SecureAllocator >
+#define JSONCPP_OSTRINGSTREAM std::basic_ostringstream, Json::SecureAllocator >
+#define JSONCPP_OSTREAM std::basic_ostream>
+#define JSONCPP_ISTRINGSTREAM std::basic_istringstream, Json::SecureAllocator >
+#define JSONCPP_ISTREAM std::istream
+#else
+#define JSONCPP_STRING std::string
+#define JSONCPP_OSTRINGSTREAM std::ostringstream
+#define JSONCPP_OSTREAM std::ostream
+#define JSONCPP_ISTRINGSTREAM std::istringstream
+#define JSONCPP_ISTREAM std::istream
+#endif // if JSONCPP_USING_SECURE_MEMORY
+} // end namespace Json
+
+#endif // JSON_CONFIG_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/config.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/forwards.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef JSON_FORWARDS_H_INCLUDED
+#define JSON_FORWARDS_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "config.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+namespace Json {
+
+// writer.h
+class FastWriter;
+class StyledWriter;
+
+// reader.h
+class Reader;
+
+// features.h
+class Features;
+
+// value.h
+typedef unsigned int ArrayIndex;
+class StaticString;
+class Path;
+class PathArgument;
+class Value;
+class ValueIteratorBase;
+class ValueIterator;
+class ValueConstIterator;
+
+} // namespace Json
+
+#endif // JSON_FORWARDS_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/forwards.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/features.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef CPPTL_JSON_FEATURES_H_INCLUDED
+#define CPPTL_JSON_FEATURES_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "forwards.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+
+#pragma pack(push, 8)
+
+namespace Json {
+
+/** \brief Configuration passed to reader and writer.
+ * This configuration object can be used to force the Reader or Writer
+ * to behave in a standard conforming way.
+ */
+class JSON_API Features {
+public:
+ /** \brief A configuration that allows all features and assumes all strings
+ * are UTF-8.
+ * - C & C++ comments are allowed
+ * - Root object can be any JSON value
+ * - Assumes Value strings are encoded in UTF-8
+ */
+ static Features all();
+
+ /** \brief A configuration that is strictly compatible with the JSON
+ * specification.
+ * - Comments are forbidden.
+ * - Root object must be either an array or an object value.
+ * - Assumes Value strings are encoded in UTF-8
+ */
+ static Features strictMode();
+
+ /** \brief Initialize the configuration like JsonConfig::allFeatures;
+ */
+ Features();
+
+ /// \c true if comments are allowed. Default: \c true.
+ bool allowComments_;
+
+ /// \c true if root must be either an array or an object value. Default: \c
+ /// false.
+ bool strictRoot_;
+
+ /// \c true if dropped null placeholders are allowed. Default: \c false.
+ bool allowDroppedNullPlaceholders_;
+
+ /// \c true if numeric object key are allowed. Default: \c false.
+ bool allowNumericKeys_;
+};
+
+} // namespace Json
+
+#pragma pack(pop)
+
+#endif // CPPTL_JSON_FEATURES_H_INCLUDED
+
+// //////////////////////////////////////////////////////////////////////
+// End of content of file: include/json/features.h
+// //////////////////////////////////////////////////////////////////////
+
+
+
+
+
+
+// //////////////////////////////////////////////////////////////////////
+// Beginning of content of file: include/json/value.h
+// //////////////////////////////////////////////////////////////////////
+
+// Copyright 2007-2010 Baptiste Lepilleur and The JsonCpp Authors
+// Distributed under MIT license, or public domain if desired and
+// recognized in your jurisdiction.
+// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE
+
+#ifndef CPPTL_JSON_H_INCLUDED
+#define CPPTL_JSON_H_INCLUDED
+
+#if !defined(JSON_IS_AMALGAMATION)
+#include "forwards.h"
+#endif // if !defined(JSON_IS_AMALGAMATION)
+#include
+#include
+#include
+
+#ifndef JSON_USE_CPPTL_SMALLMAP
+#include