diff --git a/.github/workflows/build-linux-clang.yml b/.github/workflows/build-linux-clang.yml index 883d3f5..d3588fd 100644 --- a/.github/workflows/build-linux-clang.yml +++ b/.github/workflows/build-linux-clang.yml @@ -16,6 +16,8 @@ jobs: - name: "Setup clang" uses: egor-tensin/setup-clang@v1 + with: + version: 12 - name: "Setup cmake" run: cmake --version diff --git a/.github/workflows/build-linux-gcc.yml b/.github/workflows/build-linux-gcc.yml index 37b0bd9..f18664a 100644 --- a/.github/workflows/build-linux-gcc.yml +++ b/.github/workflows/build-linux-gcc.yml @@ -16,6 +16,8 @@ jobs: - name: "Setup gcc" uses: egor-tensin/setup-gcc@v1 + with: + version: 11 - name: "Setup cmake" run: cmake --version diff --git a/.gitlinks b/.gitlinks index c36cf92..38fae86 100644 --- a/.gitlinks +++ b/.gitlinks @@ -6,6 +6,7 @@ CppCommon modules/CppCommon https://github.com/chronoxor/CppCommon.git master flatbuffers modules/flatbuffers https://github.com/google/flatbuffers.git master protobuf modules/protobuf https://github.com/google/protobuf.git 21.x rapidjson modules/rapidjson https://github.com/miloyip/rapidjson.git master +zpp_bits modules/zpp_bits https://github.com/eyalz800/zpp_bits.git v4.4.11 # Scripts build build https://github.com/chronoxor/CppBuildScripts.git master diff --git a/CMakeLists.txt b/CMakeLists.txt index 12fcafd..384d001 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,9 @@ endif() # CMake module path set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") +# C++20 +set(CMAKE_CXX_STANDARD 20) + # Compiler features include(SetCompilerFeatures) include(SetCompilerWarnings) @@ -162,7 +165,11 @@ if(NOT CPPSERIALIZATION_MODULE) string(REGEX REPLACE "(.*)\\.cpp" "\\1" EXAMPLE_NAME ${EXAMPLE_SOURCE_FILE}) set(EXAMPLE_TARGET "cppserialization-example-${EXAMPLE_NAME}") add_executable(${EXAMPLE_TARGET} ${EXAMPLE_HEADER_FILES} ${EXAMPLE_INLINE_FILES} "examples/${EXAMPLE_SOURCE_FILE}") - set_target_properties(${EXAMPLE_TARGET} PROPERTIES COMPILE_FLAGS "${PEDANTIC_COMPILE_FLAGS}" FOLDER "examples") + if(MSVC) + set_target_properties(${EXAMPLE_TARGET} PROPERTIES COMPILE_FLAGS "${PEDANTIC_COMPILE_FLAGS}" FOLDER "examples") + else() + set_target_properties(${EXAMPLE_TARGET} PROPERTIES COMPILE_FLAGS "${PEDANTIC_COMPILE_FLAGS} -Wno-shadow" FOLDER "examples") + endif() target_link_libraries(${EXAMPLE_TARGET} ${LINKLIBS}) list(APPEND INSTALL_TARGETS ${EXAMPLE_TARGET}) list(APPEND INSTALL_TARGETS_PDB ${EXAMPLE_TARGET}) @@ -176,7 +183,11 @@ if(NOT CPPSERIALIZATION_MODULE) string(REGEX REPLACE "(.*)\\.cpp" "\\1" BENCHMARK_NAME ${BENCHMARK_SOURCE_FILE}) set(BENCHMARK_TARGET "cppserialization-performance-${BENCHMARK_NAME}") add_executable(${BENCHMARK_TARGET} ${BENCHMARK_HEADER_FILES} ${BENCHMARK_INLINE_FILES} "performance/${BENCHMARK_SOURCE_FILE}") - set_target_properties(${BENCHMARK_TARGET} PROPERTIES COMPILE_FLAGS "${PEDANTIC_COMPILE_FLAGS}" FOLDER "performance") + if(MSVC) + set_target_properties(${BENCHMARK_TARGET} PROPERTIES COMPILE_FLAGS "${PEDANTIC_COMPILE_FLAGS}" FOLDER "performance") + else() + set_target_properties(${BENCHMARK_TARGET} PROPERTIES COMPILE_FLAGS "${PEDANTIC_COMPILE_FLAGS} -Wno-shadow" FOLDER "performance") + endif() target_link_libraries(${BENCHMARK_TARGET} ${LINKLIBS} cppbenchmark) list(APPEND INSTALL_TARGETS ${BENCHMARK_TARGET}) list(APPEND INSTALL_TARGETS_PDB ${BENCHMARK_TARGET}) @@ -187,7 +198,11 @@ if(NOT CPPSERIALIZATION_MODULE) file(GLOB TESTS_INLINE_FILES "tests/*.inl") file(GLOB TESTS_SOURCE_FILES "tests/*.cpp") add_executable(cppserialization-tests ${TESTS_HEADER_FILES} ${TESTS_INLINE_FILES} ${TESTS_SOURCE_FILES} ${Catch2}) - set_target_properties(cppserialization-tests PROPERTIES COMPILE_FLAGS "${PEDANTIC_COMPILE_FLAGS}" FOLDER "tests") + if (MSVC) + set_target_properties(cppserialization-tests PROPERTIES COMPILE_FLAGS "${PEDANTIC_COMPILE_FLAGS}" FOLDER "tests") + else() + set_target_properties(cppserialization-tests PROPERTIES COMPILE_FLAGS "${PEDANTIC_COMPILE_FLAGS} -Wno-shadow" FOLDER "tests") + endif() target_include_directories(cppserialization-tests PRIVATE ${Catch2}) target_link_libraries(cppserialization-tests ${LINKLIBS}) list(APPEND INSTALL_TARGETS cppserialization-tests) diff --git a/documents/html/annotated.html b/documents/html/annotated.html new file mode 100644 index 0000000..6ecd316 --- /dev/null +++ b/documents/html/annotated.html @@ -0,0 +1,88 @@ + + + + + + + +CppSerialization: Class List + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 123]
+ + + + + + +
 NCppSerializationC++ Serialization project definitions
 NJSONJSON definitions
 CDeserializerJSON deserializer
 CParserJSON parser
 CSerializerJSON serializer
 CSerializationExceptionSerialization exception
+
+
+ + + + diff --git a/documents/html/bc_s.png b/documents/html/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/documents/html/bc_s.png differ diff --git a/documents/html/bdwn.png b/documents/html/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/documents/html/bdwn.png differ diff --git a/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer-members.html b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer-members.html new file mode 100644 index 0000000..06868dc --- /dev/null +++ b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer-members.html @@ -0,0 +1,103 @@ + + + + + + + +CppSerialization: Member List + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CppSerialization::JSON::Deserializer Member List
+
+
+ +

This is the complete list of members for CppSerialization::JSON::Deserializer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
Deserializer()=deleteCppSerialization::JSON::Deserializer
Deserializer(const Deserializer &)=deleteCppSerialization::JSON::Deserializer
Deserializer(Deserializer &&)=deleteCppSerialization::JSON::Deserializer
Find(const JSON &json, const char *key, bool &value)CppSerialization::JSON::Deserializerinlinestatic
Find(const JSON &json, const char *key, int &value)CppSerialization::JSON::Deserializerinlinestatic
Find(const JSON &json, const char *key, unsigned &value)CppSerialization::JSON::Deserializerinlinestatic
Find(const JSON &json, const char *key, int64_t &value)CppSerialization::JSON::Deserializerinlinestatic
Find(const JSON &json, const char *key, uint64_t &value)CppSerialization::JSON::Deserializerinlinestatic
Find(const JSON &json, const char *key, double &value)CppSerialization::JSON::Deserializerinlinestatic
Find(const JSON &json, const char *key, char *value, size_t size)CppSerialization::JSON::Deserializerinlinestatic
Find(const JSON &json, const char *key, std::string &value)CppSerialization::JSON::Deserializerinlinestatic
Find(const JSON &json, const char *key, char(&value)[N])CppSerialization::JSON::Deserializerinlinestatic
FindArray(const JSON &json, const char *key, const std::function< void(const Value &)> &handler)CppSerialization::JSON::Deserializerinlinestatic
FindArray(const JSON &json, const char *key, const std::function< void(size_t)> &initialize, const std::function< void(const Value &)> &handler)CppSerialization::JSON::Deserializerinlinestatic
FindObject(const JSON &json, const char *key, const std::function< void(const Value::ConstObject &)> &handler)CppSerialization::JSON::Deserializerinlinestatic
operator=(const Deserializer &)=deleteCppSerialization::JSON::Deserializer
operator=(Deserializer &&)=deleteCppSerialization::JSON::Deserializer
~Deserializer()=deleteCppSerialization::JSON::Deserializer
+ + + + diff --git a/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html new file mode 100644 index 0000000..b811c94 --- /dev/null +++ b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html @@ -0,0 +1,911 @@ + + + + + + + +CppSerialization: CppSerialization::JSON::Deserializer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Static Public Member Functions | +List of all members
+
+
CppSerialization::JSON::Deserializer Class Reference
+
+
+ +

JSON deserializer. + More...

+ +

#include <deserializer.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

 Deserializer ()=delete
 
 Deserializer (const Deserializer &)=delete
 
 Deserializer (Deserializer &&)=delete
 
 ~Deserializer ()=delete
 
Deserializeroperator= (const Deserializer &)=delete
 
Deserializeroperator= (Deserializer &&)=delete
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

template<typename JSON >
static bool Find (const JSON &json, const char *key, bool &value)
 Try to get the boolean key/value pair. More...
 
template<typename JSON >
static bool Find (const JSON &json, const char *key, int &value)
 Try to get the integer key/value pair. More...
 
template<typename JSON >
static bool Find (const JSON &json, const char *key, unsigned &value)
 Try to get the unsigned key/value pair. More...
 
template<typename JSON >
static bool Find (const JSON &json, const char *key, int64_t &value)
 Try to get the 64-bit integer key/value pair. More...
 
template<typename JSON >
static bool Find (const JSON &json, const char *key, uint64_t &value)
 Try to get the 64-bit unsigned key/value pair. More...
 
template<typename JSON >
static bool Find (const JSON &json, const char *key, double &value)
 Try to get the double key/value pair. More...
 
template<typename JSON >
static bool Find (const JSON &json, const char *key, char *value, size_t size)
 Try to get the C-string key/value pair with a given size. More...
 
template<typename JSON >
static bool Find (const JSON &json, const char *key, std::string &value)
 Try to get the string key/value pair. More...
 
template<typename JSON , std::size_t N>
static bool Find (const JSON &json, const char *key, char(&value)[N])
 Try to get the fixed string array key/value pair. More...
 
template<typename JSON >
static bool FindArray (const JSON &json, const char *key, const std::function< void(const Value &)> &handler)
 Try to get the array key/value pair. More...
 
template<typename JSON >
static bool FindArray (const JSON &json, const char *key, const std::function< void(size_t)> &initialize, const std::function< void(const Value &)> &handler)
 Try to get the array key/value pair with array initialize handler. More...
 
template<typename JSON >
static bool FindObject (const JSON &json, const char *key, const std::function< void(const Value::ConstObject &)> &handler)
 Try to get the object key/value pair. More...
 
+

Detailed Description

+

JSON deserializer.

+

JSON deserializer is used to deserialize objects from the JSON document.

+ +

Definition at line 25 of file deserializer.h.

+

Constructor & Destructor Documentation

+ +

◆ Deserializer() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
CppSerialization::JSON::Deserializer::Deserializer ()
+
+delete
+
+ +
+
+ +

◆ Deserializer() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
CppSerialization::JSON::Deserializer::Deserializer (const Deserializer)
+
+delete
+
+ +
+
+ +

◆ Deserializer() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
CppSerialization::JSON::Deserializer::Deserializer (Deserializer && )
+
+delete
+
+ +
+
+ +

◆ ~Deserializer()

+ +
+
+ + + + + +
+ + + + + + + +
CppSerialization::JSON::Deserializer::~Deserializer ()
+
+delete
+
+ +
+
+

Member Function Documentation

+ +

◆ Find() [1/9]

+ +
+
+
+template<typename JSON >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CppSerialization::JSON::Deserializer::Find (const JSON & json,
const char * key,
bool & value 
)
+
+inlinestatic
+
+ +

Try to get the boolean key/value pair.

+ +

Definition at line 13 of file deserializer.inl.

+ +
+
+ +

◆ Find() [2/9]

+ +
+
+
+template<typename JSON >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool CppSerialization::JSON::Deserializer::Find (const JSON & json,
const char * key,
char * value,
size_t size 
)
+
+inlinestatic
+
+ +

Try to get the C-string key/value pair with a given size.

+ +

Definition at line 115 of file deserializer.inl.

+ +
+
+ +

◆ Find() [3/9]

+ +
+
+
+template<typename JSON , std::size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CppSerialization::JSON::Deserializer::Find (const JSON & json,
const char * key,
char(&) value[N] 
)
+
+inlinestatic
+
+ +

Try to get the fixed string array key/value pair.

+ +

Definition at line 153 of file deserializer.inl.

+ +
+
+ +

◆ Find() [4/9]

+ +
+
+
+template<typename JSON >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CppSerialization::JSON::Deserializer::Find (const JSON & json,
const char * key,
double & value 
)
+
+inlinestatic
+
+ +

Try to get the double key/value pair.

+ +

Definition at line 98 of file deserializer.inl.

+ +
+
+ +

◆ Find() [5/9]

+ +
+
+
+template<typename JSON >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CppSerialization::JSON::Deserializer::Find (const JSON & json,
const char * key,
int & value 
)
+
+inlinestatic
+
+ +

Try to get the integer key/value pair.

+ +

Definition at line 30 of file deserializer.inl.

+ +
+
+ +

◆ Find() [6/9]

+ +
+
+
+template<typename JSON >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CppSerialization::JSON::Deserializer::Find (const JSON & json,
const char * key,
int64_t & value 
)
+
+inlinestatic
+
+ +

Try to get the 64-bit integer key/value pair.

+ +

Definition at line 64 of file deserializer.inl.

+ +
+
+ +

◆ Find() [7/9]

+ +
+
+
+template<typename JSON >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CppSerialization::JSON::Deserializer::Find (const JSON & json,
const char * key,
std::string & value 
)
+
+inlinestatic
+
+ +

Try to get the string key/value pair.

+ +

Definition at line 136 of file deserializer.inl.

+ +
+
+ +

◆ Find() [8/9]

+ +
+
+
+template<typename JSON >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CppSerialization::JSON::Deserializer::Find (const JSON & json,
const char * key,
uint64_t & value 
)
+
+inlinestatic
+
+ +

Try to get the 64-bit unsigned key/value pair.

+ +

Definition at line 81 of file deserializer.inl.

+ +
+
+ +

◆ Find() [9/9]

+ +
+
+
+template<typename JSON >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CppSerialization::JSON::Deserializer::Find (const JSON & json,
const char * key,
unsigned & value 
)
+
+inlinestatic
+
+ +

Try to get the unsigned key/value pair.

+ +

Definition at line 47 of file deserializer.inl.

+ +
+
+ +

◆ FindArray() [1/2]

+ +
+
+
+template<typename JSON >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CppSerialization::JSON::Deserializer::FindArray (const JSON & json,
const char * key,
const std::function< void(const Value &)> & handler 
)
+
+inlinestatic
+
+ +

Try to get the array key/value pair.

+ +

Definition at line 174 of file deserializer.inl.

+ +
+
+ +

◆ FindArray() [2/2]

+ +
+
+
+template<typename JSON >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool CppSerialization::JSON::Deserializer::FindArray (const JSON & json,
const char * key,
const std::function< void(size_t)> & initialize,
const std::function< void(const Value &)> & handler 
)
+
+inlinestatic
+
+ +

Try to get the array key/value pair with array initialize handler.

+ +

Definition at line 181 of file deserializer.inl.

+ +
+
+ +

◆ FindObject()

+ +
+
+
+template<typename JSON >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool CppSerialization::JSON::Deserializer::FindObject (const JSON & json,
const char * key,
const std::function< void(const Value::ConstObject &)> & handler 
)
+
+inlinestatic
+
+ +

Try to get the object key/value pair.

+ +

Definition at line 205 of file deserializer.inl.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Deserializer& CppSerialization::JSON::Deserializer::operator= (const Deserializer)
+
+delete
+
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Deserializer& CppSerialization::JSON::Deserializer::operator= (Deserializer && )
+
+delete
+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_parser-members.html b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_parser-members.html new file mode 100644 index 0000000..6dd157d --- /dev/null +++ b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_parser-members.html @@ -0,0 +1,96 @@ + + + + + + + +CppSerialization: Member List + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CppSerialization::JSON::Parser Member List
+
+
+ +

This is the complete list of members for CppSerialization::JSON::Parser, including all inherited members.

+ + + + + + + + + + + + +
operator=(const Parser &)=deleteCppSerialization::JSON::Parser
operator=(Parser &&)=deleteCppSerialization::JSON::Parser
Parse(const char *source)CppSerialization::JSON::Parserstatic
Parse(const char *source, size_t size)CppSerialization::JSON::Parserstatic
Parse(const std::string &source)CppSerialization::JSON::Parserstatic
ParseInPlace(char *source)CppSerialization::JSON::Parserstatic
Parser()=deleteCppSerialization::JSON::Parser
Parser(const Parser &)=deleteCppSerialization::JSON::Parser
Parser(Parser &&)=deleteCppSerialization::JSON::Parser
ParseStream(InputStream &stream)CppSerialization::JSON::Parserinlinestatic
~Parser()=deleteCppSerialization::JSON::Parser
+ + + + diff --git a/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html new file mode 100644 index 0000000..5dece95 --- /dev/null +++ b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html @@ -0,0 +1,454 @@ + + + + + + + +CppSerialization: CppSerialization::JSON::Parser Class Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +Static Public Member Functions | +List of all members
+
+
CppSerialization::JSON::Parser Class Reference
+
+
+ +

JSON parser. + More...

+ +

#include <parser.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

 Parser ()=delete
 
 Parser (const Parser &)=delete
 
 Parser (Parser &&)=delete
 
 ~Parser ()=delete
 
Parseroperator= (const Parser &)=delete
 
Parseroperator= (Parser &&)=delete
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

template<typename InputStream >
static Document ParseStream (InputStream &stream)
 Parse the input stream. More...
 
static Document Parse (const char *source)
 Parse the C-string. More...
 
static Document Parse (const char *source, size_t size)
 Parse the C-string with a given size. More...
 
static Document Parse (const std::string &source)
 Parse the string. More...
 
static Document ParseInPlace (char *source)
 Parse the in-place C-string in mutable mode. More...
 
+

Detailed Description

+

JSON parser.

+

JSON parser is used to parse JSON from the given source (stream, string) and create a corresponding DOM document.

+ +

Definition at line 22 of file parser.h.

+

Constructor & Destructor Documentation

+ +

◆ Parser() [1/3]

+ +
+
+ + + + + +
+ + + + + + + +
CppSerialization::JSON::Parser::Parser ()
+
+delete
+
+ +
+
+ +

◆ Parser() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
CppSerialization::JSON::Parser::Parser (const Parser)
+
+delete
+
+ +
+
+ +

◆ Parser() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
CppSerialization::JSON::Parser::Parser (Parser && )
+
+delete
+
+ +
+
+ +

◆ ~Parser()

+ +
+
+ + + + + +
+ + + + + + + +
CppSerialization::JSON::Parser::~Parser ()
+
+delete
+
+ +
+
+

Member Function Documentation

+ +

◆ operator=() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Parser& CppSerialization::JSON::Parser::operator= (const Parser)
+
+delete
+
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
Parser& CppSerialization::JSON::Parser::operator= (Parser && )
+
+delete
+
+ +
+
+ +

◆ Parse() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + +
Document CppSerialization::JSON::Parser::Parse (const char * source)
+
+static
+
+ +

Parse the C-string.

+ +

Definition at line 14 of file parser.cpp.

+ +
+
+ +

◆ Parse() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
Document CppSerialization::JSON::Parser::Parse (const char * source,
size_t size 
)
+
+static
+
+ +

Parse the C-string with a given size.

+ +

Definition at line 20 of file parser.cpp.

+ +
+
+ +

◆ Parse() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
Document CppSerialization::JSON::Parser::Parse (const std::string & source)
+
+static
+
+ +

Parse the string.

+ +

Definition at line 26 of file parser.cpp.

+ +
+
+ +

◆ ParseInPlace()

+ +
+
+ + + + + +
+ + + + + + + + +
Document CppSerialization::JSON::Parser::ParseInPlace (char * source)
+
+static
+
+ +

Parse the in-place C-string in mutable mode.

+ +

Definition at line 32 of file parser.cpp.

+ +
+
+ +

◆ ParseStream()

+ +
+
+
+template<typename InputStream >
+ + + + + +
+ + + + + + + + +
Document CppSerialization::JSON::Parser::ParseStream (InputStream & stream)
+
+inlinestatic
+
+ +

Parse the input stream.

+ +

Definition at line 13 of file parser.inl.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_serializer-members.html b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_serializer-members.html new file mode 100644 index 0000000..93931a7 --- /dev/null +++ b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_serializer-members.html @@ -0,0 +1,122 @@ + + + + + + + +CppSerialization: Member List + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CppSerialization::JSON::Serializer< OutputStream > Member List
+
+
+ +

This is the complete list of members for CppSerialization::JSON::Serializer< OutputStream >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
EndArray()CppSerialization::JSON::Serializer< OutputStream >inline
EndObject()CppSerialization::JSON::Serializer< OutputStream >inline
Key(const char *key)CppSerialization::JSON::Serializer< OutputStream >inline
Key(const char *key, size_t size)CppSerialization::JSON::Serializer< OutputStream >inline
Key(const std::string &key)CppSerialization::JSON::Serializer< OutputStream >inline
Key(const char(&key)[N])CppSerialization::JSON::Serializer< OutputStream >inline
operator=(const Serializer &)=deleteCppSerialization::JSON::Serializer< OutputStream >
operator=(Serializer &&)=defaultCppSerialization::JSON::Serializer< OutputStream >
Pair(const char *key, std::nullptr_t value)CppSerialization::JSON::Serializer< OutputStream >inline
Pair(const char *key, bool value)CppSerialization::JSON::Serializer< OutputStream >inline
Pair(const char *key, int value)CppSerialization::JSON::Serializer< OutputStream >inline
Pair(const char *key, unsigned value)CppSerialization::JSON::Serializer< OutputStream >inline
Pair(const char *key, int64_t value)CppSerialization::JSON::Serializer< OutputStream >inline
Pair(const char *key, uint64_t value)CppSerialization::JSON::Serializer< OutputStream >inline
Pair(const char *key, double value)CppSerialization::JSON::Serializer< OutputStream >inline
Pair(const char *key, const char *value)CppSerialization::JSON::Serializer< OutputStream >inline
Pair(const char *key, const char *value, size_t size)CppSerialization::JSON::Serializer< OutputStream >inline
Pair(const char *key, const std::string &value)CppSerialization::JSON::Serializer< OutputStream >inline
Pair(const char *key, const char(&value)[N])CppSerialization::JSON::Serializer< OutputStream >inline
Serializer()=defaultCppSerialization::JSON::Serializer< OutputStream >
Serializer(OutputStream &stream)CppSerialization::JSON::Serializer< OutputStream >inlineexplicit
Serializer(const Serializer &)=deleteCppSerialization::JSON::Serializer< OutputStream >
Serializer(Serializer &&)=defaultCppSerialization::JSON::Serializer< OutputStream >
StartArray()CppSerialization::JSON::Serializer< OutputStream >inline
StartObject()CppSerialization::JSON::Serializer< OutputStream >inline
Value(std::nullptr_t value)CppSerialization::JSON::Serializer< OutputStream >inline
Value(bool value)CppSerialization::JSON::Serializer< OutputStream >inline
Value(int value)CppSerialization::JSON::Serializer< OutputStream >inline
Value(unsigned value)CppSerialization::JSON::Serializer< OutputStream >inline
Value(int64_t value)CppSerialization::JSON::Serializer< OutputStream >inline
Value(uint64_t value)CppSerialization::JSON::Serializer< OutputStream >inline
Value(double value)CppSerialization::JSON::Serializer< OutputStream >inline
Value(const char *value)CppSerialization::JSON::Serializer< OutputStream >inline
Value(const char *value, size_t size)CppSerialization::JSON::Serializer< OutputStream >inline
Value(const std::string &value)CppSerialization::JSON::Serializer< OutputStream >inline
Value(const char(&value)[N])CppSerialization::JSON::Serializer< OutputStream >inline
~Serializer()=defaultCppSerialization::JSON::Serializer< OutputStream >
+ + + + diff --git a/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html new file mode 100644 index 0000000..3cff50f --- /dev/null +++ b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html @@ -0,0 +1,1503 @@ + + + + + + + +CppSerialization: CppSerialization::JSON::Serializer< OutputStream > Class Template Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Public Member Functions | +List of all members
+
+
CppSerialization::JSON::Serializer< OutputStream > Class Template Reference
+
+
+ +

JSON serializer. + More...

+ +

#include <serializer.h>

+
+Inheritance diagram for CppSerialization::JSON::Serializer< OutputStream >:
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Serializer ()=default
 
 Serializer (OutputStream &stream)
 
 Serializer (const Serializer &)=delete
 
 Serializer (Serializer &&)=default
 
 ~Serializer ()=default
 
Serializeroperator= (const Serializer &)=delete
 
Serializeroperator= (Serializer &&)=default
 
void StartObject ()
 Start new object. More...
 
void EndObject ()
 End the current object. More...
 
void StartArray ()
 Start new array. More...
 
void EndArray ()
 End the current array. More...
 
void Key (const char *key)
 Put the C-string key. More...
 
void Key (const char *key, size_t size)
 Put the C-string key with a given size. More...
 
void Key (const std::string &key)
 Put the string key. More...
 
template<std::size_t N>
void Key (const char(&key)[N])
 Put the fixed string array key. More...
 
void Value (std::nullptr_t value)
 Put the null value. More...
 
void Value (bool value)
 Put the boolean value. More...
 
void Value (int value)
 Put the integer value. More...
 
void Value (unsigned value)
 Put the unsigned integer value. More...
 
void Value (int64_t value)
 Put the 64-bit integer value. More...
 
void Value (uint64_t value)
 Put the 64-bit unsigned integer value. More...
 
void Value (double value)
 Put the double value. More...
 
void Value (const char *value)
 Put the C-string value. More...
 
void Value (const char *value, size_t size)
 Put the C-string value with a given size. More...
 
void Value (const std::string &value)
 Put the string value. More...
 
template<std::size_t N>
void Value (const char(&value)[N])
 Put the fixed string array value. More...
 
void Pair (const char *key, std::nullptr_t value)
 Put the null key/value pair. More...
 
void Pair (const char *key, bool value)
 Put the boolean key/value pair. More...
 
void Pair (const char *key, int value)
 Put the integer key/value pair. More...
 
void Pair (const char *key, unsigned value)
 Put the unsigned integer key/value pair. More...
 
void Pair (const char *key, int64_t value)
 Put the 64-bit integer key/value pair. More...
 
void Pair (const char *key, uint64_t value)
 Put the 64-bit unsigned integer key/value pair. More...
 
void Pair (const char *key, double value)
 Put the double key/value pair. More...
 
void Pair (const char *key, const char *value)
 Put the C-string key/value pair. More...
 
void Pair (const char *key, const char *value, size_t size)
 Put the C-string key/value pair with a given size. More...
 
void Pair (const char *key, const std::string &value)
 Put the string key/value pair. More...
 
template<std::size_t N>
void Pair (const char *key, const char(&value)[N])
 Put the fixed string array key/value pair. More...
 
+

Detailed Description

+

template<class OutputStream>
+class CppSerialization::JSON::Serializer< OutputStream >

+ +

JSON serializer.

+

JSON serializer is parametrized with an output stream and is used to serialize objects into JSON format.

+ +

Definition at line 23 of file serializer.h.

+

Constructor & Destructor Documentation

+ +

◆ Serializer() [1/4]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + +
CppSerialization::JSON::Serializer< OutputStream >::Serializer ()
+
+default
+
+ +
+
+ +

◆ Serializer() [2/4]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
CppSerialization::JSON::Serializer< OutputStream >::Serializer (OutputStream & stream)
+
+inlineexplicit
+
+ +

Definition at line 27 of file serializer.h.

+ +
+
+ +

◆ Serializer() [3/4]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
CppSerialization::JSON::Serializer< OutputStream >::Serializer (const Serializer< OutputStream > & )
+
+delete
+
+ +
+
+ +

◆ Serializer() [4/4]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
CppSerialization::JSON::Serializer< OutputStream >::Serializer (Serializer< OutputStream > && )
+
+default
+
+ +
+
+ +

◆ ~Serializer()

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + +
CppSerialization::JSON::Serializer< OutputStream >::~Serializer ()
+
+default
+
+ +
+
+

Member Function Documentation

+ +

◆ EndArray()

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + +
void CppSerialization::JSON::Serializer< OutputStream >::EndArray
+
+inline
+
+ +

End the current array.

+ +

Definition at line 34 of file serializer.inl.

+ +
+
+ +

◆ EndObject()

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + +
void CppSerialization::JSON::Serializer< OutputStream >::EndObject
+
+inline
+
+ +

End the current object.

+ +

Definition at line 20 of file serializer.inl.

+ +
+
+ +

◆ Key() [1/4]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Key (const char * key)
+
+inline
+
+ +

Put the C-string key.

+ +

Definition at line 41 of file serializer.inl.

+ +
+
+ +

◆ Key() [2/4]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Key (const char * key,
size_t size 
)
+
+inline
+
+ +

Put the C-string key with a given size.

+ +

Definition at line 48 of file serializer.inl.

+ +
+
+ +

◆ Key() [3/4]

+ +
+
+
+template<class OutputStream >
+
+template<std::size_t N>
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Key (const char(&) key[N])
+
+inline
+
+ +

Put the fixed string array key.

+ +

Definition at line 63 of file serializer.inl.

+ +
+
+ +

◆ Key() [4/4]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Key (const std::string & key)
+
+inline
+
+ +

Put the string key.

+ +

Definition at line 55 of file serializer.inl.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
Serializer& CppSerialization::JSON::Serializer< OutputStream >::operator= (const Serializer< OutputStream > & )
+
+delete
+
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
Serializer& CppSerialization::JSON::Serializer< OutputStream >::operator= (Serializer< OutputStream > && )
+
+default
+
+ +
+
+ +

◆ Pair() [1/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Pair (const char * key,
bool value 
)
+
+inline
+
+ +

Put the boolean key/value pair.

+ +

Definition at line 83 of file serializer.h.

+ +
+
+ +

◆ Pair() [2/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Pair (const char * key,
const char * value 
)
+
+inline
+
+ +

Put the C-string key/value pair.

+ +

Definition at line 101 of file serializer.h.

+ +
+
+ +

◆ Pair() [3/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Pair (const char * key,
const char * value,
size_t size 
)
+
+inline
+
+ +

Put the C-string key/value pair with a given size.

+ +

Definition at line 104 of file serializer.h.

+ +
+
+ +

◆ Pair() [4/11]

+ +
+
+
+template<class OutputStream >
+
+template<std::size_t N>
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Pair (const char * key,
const char(&) value[N] 
)
+
+inline
+
+ +

Put the fixed string array key/value pair.

+ +

Definition at line 111 of file serializer.h.

+ +
+
+ +

◆ Pair() [5/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Pair (const char * key,
const std::string & value 
)
+
+inline
+
+ +

Put the string key/value pair.

+ +

Definition at line 107 of file serializer.h.

+ +
+
+ +

◆ Pair() [6/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Pair (const char * key,
double value 
)
+
+inline
+
+ +

Put the double key/value pair.

+ +

Definition at line 98 of file serializer.h.

+ +
+
+ +

◆ Pair() [7/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Pair (const char * key,
int value 
)
+
+inline
+
+ +

Put the integer key/value pair.

+ +

Definition at line 86 of file serializer.h.

+ +
+
+ +

◆ Pair() [8/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Pair (const char * key,
int64_t value 
)
+
+inline
+
+ +

Put the 64-bit integer key/value pair.

+ +

Definition at line 92 of file serializer.h.

+ +
+
+ +

◆ Pair() [9/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Pair (const char * key,
std::nullptr_t value 
)
+
+inline
+
+ +

Put the null key/value pair.

+ +

Definition at line 80 of file serializer.h.

+ +
+
+ +

◆ Pair() [10/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Pair (const char * key,
uint64_t value 
)
+
+inline
+
+ +

Put the 64-bit unsigned integer key/value pair.

+ +

Definition at line 95 of file serializer.h.

+ +
+
+ +

◆ Pair() [11/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Pair (const char * key,
unsigned value 
)
+
+inline
+
+ +

Put the unsigned integer key/value pair.

+ +

Definition at line 89 of file serializer.h.

+ +
+
+ +

◆ StartArray()

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + +
void CppSerialization::JSON::Serializer< OutputStream >::StartArray
+
+inline
+
+ +

Start new array.

+ +

Definition at line 27 of file serializer.inl.

+ +
+
+ +

◆ StartObject()

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + +
void CppSerialization::JSON::Serializer< OutputStream >::StartObject
+
+inline
+
+ +

Start new object.

+ +

Definition at line 13 of file serializer.inl.

+ +
+
+ +

◆ Value() [1/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Value (bool value)
+
+inline
+
+ +

Put the boolean value.

+ +

Definition at line 77 of file serializer.inl.

+ +
+
+ +

◆ Value() [2/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Value (const char * value)
+
+inline
+
+ +

Put the C-string value.

+ +

Definition at line 119 of file serializer.inl.

+ +
+
+ +

◆ Value() [3/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Value (const char * value,
size_t size 
)
+
+inline
+
+ +

Put the C-string value with a given size.

+ +

Definition at line 126 of file serializer.inl.

+ +
+
+ +

◆ Value() [4/11]

+ +
+
+
+template<class OutputStream >
+
+template<std::size_t N>
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Value (const char(&) value[N])
+
+inline
+
+ +

Put the fixed string array value.

+ +

Definition at line 141 of file serializer.inl.

+ +
+
+ +

◆ Value() [5/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Value (const std::string & value)
+
+inline
+
+ +

Put the string value.

+ +

Definition at line 133 of file serializer.inl.

+ +
+
+ +

◆ Value() [6/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Value (double value)
+
+inline
+
+ +

Put the double value.

+ +

Definition at line 112 of file serializer.inl.

+ +
+
+ +

◆ Value() [7/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Value (int value)
+
+inline
+
+ +

Put the integer value.

+ +

Definition at line 84 of file serializer.inl.

+ +
+
+ +

◆ Value() [8/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Value (int64_t value)
+
+inline
+
+ +

Put the 64-bit integer value.

+ +

Definition at line 98 of file serializer.inl.

+ +
+
+ +

◆ Value() [9/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Value (std::nullptr_t value)
+
+inline
+
+ +

Put the null value.

+ +

Definition at line 70 of file serializer.inl.

+ +
+
+ +

◆ Value() [10/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Value (uint64_t value)
+
+inline
+
+ +

Put the 64-bit unsigned integer value.

+ +

Definition at line 105 of file serializer.inl.

+ +
+
+ +

◆ Value() [11/11]

+ +
+
+
+template<class OutputStream >
+ + + + + +
+ + + + + + + + +
void CppSerialization::JSON::Serializer< OutputStream >::Value (unsigned value)
+
+inline
+
+ +

Put the unsigned integer value.

+ +

Definition at line 91 of file serializer.inl.

+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.png b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.png new file mode 100644 index 0000000..4a89684 Binary files /dev/null and b/documents/html/class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.png differ diff --git a/documents/html/class_cpp_serialization_1_1_serialization_exception.html b/documents/html/class_cpp_serialization_1_1_serialization_exception.html new file mode 100644 index 0000000..2d1d8f4 --- /dev/null +++ b/documents/html/class_cpp_serialization_1_1_serialization_exception.html @@ -0,0 +1,100 @@ + + + + + + + +CppSerialization: CppSerialization::SerializationException Class Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CppSerialization::SerializationException Class Reference
+
+
+ +

Serialization exception. + More...

+ +

#include <exceptions.h>

+
+Inheritance diagram for CppSerialization::SerializationException:
+
+
+ +
+

Detailed Description

+

Serialization exception.

+ +

Definition at line 17 of file exceptions.h.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/documents/html/class_cpp_serialization_1_1_serialization_exception.png b/documents/html/class_cpp_serialization_1_1_serialization_exception.png new file mode 100644 index 0000000..43e5d52 Binary files /dev/null and b/documents/html/class_cpp_serialization_1_1_serialization_exception.png differ diff --git a/documents/html/classes.html b/documents/html/classes.html new file mode 100644 index 0000000..affffc7 --- /dev/null +++ b/documents/html/classes.html @@ -0,0 +1,96 @@ + + + + + + + +CppSerialization: Class Index + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
d | p | s
+ + + + + + + + + + + + +
  d  
+
  p  
+
  s  
+
Serializer (CppSerialization::JSON)   
Deserializer (CppSerialization::JSON)   Parser (CppSerialization::JSON)   SerializationException (CppSerialization)   
+
d | p | s
+
+ + + + diff --git a/documents/html/closed.png b/documents/html/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/documents/html/closed.png differ diff --git a/documents/html/deserializer_8h.html b/documents/html/deserializer_8h.html new file mode 100644 index 0000000..fb57be1 --- /dev/null +++ b/documents/html/deserializer_8h.html @@ -0,0 +1,118 @@ + + + + + + + +CppSerialization: include/serialization/json/deserializer.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Classes | +Namespaces
+
+
deserializer.h File Reference
+
+
+ +

JSON deserializer definition. +More...

+
#include "json.h"
+#include <algorithm>
+#include <cassert>
+#include <functional>
+#include "deserializer.inl"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  CppSerialization::JSON::Deserializer
 JSON deserializer. More...
 
+ + + + + + + +

+Namespaces

 CppSerialization
 C++ Serialization project definitions.
 
 CppSerialization::JSON
 JSON definitions.
 
+

Detailed Description

+

JSON deserializer definition.

+
Author
Ivan Shynkarenka
+
Date
27.02.2017
+ + +

Definition in file deserializer.h.

+
+ + + + diff --git a/documents/html/deserializer_8h_source.html b/documents/html/deserializer_8h_source.html new file mode 100644 index 0000000..708f7e4 --- /dev/null +++ b/documents/html/deserializer_8h_source.html @@ -0,0 +1,151 @@ + + + + + + + +CppSerialization: include/serialization/json/deserializer.h Source File + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
deserializer.h
+
+
+Go to the documentation of this file.
1 
+
9 #ifndef CPPSERIALIZATION_JSON_DESERIALIZER_H
+
10 #define CPPSERIALIZATION_JSON_DESERIALIZER_H
+
11 
+
12 #include "json.h"
+
13 
+
14 #include <algorithm>
+
15 #include <cassert>
+
16 #include <functional>
+
17 
+
18 namespace CppSerialization {
+
19 namespace JSON {
+
20 
+
22 
+ +
26 {
+
27 public:
+
28  Deserializer() = delete;
+
29  Deserializer(const Deserializer&) = delete;
+
30  Deserializer(Deserializer&&) = delete;
+
31  ~Deserializer() = delete;
+
32 
+
33  Deserializer& operator=(const Deserializer&) = delete;
+
34  Deserializer& operator=(Deserializer&&) = delete;
+
35 
+
37  template<typename JSON>
+
38  static bool Find(const JSON& json, const char* key, bool& value);
+
40  template<typename JSON>
+
41  static bool Find(const JSON& json, const char* key, int& value);
+
43  template<typename JSON>
+
44  static bool Find(const JSON& json, const char* key, unsigned& value);
+
46  template<typename JSON>
+
47  static bool Find(const JSON& json, const char* key, int64_t& value);
+
49  template<typename JSON>
+
50  static bool Find(const JSON& json, const char* key, uint64_t& value);
+
52  template<typename JSON>
+
53  static bool Find(const JSON& json, const char* key, double& value);
+
55  template<typename JSON>
+
56  static bool Find(const JSON& json, const char* key, char* value, size_t size);
+
58  template<typename JSON>
+
59  static bool Find(const JSON& json, const char* key, std::string& value);
+
61  template <typename JSON, std::size_t N>
+
62  static bool Find(const JSON& json, const char* key, char (&value)[N]);
+
63 
+
65  template<typename JSON>
+
66  static bool FindArray(const JSON& json, const char* key, const std::function<void(const Value&)>& handler);
+
68  template<typename JSON>
+
69  static bool FindArray(const JSON& json, const char* key, const std::function<void(size_t)>& initialize, const std::function<void(const Value&)>& handler);
+
70 
+
72  template<typename JSON>
+
73  static bool FindObject(const JSON& json, const char* key, const std::function<void(const Value::ConstObject&)>& handler);
+
74 };
+
75 
+
76 } // namespace JSON
+
77 } // namespace CppSerialization
+
78 
+
79 #include "deserializer.inl"
+
80 
+
81 #endif // CPPSERIALIZATION_JSON_DESERIALIZER_H
+
+
CppSerialization::JSON::Deserializer::Deserializer
Deserializer()=delete
+
CppSerialization::JSON::Deserializer
JSON deserializer.
Definition: deserializer.h:25
+
CppSerialization
C++ Serialization project definitions.
Definition: exceptions.h:14
+
CppSerialization::JSON::Deserializer::operator=
Deserializer & operator=(const Deserializer &)=delete
+
CppSerialization::JSON::Deserializer::Find
static bool Find(const JSON &json, const char *key, bool &value)
Try to get the boolean key/value pair.
Definition: deserializer.inl:13
+
deserializer.inl
JSON deserializer inline implementation.
+
CppSerialization::JSON::Deserializer::FindArray
static bool FindArray(const JSON &json, const char *key, const std::function< void(const Value &)> &handler)
Try to get the array key/value pair.
Definition: deserializer.inl:174
+
CppSerialization::JSON::Deserializer::~Deserializer
~Deserializer()=delete
+
json.h
JSON C++ Library definition.
+
CppSerialization::JSON::Deserializer::FindObject
static bool FindObject(const JSON &json, const char *key, const std::function< void(const Value::ConstObject &)> &handler)
Try to get the object key/value pair.
Definition: deserializer.inl:205
+ + + + diff --git a/documents/html/deserializer_8inl.html b/documents/html/deserializer_8inl.html new file mode 100644 index 0000000..89940a7 --- /dev/null +++ b/documents/html/deserializer_8inl.html @@ -0,0 +1,106 @@ + + + + + + + +CppSerialization: include/serialization/json/deserializer.inl File Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+Namespaces
+
+
deserializer.inl File Reference
+
+
+ +

JSON deserializer inline implementation. +More...

+ +

Go to the source code of this file.

+ + + + + + + + +

+Namespaces

 CppSerialization
 C++ Serialization project definitions.
 
 CppSerialization::JSON
 JSON definitions.
 
+

Detailed Description

+

JSON deserializer inline implementation.

+
Author
Ivan Shynkarenka
+
Date
27.02.2017
+ + +

Definition in file deserializer.inl.

+
+ + + + diff --git a/documents/html/deserializer_8inl_source.html b/documents/html/deserializer_8inl_source.html new file mode 100644 index 0000000..bdcc07b --- /dev/null +++ b/documents/html/deserializer_8inl_source.html @@ -0,0 +1,306 @@ + + + + + + + +CppSerialization: include/serialization/json/deserializer.inl Source File + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
deserializer.inl
+
+
+Go to the documentation of this file.
1 
+
9 namespace CppSerialization {
+
10 namespace JSON {
+
11 
+
12 template<typename JSON>
+
13 inline bool Deserializer::Find(const JSON& json, const char* key, bool& value)
+
14 {
+
15  // Try to find a member with the given key
+
16  Value::ConstMemberIterator member = json.FindMember(key);
+
17  if ((member == json.MemberEnd()) || member->value.IsNull())
+
18  return false;
+
19 
+
20  // Schema validation
+
21  if (!member->value.IsBool())
+
22  throwex SerializationException("Cannot deserialize JSON bool value!");
+
23 
+
24  // Save the member value
+
25  value = member->value.GetBool();
+
26  return true;
+
27 }
+
28 
+
29 template<typename JSON>
+
30 inline bool Deserializer::Find(const JSON& json, const char* key, int& value)
+
31 {
+
32  // Try to find a member with the given key
+
33  Value::ConstMemberIterator member = json.FindMember(key);
+
34  if ((member == json.MemberEnd()) || member->value.IsNull())
+
35  return false;
+
36 
+
37  // Schema validation
+
38  if (!member->value.IsInt())
+
39  throwex SerializationException("Cannot deserialize JSON integer value!");
+
40 
+
41  // Save the member value
+
42  value = member->value.GetInt();
+
43  return true;
+
44 }
+
45 
+
46 template<typename JSON>
+
47 inline bool Deserializer::Find(const JSON& json, const char* key, unsigned& value)
+
48 {
+
49  // Try to find a member with the given key
+
50  Value::ConstMemberIterator member = json.FindMember(key);
+
51  if ((member == json.MemberEnd()) || member->value.IsNull())
+
52  return false;
+
53 
+
54  // Schema validation
+
55  if (!member->value.IsUint())
+
56  throwex SerializationException("Cannot deserialize JSON unsigned value!");
+
57 
+
58  // Save the member value
+
59  value = member->value.GetUint();
+
60  return true;
+
61 }
+
62 
+
63 template<typename JSON>
+
64 inline bool Deserializer::Find(const JSON& json, const char* key, int64_t& value)
+
65 {
+
66  // Try to find a member with the given key
+
67  Value::ConstMemberIterator member = json.FindMember(key);
+
68  if ((member == json.MemberEnd()) || member->value.IsNull())
+
69  return false;
+
70 
+
71  // Schema validation
+
72  if (!member->value.IsInt64())
+
73  throwex SerializationException("Cannot deserialize JSON 64-bit integer value!");
+
74 
+
75  // Save the member value
+
76  value = member->value.GetInt64();
+
77  return true;
+
78 }
+
79 
+
80 template<typename JSON>
+
81 inline bool Deserializer::Find(const JSON& json, const char* key, uint64_t& value)
+
82 {
+
83  // Try to find a member with the given key
+
84  Value::ConstMemberIterator member = json.FindMember(key);
+
85  if ((member == json.MemberEnd()) || member->value.IsNull())
+
86  return false;
+
87 
+
88  // Schema validation
+
89  if (!member->value.IsUint64())
+
90  throwex SerializationException("Cannot deserialize JSON 64-bit unsigned value!");
+
91 
+
92  // Save the member value
+
93  value = member->value.GetUint64();
+
94  return true;
+
95 }
+
96 
+
97 template<typename JSON>
+
98 inline bool Deserializer::Find(const JSON& json, const char* key, double& value)
+
99 {
+
100  // Try to find a member with the given key
+
101  Value::ConstMemberIterator member = json.FindMember(key);
+
102  if ((member == json.MemberEnd()) || member->value.IsNull())
+
103  return false;
+
104 
+
105  // Schema validation
+
106  if (!member->value.IsDouble())
+
107  throwex SerializationException("Cannot deserialize JSON double value!");
+
108 
+
109  // Save the member value
+
110  value = member->value.GetDouble();
+
111  return true;
+
112 }
+
113 
+
114 template<typename JSON>
+
115 inline bool Deserializer::Find(const JSON& json, const char* key, char* value, size_t size)
+
116 {
+
117  // Try to find a member with the given key
+
118  Value::ConstMemberIterator member = json.FindMember(key);
+
119  if ((member == json.MemberEnd()) || member->value.IsNull())
+
120  return false;
+
121 
+
122  // Schema validation
+
123  if (!member->value.IsString())
+
124  throwex SerializationException("Cannot deserialize JSON C-string value with a given size!");
+
125 
+
126  // Save the member value
+
127  size_t length = std::min((size_t)member->value.GetStringLength(), size);
+
128  std::memcpy(value, member->value.GetString(), length);
+
129  // Write the end of string character if possible
+
130  if (length < size)
+
131  value[length] = '\0';
+
132  return true;
+
133 }
+
134 
+
135 template<typename JSON>
+
136 inline bool Deserializer::Find(const JSON& json, const char* key, std::string& value)
+
137 {
+
138  // Try to find a member with the given key
+
139  Value::ConstMemberIterator member = json.FindMember(key);
+
140  if ((member == json.MemberEnd()) || member->value.IsNull())
+
141  return false;
+
142 
+
143  // Schema validation
+
144  if (!member->value.IsString())
+
145  throwex SerializationException("Cannot deserialize JSON string value!");
+
146 
+
147  // Save the member value
+
148  value.assign(member->value.GetString(), (size_t)member->value.GetStringLength());
+
149  return true;
+
150 }
+
151 
+
152 template <typename JSON, std::size_t N>
+
153 inline bool Deserializer::Find(const JSON& json, const char* key, char (&value)[N])
+
154 {
+
155  // Try to find a member with the given key
+
156  Value::ConstMemberIterator member = json.FindMember(key);
+
157  if ((member == json.MemberEnd()) || member->value.IsNull())
+
158  return false;
+
159 
+
160  // Schema validation
+
161  if (!member->value.IsString())
+
162  throwex SerializationException("Cannot deserialize JSON string array value!");
+
163 
+
164  // Save the member value
+
165  size_t length = std::min((size_t)member->value.GetStringLength(), N);
+
166  std::memcpy(value, member->value.GetString(), length);
+
167  // Write the end of string character if possible
+
168  if (length < N)
+
169  value[length] = '\0';
+
170  return true;
+
171 }
+
172 
+
173 template<typename JSON>
+
174 inline bool Deserializer::FindArray(const JSON& json, const char* key, const std::function<void(const Value&)>& handler)
+
175 {
+
176  return FindArray(json, key, [](size_t){}, handler);
+
177 }
+
178 
+
179 
+
180 template<typename JSON>
+
181 inline bool Deserializer::FindArray(const JSON& json, const char* key, const std::function<void(size_t)>& initialize, const std::function<void(const Value&)>& handler)
+
182 {
+
183  assert((initialize) && "JSON initialize array handler must be valid!");
+
184  assert((handler) && "JSON array handler must be valid!");
+
185  if (!initialize || !handler)
+
186  return false;
+
187 
+
188  // Try to find a member with the given key
+
189  Value::ConstMemberIterator member = json.FindMember(key);
+
190  if ((member == json.MemberEnd()) || member->value.IsNull())
+
191  return false;
+
192 
+
193  // Schema validation
+
194  if (!member->value.IsArray())
+
195  throwex SerializationException("Cannot deserialize JSON array!");
+
196 
+
197  // Handle array items
+
198  initialize(member->value.GetArray().Size());
+
199  for (const auto& item : member->value.GetArray())
+
200  handler(item);
+
201  return true;
+
202 }
+
203 
+
204 template<typename JSON>
+
205 inline bool Deserializer::FindObject(const JSON& json, const char* key, const std::function<void(const Value::ConstObject&)>& handler)
+
206 {
+
207  assert((handler) && "JSON array handler must be valid!");
+
208  if (!handler)
+
209  return false;
+
210 
+
211  // Try to find a member with the given key
+
212  Value::ConstMemberIterator member = json.FindMember(key);
+
213  if ((member == json.MemberEnd()) || member->value.IsNull())
+
214  return false;
+
215 
+
216  // Schema validation
+
217  if (!member->value.IsObject())
+
218  throwex SerializationException("Cannot deserialize JSON object!");
+
219 
+
220  // Handle object
+
221  handler(member->value.GetObj());
+
222  return true;
+
223 }
+
224 
+
225 } // namespace JSON
+
226 } // namespace CppSerialization
+
+
CppSerialization
C++ Serialization project definitions.
Definition: exceptions.h:14
+
CppSerialization::JSON::Deserializer::Find
static bool Find(const JSON &json, const char *key, bool &value)
Try to get the boolean key/value pair.
Definition: deserializer.inl:13
+
CppSerialization::JSON::Deserializer::FindArray
static bool FindArray(const JSON &json, const char *key, const std::function< void(const Value &)> &handler)
Try to get the array key/value pair.
Definition: deserializer.inl:174
+
CppSerialization::SerializationException
Serialization exception.
Definition: exceptions.h:17
+
CppSerialization::JSON::Deserializer::FindObject
static bool FindObject(const JSON &json, const char *key, const std::function< void(const Value::ConstObject &)> &handler)
Try to get the object key/value pair.
Definition: deserializer.inl:205
+ + + + diff --git a/documents/html/dir_0fe6c2563d536d7456f8aedf69d75e1b.html b/documents/html/dir_0fe6c2563d536d7456f8aedf69d75e1b.html new file mode 100644 index 0000000..d87903c --- /dev/null +++ b/documents/html/dir_0fe6c2563d536d7456f8aedf69d75e1b.html @@ -0,0 +1,89 @@ + + + + + + + +CppSerialization: source/serialization/json Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
json Directory Reference
+
+
+ + + + + +

+Files

file  parser.cpp [code]
 JSON parser implementation.
 
+
+ + + + diff --git a/documents/html/dir_8ca93b2b940c9a551f45ac13d52034a8.html b/documents/html/dir_8ca93b2b940c9a551f45ac13d52034a8.html new file mode 100644 index 0000000..f854fdb --- /dev/null +++ b/documents/html/dir_8ca93b2b940c9a551f45ac13d52034a8.html @@ -0,0 +1,107 @@ + + + + + + + +CppSerialization: include/serialization/json Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
json Directory Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + +

+Files

file  deserializer.h [code]
 JSON deserializer definition.
 
file  deserializer.inl [code]
 JSON deserializer inline implementation.
 
file  json.h [code]
 JSON C++ Library definition.
 
file  parser.h [code]
 JSON parser definition.
 
file  parser.inl [code]
 JSON parser inline implementation.
 
file  serializer.h [code]
 JSON serializer definition.
 
file  serializer.inl [code]
 JSON serializer inline implementation.
 
+
+ + + + diff --git a/documents/html/dir_b2f33c71d4aa5e7af42a1ca61ff5af1b.html b/documents/html/dir_b2f33c71d4aa5e7af42a1ca61ff5af1b.html new file mode 100644 index 0000000..ce1bea3 --- /dev/null +++ b/documents/html/dir_b2f33c71d4aa5e7af42a1ca61ff5af1b.html @@ -0,0 +1,88 @@ + + + + + + + +CppSerialization: source Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
source Directory Reference
+
+
+ + + + +

+Directories

directory  serialization
 
+
+ + + + diff --git a/documents/html/dir_bfc45e77520112b140cffab3214f7fed.html b/documents/html/dir_bfc45e77520112b140cffab3214f7fed.html new file mode 100644 index 0000000..cde6dd7 --- /dev/null +++ b/documents/html/dir_bfc45e77520112b140cffab3214f7fed.html @@ -0,0 +1,97 @@ + + + + + + + +CppSerialization: include/serialization Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
serialization Directory Reference
+
+
+ + + + +

+Directories

directory  json
 
+ + + + + + + +

+Files

file  exceptions.h [code]
 Serialization exceptions definition.
 
file  version.h [code]
 Version definition.
 
+
+ + + + diff --git a/documents/html/dir_bff6d02009f7d25aef9b819d24c7d771.html b/documents/html/dir_bff6d02009f7d25aef9b819d24c7d771.html new file mode 100644 index 0000000..d138efd --- /dev/null +++ b/documents/html/dir_bff6d02009f7d25aef9b819d24c7d771.html @@ -0,0 +1,88 @@ + + + + + + + +CppSerialization: source/serialization Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
serialization Directory Reference
+
+
+ + + + +

+Directories

directory  json
 
+
+ + + + diff --git a/documents/html/dir_d44c64559bbebec7f509842c48db8b23.html b/documents/html/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000..0440c88 --- /dev/null +++ b/documents/html/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,88 @@ + + + + + + + +CppSerialization: include Directory Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
include Directory Reference
+
+
+ + + + +

+Directories

directory  serialization
 
+
+ + + + diff --git a/documents/html/doc.png b/documents/html/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/documents/html/doc.png differ diff --git a/documents/html/doxygen.css b/documents/html/doxygen.css new file mode 100644 index 0000000..73ecbb2 --- /dev/null +++ b/documents/html/doxygen.css @@ -0,0 +1,1771 @@ +/* The standard CSS for doxygen 1.8.17 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, p.intertd, p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #FFFFFF; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #9CAFD4; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/documents/html/doxygen.png b/documents/html/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/documents/html/doxygen.png differ diff --git a/documents/html/dynsections.js b/documents/html/dynsections.js new file mode 100644 index 0000000..c8e84aa --- /dev/null +++ b/documents/html/dynsections.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of 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. + + 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 General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +CppSerialization: include/serialization/exceptions.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
exceptions.h File Reference
+
+
+ +

Serialization exceptions definition. +More...

+
#include "errors/exceptions.h"
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  CppSerialization::SerializationException
 Serialization exception. More...
 
+ + + + +

+Namespaces

 CppSerialization
 C++ Serialization project definitions.
 
+

Detailed Description

+

Serialization exceptions definition.

+
Author
Ivan Shynkarenka
+
Date
25.02.2017
+ + +

Definition in file exceptions.h.

+
+ + + + diff --git a/documents/html/exceptions_8h_source.html b/documents/html/exceptions_8h_source.html new file mode 100644 index 0000000..0417485 --- /dev/null +++ b/documents/html/exceptions_8h_source.html @@ -0,0 +1,101 @@ + + + + + + + +CppSerialization: include/serialization/exceptions.h Source File + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
exceptions.h
+
+
+Go to the documentation of this file.
1 
+
9 #ifndef CPPSERIALIZATION_EXCEPTIONS_H
+
10 #define CPPSERIALIZATION_EXCEPTIONS_H
+
11 
+
12 #include "errors/exceptions.h"
+
13 
+
14 namespace CppSerialization {
+
15 
+
17 class SerializationException : public CppCommon::Exception
+
18 {
+
19 public:
+
20  using Exception::Exception;
+
21 };
+
22 
+
23 } // namespace CppSerialization
+
24 
+
25 #endif // CPPSERIALIZATION_EXCEPTIONS_H
+
+
C++ Serialization project definitions.
Definition: exceptions.h:14
+
Serialization exception.
Definition: exceptions.h:17
+ + + + diff --git a/documents/html/files.html b/documents/html/files.html new file mode 100644 index 0000000..42a3887 --- /dev/null +++ b/documents/html/files.html @@ -0,0 +1,98 @@ + + + + + + + +CppSerialization: File List + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all files with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + +
  include
  serialization
  json
 deserializer.hJSON deserializer definition
 deserializer.inlJSON deserializer inline implementation
 json.hJSON C++ Library definition
 parser.hJSON parser definition
 parser.inlJSON parser inline implementation
 serializer.hJSON serializer definition
 serializer.inlJSON serializer inline implementation
 exceptions.hSerialization exceptions definition
 version.hVersion definition
  source
  serialization
  json
 parser.cppJSON parser implementation
+
+
+ + + + diff --git a/documents/html/folderclosed.png b/documents/html/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/documents/html/folderclosed.png differ diff --git a/documents/html/folderopen.png b/documents/html/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/documents/html/folderopen.png differ diff --git a/documents/html/functions.html b/documents/html/functions.html new file mode 100644 index 0000000..ecf4c9c --- /dev/null +++ b/documents/html/functions.html @@ -0,0 +1,172 @@ + + + + + + + +CppSerialization: Class Members + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all class members with links to the classes they belong to:
+ +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- k -

+ + +

- o -

+ + +

- p -

+ + +

- s -

+ + +

- v -

+ + +

- ~ -

+
+ + + + diff --git a/documents/html/functions_func.html b/documents/html/functions_func.html new file mode 100644 index 0000000..796f83c --- /dev/null +++ b/documents/html/functions_func.html @@ -0,0 +1,172 @@ + + + + + + + +CppSerialization: Class Members - Functions + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- k -

+ + +

- o -

+ + +

- p -

+ + +

- s -

+ + +

- v -

+ + +

- ~ -

+
+ + + + diff --git a/documents/html/globals.html b/documents/html/globals.html new file mode 100644 index 0000000..34baf39 --- /dev/null +++ b/documents/html/globals.html @@ -0,0 +1,88 @@ + + + + + + + +CppSerialization: File Members + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all file members with links to the files they belong to:
+
+ + + + diff --git a/documents/html/globals_defs.html b/documents/html/globals_defs.html new file mode 100644 index 0000000..660f6be --- /dev/null +++ b/documents/html/globals_defs.html @@ -0,0 +1,88 @@ + + + + + + + +CppSerialization: File Members + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+ + + + diff --git a/documents/html/hierarchy.html b/documents/html/hierarchy.html new file mode 100644 index 0000000..6ba641d --- /dev/null +++ b/documents/html/hierarchy.html @@ -0,0 +1,88 @@ + + + + + + + +CppSerialization: Class Hierarchy + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12]
+ + + + + + +
 CCppSerialization::JSON::DeserializerJSON deserializer
 CException
 CCppSerialization::SerializationExceptionSerialization exception
 CCppSerialization::JSON::ParserJSON parser
 CWriter
 CCppSerialization::JSON::Serializer< OutputStream >JSON serializer
+
+
+ + + + diff --git a/documents/html/index.html b/documents/html/index.html new file mode 100644 index 0000000..17697ac --- /dev/null +++ b/documents/html/index.html @@ -0,0 +1,82 @@ + + + + + + + +CppSerialization: C++ Serialization Library + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
C++ Serialization Library
+
+
+

C++ Serialization Library provides functionality to serialize/deserialize objects in/from different formats such as Flatbuffers, JSON.

+

This document contains CppSerialization API references.

+

Library description, features, requirements and usage examples can be find on GitHub: https://github.com/chronoxor/CppSerialization

+
+
+ + + + diff --git a/documents/html/jquery.js b/documents/html/jquery.js new file mode 100644 index 0000000..103c32d --- /dev/null +++ b/documents/html/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/documents/html/json_8h.html b/documents/html/json_8h.html new file mode 100644 index 0000000..d0b102e --- /dev/null +++ b/documents/html/json_8h.html @@ -0,0 +1,186 @@ + + + + + + + +CppSerialization: include/serialization/json/json.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
json.h File Reference
+
+
+ +

JSON C++ Library definition. +More...

+
#include "../exceptions.h"
+#include <rapidjson/document.h>
+#include <rapidjson/writer.h>
+
+

Go to the source code of this file.

+ + + + + + + + +

+Namespaces

 CppSerialization
 C++ Serialization project definitions.
 
 CppSerialization::JSON
 JSON definitions.
 
+ + + + + + + + + +

+Macros

#define RAPIDJSON_HAS_STDSTRING   1
 
#define RAPIDJSON_NAMESPACE   CppSerialization::JSON
 
#define RAPIDJSON_NAMESPACE_BEGIN   namespace CppSerialization { namespace JSON {
 
#define RAPIDJSON_NAMESPACE_END   } }
 
+

Detailed Description

+

JSON C++ Library definition.

+
Author
Ivan Shynkarenka
+
Date
24.02.2017
+ + +

Definition in file json.h.

+

Macro Definition Documentation

+ +

◆ RAPIDJSON_HAS_STDSTRING

+ +
+
+ + + + +
#define RAPIDJSON_HAS_STDSTRING   1
+
+ +

Definition at line 22 of file json.h.

+ +
+
+ +

◆ RAPIDJSON_NAMESPACE

+ +
+
+ + + + +
#define RAPIDJSON_NAMESPACE   CppSerialization::JSON
+
+ +

Definition at line 24 of file json.h.

+ +
+
+ +

◆ RAPIDJSON_NAMESPACE_BEGIN

+ +
+
+ + + + +
#define RAPIDJSON_NAMESPACE_BEGIN   namespace CppSerialization { namespace JSON {
+
+ +

Definition at line 25 of file json.h.

+ +
+
+ +

◆ RAPIDJSON_NAMESPACE_END

+ +
+
+ + + + +
#define RAPIDJSON_NAMESPACE_END   } }
+
+ +

Definition at line 26 of file json.h.

+ +
+
+
+ + + + diff --git a/documents/html/json_8h_source.html b/documents/html/json_8h_source.html new file mode 100644 index 0000000..2771f6d --- /dev/null +++ b/documents/html/json_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +CppSerialization: include/serialization/json/json.h Source File + + + + + + + + + +
+
+ + + + + + +
+
CppSerialization +  1.0.2.0 +
+
C++ Serialization Library
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
json.h
+
+
+Go to the documentation of this file.
1 
+
9 #ifndef CPPSERIALIZATION_JSON_JSON_H
+
10 #define CPPSERIALIZATION_JSON_JSON_H
+
11 
+
12 #include "../exceptions.h"
+
13 
+
14 #if defined(__clang__)
+
15 #pragma clang system_header
+
16 #elif defined(__GNUC__)
+
17 #pragma GCC system_header
+
18 #elif defined(_MSC_VER)
+
19 #pragma system_header
+
20 #endif
+
21 
+
22 #define RAPIDJSON_HAS_STDSTRING 1
+
23 
+
24 #define RAPIDJSON_NAMESPACE CppSerialization::JSON
+
25 #define RAPIDJSON_NAMESPACE_BEGIN namespace CppSerialization { namespace JSON {
+
26 #define RAPIDJSON_NAMESPACE_END } }
+
27 
+
28 #include <rapidjson/document.h>
+
29 #include <rapidjson/writer.h>
+
30 
+
31 namespace CppSerialization {
+
32 
+
37 namespace JSON {
+
38 
+
39 } // namespace JSON
+
40 
+
41 } // namespace CppSerialization
+
42 
+
43 #endif // CPPSERIALIZATION_JSON_JSON_H
+
+
C++ Serialization project definitions.
Definition: exceptions.h:14
+ + + + diff --git a/documents/html/menu.js b/documents/html/menu.js new file mode 100644 index 0000000..433c15b --- /dev/null +++ b/documents/html/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of 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. + + 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 General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/documents/html/menudata.js b/documents/html/menudata.js new file mode 100644 index 0000000..247249c --- /dev/null +++ b/documents/html/menudata.js @@ -0,0 +1,59 @@ +/* +@licstart The following is the entire license notice for the +JavaScript code in this file. + +Copyright (C) 1997-2019 by Dimitri van Heesch + +This program is free software; you can redistribute it and/or modify +it under the terms of version 2 of the GNU General Public License as published by +the Free Software Foundation + +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 General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +@licend The above is the entire license notice +for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}, +{text:"Namespace Members",url:"namespacemembers.html",children:[ +{text:"All",url:"namespacemembers.html"}, +{text:"Variables",url:"namespacemembers_vars.html"}]}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"hierarchy.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"k",url:"functions.html#index_k"}, +{text:"o",url:"functions.html#index_o"}, +{text:"p",url:"functions.html#index_p"}, +{text:"s",url:"functions.html#index_s"}, +{text:"v",url:"functions.html#index_v"}, +{text:"~",url:"functions.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"d",url:"functions_func.html#index_d"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"k",url:"functions_func.html#index_k"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"v",url:"functions_func.html#index_v"}, +{text:"~",url:"functions_func.html#index__7E"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html"}, +{text:"Macros",url:"globals_defs.html"}]}]}]} diff --git a/documents/html/namespace_cpp_serialization.html b/documents/html/namespace_cpp_serialization.html new file mode 100644 index 0000000..e15cc00 --- /dev/null +++ b/documents/html/namespace_cpp_serialization.html @@ -0,0 +1,125 @@ + + + + + + + +CppSerialization: CppSerialization Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    CppSerialization Namespace Reference
    +
    +
    + +

    C++ Serialization project definitions. +More...

    + + + + + +

    +Namespaces

     JSON
     JSON definitions.
     
    + + + + +

    +Classes

    class  SerializationException
     Serialization exception. More...
     
    + + + + +

    +Variables

    const char version [] = "1.0.2.0"
     Project version. More...
     
    +

    Detailed Description

    +

    C++ Serialization project definitions.

    +

    Variable Documentation

    + +

    ◆ version

    + +
    +
    + + + + +
    const char CppSerialization::version[] = "1.0.2.0"
    +
    + +

    Project version.

    + +

    Definition at line 31 of file version.h.

    + +
    +
    +
    + + + + diff --git a/documents/html/namespace_cpp_serialization_1_1_j_s_o_n.html b/documents/html/namespace_cpp_serialization_1_1_j_s_o_n.html new file mode 100644 index 0000000..a1adb71 --- /dev/null +++ b/documents/html/namespace_cpp_serialization_1_1_j_s_o_n.html @@ -0,0 +1,102 @@ + + + + + + + +CppSerialization: CppSerialization::JSON Namespace Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    CppSerialization::JSON Namespace Reference
    +
    +
    + +

    JSON definitions. +More...

    + + + + + + + + + + + +

    +Classes

    class  Deserializer
     JSON deserializer. More...
     
    class  Parser
     JSON parser. More...
     
    class  Serializer
     JSON serializer. More...
     
    +

    Detailed Description

    +

    JSON definitions.

    +
    + + + + diff --git a/documents/html/namespacemembers.html b/documents/html/namespacemembers.html new file mode 100644 index 0000000..0a2387a --- /dev/null +++ b/documents/html/namespacemembers.html @@ -0,0 +1,79 @@ + + + + + + + +CppSerialization: Namespace Members + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all namespace members with links to the namespace documentation for each member:
    +
    + + + + diff --git a/documents/html/namespacemembers_vars.html b/documents/html/namespacemembers_vars.html new file mode 100644 index 0000000..1d22aa8 --- /dev/null +++ b/documents/html/namespacemembers_vars.html @@ -0,0 +1,79 @@ + + + + + + + +CppSerialization: Namespace Members + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/documents/html/namespaces.html b/documents/html/namespaces.html new file mode 100644 index 0000000..c52a9ab --- /dev/null +++ b/documents/html/namespaces.html @@ -0,0 +1,84 @@ + + + + + + + +CppSerialization: Namespace List + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Namespace List
    +
    +
    +
    Here is a list of all namespaces with brief descriptions:
    +
    [detail level 12]
    + + +
     NCppSerializationC++ Serialization project definitions
     NJSONJSON definitions
    +
    +
    + + + + diff --git a/documents/html/nav_f.png b/documents/html/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/documents/html/nav_f.png differ diff --git a/documents/html/nav_g.png b/documents/html/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/documents/html/nav_g.png differ diff --git a/documents/html/nav_h.png b/documents/html/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/documents/html/nav_h.png differ diff --git a/documents/html/open.png b/documents/html/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/documents/html/open.png differ diff --git a/documents/html/parser_8cpp.html b/documents/html/parser_8cpp.html new file mode 100644 index 0000000..b1af7c9 --- /dev/null +++ b/documents/html/parser_8cpp.html @@ -0,0 +1,107 @@ + + + + + + + +CppSerialization: source/serialization/json/parser.cpp File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    parser.cpp File Reference
    +
    +
    + +

    JSON parser implementation. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Namespaces

     CppSerialization
     C++ Serialization project definitions.
     
     CppSerialization::JSON
     JSON definitions.
     
    +

    Detailed Description

    +

    JSON parser implementation.

    +
    Author
    Ivan Shynkarenka
    +
    Date
    27.02.2017
    + + +

    Definition in file parser.cpp.

    +
    + + + + diff --git a/documents/html/parser_8cpp_source.html b/documents/html/parser_8cpp_source.html new file mode 100644 index 0000000..55eee71 --- /dev/null +++ b/documents/html/parser_8cpp_source.html @@ -0,0 +1,118 @@ + + + + + + + +CppSerialization: source/serialization/json/parser.cpp Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    parser.cpp
    +
    +
    +Go to the documentation of this file.
    1 
    + +
    10 
    +
    11 namespace CppSerialization {
    +
    12 namespace JSON {
    +
    13 
    +
    14 Document Parser::Parse(const char* str)
    +
    15 {
    +
    16  Document result;
    +
    17  return std::move(result.Parse(str));
    +
    18 }
    +
    19 
    +
    20 Document Parser::Parse(const char* str, size_t size)
    +
    21 {
    +
    22  Document result;
    +
    23  return std::move(result.Parse(str, size));
    +
    24 }
    +
    25 
    +
    26 Document Parser::Parse(const std::string& str)
    +
    27 {
    +
    28  Document result;
    +
    29  return std::move(result.Parse(str));
    +
    30 }
    +
    31 
    +
    32 Document Parser::ParseInPlace(char* str)
    +
    33 {
    +
    34  Document result;
    +
    35  return std::move(result.ParseInsitu(str));
    +
    36 }
    +
    37 
    +
    38 } // namespace JSON
    +
    39 } // namespace CppSerialization
    +
    +
    static Document Parse(const char *source)
    Parse the C-string.
    Definition: parser.cpp:14
    +
    C++ Serialization project definitions.
    Definition: exceptions.h:14
    +
    static Document ParseInPlace(char *source)
    Parse the in-place C-string in mutable mode.
    Definition: parser.cpp:32
    +
    JSON parser definition.
    + + + + diff --git a/documents/html/parser_8h.html b/documents/html/parser_8h.html new file mode 100644 index 0000000..b018f54 --- /dev/null +++ b/documents/html/parser_8h.html @@ -0,0 +1,115 @@ + + + + + + + +CppSerialization: include/serialization/json/parser.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    parser.h File Reference
    +
    +
    + +

    JSON parser definition. +More...

    +
    #include "json.h"
    +#include "parser.inl"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  CppSerialization::JSON::Parser
     JSON parser. More...
     
    + + + + + + + +

    +Namespaces

     CppSerialization
     C++ Serialization project definitions.
     
     CppSerialization::JSON
     JSON definitions.
     
    +

    Detailed Description

    +

    JSON parser definition.

    +
    Author
    Ivan Shynkarenka
    +
    Date
    27.02.2017
    + + +

    Definition in file parser.h.

    +
    + + + + diff --git a/documents/html/parser_8h_source.html b/documents/html/parser_8h_source.html new file mode 100644 index 0000000..322c649 --- /dev/null +++ b/documents/html/parser_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +CppSerialization: include/serialization/json/parser.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    parser.h
    +
    +
    +Go to the documentation of this file.
    1 
    +
    9 #ifndef CPPSERIALIZATION_JSON_PARSER_H
    +
    10 #define CPPSERIALIZATION_JSON_PARSER_H
    +
    11 
    +
    12 #include "json.h"
    +
    13 
    +
    14 namespace CppSerialization {
    +
    15 namespace JSON {
    +
    16 
    +
    18 
    +
    22 class Parser
    +
    23 {
    +
    24 public:
    +
    25  Parser() = delete;
    +
    26  Parser(const Parser&) = delete;
    +
    27  Parser(Parser&&) = delete;
    +
    28  ~Parser() = delete;
    +
    29 
    +
    30  Parser& operator=(const Parser&) = delete;
    +
    31  Parser& operator=(Parser&&) = delete;
    +
    32 
    +
    34  template <typename InputStream>
    +
    35  static Document ParseStream(InputStream& stream);
    +
    36 
    +
    38  static Document Parse(const char* source);
    +
    40  static Document Parse(const char* source, size_t size);
    +
    42  static Document Parse(const std::string& source);
    +
    43 
    +
    45  static Document ParseInPlace(char* source);
    +
    46 };
    +
    47 
    +
    48 } // namespace JSON
    +
    49 } // namespace CppSerialization
    +
    50 
    +
    51 #include "parser.inl"
    +
    52 
    +
    53 #endif // CPPSERIALIZATION_JSON_PARSER_H
    +
    + +
    static Document Parse(const char *source)
    Parse the C-string.
    Definition: parser.cpp:14
    +
    Parser & operator=(const Parser &)=delete
    +
    static Document ParseStream(InputStream &stream)
    Parse the input stream.
    Definition: parser.inl:13
    +
    C++ Serialization project definitions.
    Definition: exceptions.h:14
    + + +
    static Document ParseInPlace(char *source)
    Parse the in-place C-string in mutable mode.
    Definition: parser.cpp:32
    +
    JSON C++ Library definition.
    +
    JSON parser inline implementation.
    + + + + diff --git a/documents/html/parser_8inl.html b/documents/html/parser_8inl.html new file mode 100644 index 0000000..c7346d7 --- /dev/null +++ b/documents/html/parser_8inl.html @@ -0,0 +1,106 @@ + + + + + + + +CppSerialization: include/serialization/json/parser.inl File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    parser.inl File Reference
    +
    +
    + +

    JSON parser inline implementation. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Namespaces

     CppSerialization
     C++ Serialization project definitions.
     
     CppSerialization::JSON
     JSON definitions.
     
    +

    Detailed Description

    +

    JSON parser inline implementation.

    +
    Author
    Ivan Shynkarenka
    +
    Date
    27.02.2017
    + + +

    Definition in file parser.inl.

    +
    + + + + diff --git a/documents/html/parser_8inl_source.html b/documents/html/parser_8inl_source.html new file mode 100644 index 0000000..1e414f5 --- /dev/null +++ b/documents/html/parser_8inl_source.html @@ -0,0 +1,97 @@ + + + + + + + +CppSerialization: include/serialization/json/parser.inl Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    parser.inl
    +
    +
    +Go to the documentation of this file.
    1 
    +
    9 namespace CppSerialization {
    +
    10 namespace JSON {
    +
    11 
    +
    12 template <typename InputStream>
    +
    13 inline Document Parser::ParseStream(InputStream& stream)
    +
    14 {
    +
    15  Document result;
    +
    16  return std::move(result.ParseStream(stream));
    +
    17 }
    +
    18 
    +
    19 } // namespace JSON
    +
    20 } // namespace CppSerialization
    +
    +
    static Document ParseStream(InputStream &stream)
    Parse the input stream.
    Definition: parser.inl:13
    +
    C++ Serialization project definitions.
    Definition: exceptions.h:14
    + + + + diff --git a/documents/html/search/all_0.html b/documents/html/search/all_0.html new file mode 100644 index 0000000..26dd244 --- /dev/null +++ b/documents/html/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/all_0.js b/documents/html/search/all_0.js new file mode 100644 index 0000000..cc6d140 --- /dev/null +++ b/documents/html/search/all_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['cppserialization_0',['CppSerialization',['../namespace_cpp_serialization.html',1,'']]], + ['c_2b_2b_20serialization_20library_1',['C++ Serialization Library',['../index.html',1,'']]], + ['json_2',['JSON',['../namespace_cpp_serialization_1_1_j_s_o_n.html',1,'CppSerialization']]] +]; diff --git a/documents/html/search/all_1.html b/documents/html/search/all_1.html new file mode 100644 index 0000000..8eb215b --- /dev/null +++ b/documents/html/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/all_1.js b/documents/html/search/all_1.js new file mode 100644 index 0000000..178fdea --- /dev/null +++ b/documents/html/search/all_1.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['deserializer_3',['Deserializer',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html',1,'CppSerialization::JSON::Deserializer'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#acae12b0aea3bf254cb12b67228c5dc0c',1,'CppSerialization::JSON::Deserializer::Deserializer()=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a74b3346d47844a812dd80333daaef58c',1,'CppSerialization::JSON::Deserializer::Deserializer(const Deserializer &)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a40ec8627c9006ed987c09cb426484994',1,'CppSerialization::JSON::Deserializer::Deserializer(Deserializer &&)=delete']]], + ['deserializer_2eh_4',['deserializer.h',['../deserializer_8h.html',1,'']]], + ['deserializer_2einl_5',['deserializer.inl',['../deserializer_8inl.html',1,'']]] +]; diff --git a/documents/html/search/all_2.html b/documents/html/search/all_2.html new file mode 100644 index 0000000..b26d916 --- /dev/null +++ b/documents/html/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/all_2.js b/documents/html/search/all_2.js new file mode 100644 index 0000000..fa6de09 --- /dev/null +++ b/documents/html/search/all_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['endarray_6',['EndArray',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ab99477079db72b56e0a74e1cb7b98d20',1,'CppSerialization::JSON::Serializer']]], + ['endobject_7',['EndObject',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a773d1e59a7551983ba83f3c9aacd8e72',1,'CppSerialization::JSON::Serializer']]], + ['exceptions_2eh_8',['exceptions.h',['../exceptions_8h.html',1,'']]] +]; diff --git a/documents/html/search/all_3.html b/documents/html/search/all_3.html new file mode 100644 index 0000000..b61b96f --- /dev/null +++ b/documents/html/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/all_3.js b/documents/html/search/all_3.js new file mode 100644 index 0000000..1d21c03 --- /dev/null +++ b/documents/html/search/all_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['find_9',['Find',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#afa2b5a865adc3302e5992c7c4d58b048',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, bool &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a0fd17c0c31e6a0787fbcec86787befaa',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, int &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a9cdd7b94ed2fe4542958b96695f5e2c9',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, unsigned &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#ab1e7f402cf850692a46ff1e18b96765a',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, int64_t &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a418433884b0b66b74c11a369c0dcbd99',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, uint64_t &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a6d7652f0202da7cf516843685080da72',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, double &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a5ba7578927609b31636f7f420421f5db',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, char *value, size_t size)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a64f7b915783c78e29403fb30509fa84a',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, std::string &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a1203ff889589037f296c0d4257793bd1',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, char(&value)[N])']]], + ['findarray_10',['FindArray',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#ac72e0ef3d3271731da2c6e7a65c33cba',1,'CppSerialization::JSON::Deserializer::FindArray(const JSON &json, const char *key, const std::function< void(const Value &)> &handler)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a79b53828c2f984de8e063981336fe8ea',1,'CppSerialization::JSON::Deserializer::FindArray(const JSON &json, const char *key, const std::function< void(size_t)> &initialize, const std::function< void(const Value &)> &handler)']]], + ['findobject_11',['FindObject',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#aef2306041f4a5e94ab7854d55be33120',1,'CppSerialization::JSON::Deserializer']]] +]; diff --git a/documents/html/search/all_4.html b/documents/html/search/all_4.html new file mode 100644 index 0000000..06de155 --- /dev/null +++ b/documents/html/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/all_4.js b/documents/html/search/all_4.js new file mode 100644 index 0000000..4ec8dcf --- /dev/null +++ b/documents/html/search/all_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['json_2eh_12',['json.h',['../json_8h.html',1,'']]] +]; diff --git a/documents/html/search/all_5.html b/documents/html/search/all_5.html new file mode 100644 index 0000000..2544c4e --- /dev/null +++ b/documents/html/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/all_5.js b/documents/html/search/all_5.js new file mode 100644 index 0000000..aac611d --- /dev/null +++ b/documents/html/search/all_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['key_13',['Key',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ab659410d39c0bfe1eab3789f1ae544f5',1,'CppSerialization::JSON::Serializer::Key(const char *key)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#add0a5afa607a89e3cddd4024b02fe613',1,'CppSerialization::JSON::Serializer::Key(const char *key, size_t size)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ad62d59a28b7c470f29e95801b657fc48',1,'CppSerialization::JSON::Serializer::Key(const std::string &key)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a8ec3ae23fd4654784ed95ba7ddf6d65e',1,'CppSerialization::JSON::Serializer::Key(const char(&key)[N])']]] +]; diff --git a/documents/html/search/all_6.html b/documents/html/search/all_6.html new file mode 100644 index 0000000..43f14ea --- /dev/null +++ b/documents/html/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/all_6.js b/documents/html/search/all_6.js new file mode 100644 index 0000000..9c1b26c --- /dev/null +++ b/documents/html/search/all_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['operator_3d_14',['operator=',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#aa591911ff29d689e3cdcbd28efbdfe1f',1,'CppSerialization::JSON::Deserializer::operator=(const Deserializer &)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a72a12c80c6dccae18a177ee05ad731ef',1,'CppSerialization::JSON::Deserializer::operator=(Deserializer &&)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#ac19db4ab18fe7444b8e209095453085c',1,'CppSerialization::JSON::Parser::operator=(const Parser &)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#acfbe58a401ca85e9c2889c52b9ea7b01',1,'CppSerialization::JSON::Parser::operator=(Parser &&)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#aad1a1084c337880ff4d383122d5352c2',1,'CppSerialization::JSON::Serializer::operator=(const Serializer &)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a8ba675e7c5ac3576d2f7c41e6bbb4fb5',1,'CppSerialization::JSON::Serializer::operator=(Serializer &&)=default']]] +]; diff --git a/documents/html/search/all_7.html b/documents/html/search/all_7.html new file mode 100644 index 0000000..af52f82 --- /dev/null +++ b/documents/html/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/all_7.js b/documents/html/search/all_7.js new file mode 100644 index 0000000..ef49fa3 --- /dev/null +++ b/documents/html/search/all_7.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['pair_15',['Pair',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a28955398db6b272251b05e7e6e8cba77',1,'CppSerialization::JSON::Serializer::Pair(const char *key, std::nullptr_t value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a8d58703b072eec58305e7bfbc2b6be74',1,'CppSerialization::JSON::Serializer::Pair(const char *key, bool value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a106cb78520a2e412a480e78e7a8adc2b',1,'CppSerialization::JSON::Serializer::Pair(const char *key, int value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a83d60d35d0ddc938d9c86523e823a716',1,'CppSerialization::JSON::Serializer::Pair(const char *key, unsigned value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a8e86f4748426098a5e2499d7a05fed75',1,'CppSerialization::JSON::Serializer::Pair(const char *key, int64_t value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a5008639a935ca9cdf308a28faef7489a',1,'CppSerialization::JSON::Serializer::Pair(const char *key, uint64_t value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#aec7a5223f5f610cbb365693ac12ad85f',1,'CppSerialization::JSON::Serializer::Pair(const char *key, double value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a442406fc59d1309c350b4a3f79365f20',1,'CppSerialization::JSON::Serializer::Pair(const char *key, const char *value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a8d2dff34ebe32e55e6a54b7be11c0452',1,'CppSerialization::JSON::Serializer::Pair(const char *key, const char *value, size_t size)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a0bba71e53aa3d6eee8397467986722e9',1,'CppSerialization::JSON::Serializer::Pair(const char *key, const std::string &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a2b878d93aef2bcc571faab5104635314',1,'CppSerialization::JSON::Serializer::Pair(const char *key, const char(&value)[N])']]], + ['parse_16',['Parse',['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a89969fbe1ca1b9a5a0cb5e854673a5a2',1,'CppSerialization::JSON::Parser::Parse(const char *source)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a87e256a51d92cf0fbd3ee5e1ec9d8ecb',1,'CppSerialization::JSON::Parser::Parse(const char *source, size_t size)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a169848b1a7ec6a011371534bf582985d',1,'CppSerialization::JSON::Parser::Parse(const std::string &source)']]], + ['parseinplace_17',['ParseInPlace',['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a0077788d1137b2392f5e8ba4666a08b3',1,'CppSerialization::JSON::Parser']]], + ['parser_18',['Parser',['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html',1,'CppSerialization::JSON::Parser'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a7706777f710724858bc9b0ca81f1ec53',1,'CppSerialization::JSON::Parser::Parser()=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a998371db13de0e7bcc9fc04a50576d2c',1,'CppSerialization::JSON::Parser::Parser(const Parser &)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a9245067574b7d86dd55d497cab68f4d1',1,'CppSerialization::JSON::Parser::Parser(Parser &&)=delete']]], + ['parser_2ecpp_19',['parser.cpp',['../parser_8cpp.html',1,'']]], + ['parser_2eh_20',['parser.h',['../parser_8h.html',1,'']]], + ['parser_2einl_21',['parser.inl',['../parser_8inl.html',1,'']]], + ['parsestream_22',['ParseStream',['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#aa6029a4734fc20d5721b9df6b50a133d',1,'CppSerialization::JSON::Parser']]] +]; diff --git a/documents/html/search/all_8.html b/documents/html/search/all_8.html new file mode 100644 index 0000000..cf2b5df --- /dev/null +++ b/documents/html/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/all_8.js b/documents/html/search/all_8.js new file mode 100644 index 0000000..9805d97 --- /dev/null +++ b/documents/html/search/all_8.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['rapidjson_5fhas_5fstdstring_23',['RAPIDJSON_HAS_STDSTRING',['../json_8h.html#a2f2eef0ee4477f3fe5874703a66e997f',1,'json.h']]], + ['rapidjson_5fnamespace_24',['RAPIDJSON_NAMESPACE',['../json_8h.html#a743a79d3af927391fe3eb5c979136899',1,'json.h']]], + ['rapidjson_5fnamespace_5fbegin_25',['RAPIDJSON_NAMESPACE_BEGIN',['../json_8h.html#ad3806c8251fdc7da9618b7e922674ffc',1,'json.h']]], + ['rapidjson_5fnamespace_5fend_26',['RAPIDJSON_NAMESPACE_END',['../json_8h.html#af18f052a98b9f5df5448d39484b743c1',1,'json.h']]] +]; diff --git a/documents/html/search/all_9.html b/documents/html/search/all_9.html new file mode 100644 index 0000000..690785a --- /dev/null +++ b/documents/html/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/all_9.js b/documents/html/search/all_9.js new file mode 100644 index 0000000..faab047 --- /dev/null +++ b/documents/html/search/all_9.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['serializationexception_27',['SerializationException',['../class_cpp_serialization_1_1_serialization_exception.html',1,'CppSerialization']]], + ['serializer_28',['Serializer',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html',1,'CppSerialization::JSON::Serializer< OutputStream >'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a427d39d057f8c232ec964136208469a5',1,'CppSerialization::JSON::Serializer::Serializer()=default'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#aeb2cfe4d4cb07fc3b1a3db1b29f8bb5d',1,'CppSerialization::JSON::Serializer::Serializer(OutputStream &stream)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ad94a0fb6ecc3743689e599156ad0c1f7',1,'CppSerialization::JSON::Serializer::Serializer(const Serializer &)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ad25f75a652fbc6192ccb6011a9b49074',1,'CppSerialization::JSON::Serializer::Serializer(Serializer &&)=default']]], + ['serializer_2eh_29',['serializer.h',['../serializer_8h.html',1,'']]], + ['serializer_2einl_30',['serializer.inl',['../serializer_8inl.html',1,'']]], + ['startarray_31',['StartArray',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a1537d97befb95733a8f1bf0563a33e3d',1,'CppSerialization::JSON::Serializer']]], + ['startobject_32',['StartObject',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#aaa4ed835924e1cc4a7deab21af15d147',1,'CppSerialization::JSON::Serializer']]] +]; diff --git a/documents/html/search/all_a.html b/documents/html/search/all_a.html new file mode 100644 index 0000000..f2f3d3a --- /dev/null +++ b/documents/html/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/all_a.js b/documents/html/search/all_a.js new file mode 100644 index 0000000..a4e01b0 --- /dev/null +++ b/documents/html/search/all_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['value_33',['Value',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ac88ea6618b4da843a174c1d0b101a7ea',1,'CppSerialization::JSON::Serializer::Value(std::nullptr_t value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a0b8a908812df1c9bedbfd96a3d194309',1,'CppSerialization::JSON::Serializer::Value(bool value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a5617ba0a8914e321c7d6acdf1df28f78',1,'CppSerialization::JSON::Serializer::Value(int value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a4b06aa8ed1f17616dec8ff7aa36434a1',1,'CppSerialization::JSON::Serializer::Value(unsigned value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ae6cc7a83d1ad6f564a2cfaa1e51e93dc',1,'CppSerialization::JSON::Serializer::Value(int64_t value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a659a811392a01b1db7dba735d6e57191',1,'CppSerialization::JSON::Serializer::Value(uint64_t value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#aa8ced35baf28733ade207658c132b610',1,'CppSerialization::JSON::Serializer::Value(double value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a3721192c895b87d8d88c7a8cfebd5a45',1,'CppSerialization::JSON::Serializer::Value(const char *value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#aacbf2e476af638605b5438a17e786570',1,'CppSerialization::JSON::Serializer::Value(const char *value, size_t size)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a3c753519bd8a56c2aecaf5b9ea59ec89',1,'CppSerialization::JSON::Serializer::Value(const std::string &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a07169db87980d3619904d075d2e0281f',1,'CppSerialization::JSON::Serializer::Value(const char(&value)[N])']]], + ['version_34',['version',['../namespace_cpp_serialization.html#abc3d6af18e6a0cfd26bccf986376aac6',1,'CppSerialization']]], + ['version_2eh_35',['version.h',['../version_8h.html',1,'']]] +]; diff --git a/documents/html/search/all_b.html b/documents/html/search/all_b.html new file mode 100644 index 0000000..14f3403 --- /dev/null +++ b/documents/html/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/all_b.js b/documents/html/search/all_b.js new file mode 100644 index 0000000..7cd9494 --- /dev/null +++ b/documents/html/search/all_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_7edeserializer_36',['~Deserializer',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a6b797d29fadcd1fcef2adcaae68eb093',1,'CppSerialization::JSON::Deserializer']]], + ['_7eparser_37',['~Parser',['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a64e0f927da5ffc8329794db062408f08',1,'CppSerialization::JSON::Parser']]], + ['_7eserializer_38',['~Serializer',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#af8e599588998580e2a54e7ef9c6d0a59',1,'CppSerialization::JSON::Serializer']]] +]; diff --git a/documents/html/search/classes_0.html b/documents/html/search/classes_0.html new file mode 100644 index 0000000..f7e4c14 --- /dev/null +++ b/documents/html/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/classes_0.js b/documents/html/search/classes_0.js new file mode 100644 index 0000000..593d0df --- /dev/null +++ b/documents/html/search/classes_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['deserializer_39',['Deserializer',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html',1,'CppSerialization::JSON']]] +]; diff --git a/documents/html/search/classes_1.html b/documents/html/search/classes_1.html new file mode 100644 index 0000000..c7ff4b3 --- /dev/null +++ b/documents/html/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/classes_1.js b/documents/html/search/classes_1.js new file mode 100644 index 0000000..949f618 --- /dev/null +++ b/documents/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['parser_40',['Parser',['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html',1,'CppSerialization::JSON']]] +]; diff --git a/documents/html/search/classes_2.html b/documents/html/search/classes_2.html new file mode 100644 index 0000000..0d1e8a0 --- /dev/null +++ b/documents/html/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/classes_2.js b/documents/html/search/classes_2.js new file mode 100644 index 0000000..51d18da --- /dev/null +++ b/documents/html/search/classes_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['serializationexception_41',['SerializationException',['../class_cpp_serialization_1_1_serialization_exception.html',1,'CppSerialization']]], + ['serializer_42',['Serializer',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html',1,'CppSerialization::JSON']]] +]; diff --git a/documents/html/search/close.png b/documents/html/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/documents/html/search/close.png differ diff --git a/documents/html/search/defines_0.html b/documents/html/search/defines_0.html new file mode 100644 index 0000000..2deb369 --- /dev/null +++ b/documents/html/search/defines_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/defines_0.js b/documents/html/search/defines_0.js new file mode 100644 index 0000000..9c59c76 --- /dev/null +++ b/documents/html/search/defines_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['rapidjson_5fhas_5fstdstring_76',['RAPIDJSON_HAS_STDSTRING',['../json_8h.html#a2f2eef0ee4477f3fe5874703a66e997f',1,'json.h']]], + ['rapidjson_5fnamespace_77',['RAPIDJSON_NAMESPACE',['../json_8h.html#a743a79d3af927391fe3eb5c979136899',1,'json.h']]], + ['rapidjson_5fnamespace_5fbegin_78',['RAPIDJSON_NAMESPACE_BEGIN',['../json_8h.html#ad3806c8251fdc7da9618b7e922674ffc',1,'json.h']]], + ['rapidjson_5fnamespace_5fend_79',['RAPIDJSON_NAMESPACE_END',['../json_8h.html#af18f052a98b9f5df5448d39484b743c1',1,'json.h']]] +]; diff --git a/documents/html/search/files_0.html b/documents/html/search/files_0.html new file mode 100644 index 0000000..737608e --- /dev/null +++ b/documents/html/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/files_0.js b/documents/html/search/files_0.js new file mode 100644 index 0000000..116eacf --- /dev/null +++ b/documents/html/search/files_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['deserializer_2eh_45',['deserializer.h',['../deserializer_8h.html',1,'']]], + ['deserializer_2einl_46',['deserializer.inl',['../deserializer_8inl.html',1,'']]] +]; diff --git a/documents/html/search/files_1.html b/documents/html/search/files_1.html new file mode 100644 index 0000000..f27a62d --- /dev/null +++ b/documents/html/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/files_1.js b/documents/html/search/files_1.js new file mode 100644 index 0000000..622266d --- /dev/null +++ b/documents/html/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['exceptions_2eh_47',['exceptions.h',['../exceptions_8h.html',1,'']]] +]; diff --git a/documents/html/search/files_2.html b/documents/html/search/files_2.html new file mode 100644 index 0000000..a45066e --- /dev/null +++ b/documents/html/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/files_2.js b/documents/html/search/files_2.js new file mode 100644 index 0000000..a728a1d --- /dev/null +++ b/documents/html/search/files_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['json_2eh_48',['json.h',['../json_8h.html',1,'']]] +]; diff --git a/documents/html/search/files_3.html b/documents/html/search/files_3.html new file mode 100644 index 0000000..1076bc5 --- /dev/null +++ b/documents/html/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/files_3.js b/documents/html/search/files_3.js new file mode 100644 index 0000000..69c1116 --- /dev/null +++ b/documents/html/search/files_3.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['parser_2ecpp_49',['parser.cpp',['../parser_8cpp.html',1,'']]], + ['parser_2eh_50',['parser.h',['../parser_8h.html',1,'']]], + ['parser_2einl_51',['parser.inl',['../parser_8inl.html',1,'']]] +]; diff --git a/documents/html/search/files_4.html b/documents/html/search/files_4.html new file mode 100644 index 0000000..e5cd7f4 --- /dev/null +++ b/documents/html/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/files_4.js b/documents/html/search/files_4.js new file mode 100644 index 0000000..ddc5876 --- /dev/null +++ b/documents/html/search/files_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['serializer_2eh_52',['serializer.h',['../serializer_8h.html',1,'']]], + ['serializer_2einl_53',['serializer.inl',['../serializer_8inl.html',1,'']]] +]; diff --git a/documents/html/search/files_5.html b/documents/html/search/files_5.html new file mode 100644 index 0000000..2cc480f --- /dev/null +++ b/documents/html/search/files_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/files_5.js b/documents/html/search/files_5.js new file mode 100644 index 0000000..5e327e4 --- /dev/null +++ b/documents/html/search/files_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version_2eh_54',['version.h',['../version_8h.html',1,'']]] +]; diff --git a/documents/html/search/functions_0.html b/documents/html/search/functions_0.html new file mode 100644 index 0000000..e17c711 --- /dev/null +++ b/documents/html/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/functions_0.js b/documents/html/search/functions_0.js new file mode 100644 index 0000000..f83b3ea --- /dev/null +++ b/documents/html/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['deserializer_55',['Deserializer',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#acae12b0aea3bf254cb12b67228c5dc0c',1,'CppSerialization::JSON::Deserializer::Deserializer()=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a74b3346d47844a812dd80333daaef58c',1,'CppSerialization::JSON::Deserializer::Deserializer(const Deserializer &)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a40ec8627c9006ed987c09cb426484994',1,'CppSerialization::JSON::Deserializer::Deserializer(Deserializer &&)=delete']]] +]; diff --git a/documents/html/search/functions_1.html b/documents/html/search/functions_1.html new file mode 100644 index 0000000..0ddac0a --- /dev/null +++ b/documents/html/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/functions_1.js b/documents/html/search/functions_1.js new file mode 100644 index 0000000..15bde41 --- /dev/null +++ b/documents/html/search/functions_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['endarray_56',['EndArray',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ab99477079db72b56e0a74e1cb7b98d20',1,'CppSerialization::JSON::Serializer']]], + ['endobject_57',['EndObject',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a773d1e59a7551983ba83f3c9aacd8e72',1,'CppSerialization::JSON::Serializer']]] +]; diff --git a/documents/html/search/functions_2.html b/documents/html/search/functions_2.html new file mode 100644 index 0000000..2737c5a --- /dev/null +++ b/documents/html/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/functions_2.js b/documents/html/search/functions_2.js new file mode 100644 index 0000000..dd7e592 --- /dev/null +++ b/documents/html/search/functions_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['find_58',['Find',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#afa2b5a865adc3302e5992c7c4d58b048',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, bool &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a0fd17c0c31e6a0787fbcec86787befaa',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, int &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a9cdd7b94ed2fe4542958b96695f5e2c9',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, unsigned &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#ab1e7f402cf850692a46ff1e18b96765a',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, int64_t &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a418433884b0b66b74c11a369c0dcbd99',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, uint64_t &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a6d7652f0202da7cf516843685080da72',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, double &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a5ba7578927609b31636f7f420421f5db',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, char *value, size_t size)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a64f7b915783c78e29403fb30509fa84a',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, std::string &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a1203ff889589037f296c0d4257793bd1',1,'CppSerialization::JSON::Deserializer::Find(const JSON &json, const char *key, char(&value)[N])']]], + ['findarray_59',['FindArray',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#ac72e0ef3d3271731da2c6e7a65c33cba',1,'CppSerialization::JSON::Deserializer::FindArray(const JSON &json, const char *key, const std::function< void(const Value &)> &handler)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a79b53828c2f984de8e063981336fe8ea',1,'CppSerialization::JSON::Deserializer::FindArray(const JSON &json, const char *key, const std::function< void(size_t)> &initialize, const std::function< void(const Value &)> &handler)']]], + ['findobject_60',['FindObject',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#aef2306041f4a5e94ab7854d55be33120',1,'CppSerialization::JSON::Deserializer']]] +]; diff --git a/documents/html/search/functions_3.html b/documents/html/search/functions_3.html new file mode 100644 index 0000000..6da86e7 --- /dev/null +++ b/documents/html/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/functions_3.js b/documents/html/search/functions_3.js new file mode 100644 index 0000000..7cd6a9b --- /dev/null +++ b/documents/html/search/functions_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['key_61',['Key',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ab659410d39c0bfe1eab3789f1ae544f5',1,'CppSerialization::JSON::Serializer::Key(const char *key)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#add0a5afa607a89e3cddd4024b02fe613',1,'CppSerialization::JSON::Serializer::Key(const char *key, size_t size)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ad62d59a28b7c470f29e95801b657fc48',1,'CppSerialization::JSON::Serializer::Key(const std::string &key)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a8ec3ae23fd4654784ed95ba7ddf6d65e',1,'CppSerialization::JSON::Serializer::Key(const char(&key)[N])']]] +]; diff --git a/documents/html/search/functions_4.html b/documents/html/search/functions_4.html new file mode 100644 index 0000000..911304e --- /dev/null +++ b/documents/html/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/functions_4.js b/documents/html/search/functions_4.js new file mode 100644 index 0000000..d9c7e22 --- /dev/null +++ b/documents/html/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['operator_3d_62',['operator=',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#aa591911ff29d689e3cdcbd28efbdfe1f',1,'CppSerialization::JSON::Deserializer::operator=(const Deserializer &)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a72a12c80c6dccae18a177ee05ad731ef',1,'CppSerialization::JSON::Deserializer::operator=(Deserializer &&)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#ac19db4ab18fe7444b8e209095453085c',1,'CppSerialization::JSON::Parser::operator=(const Parser &)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#acfbe58a401ca85e9c2889c52b9ea7b01',1,'CppSerialization::JSON::Parser::operator=(Parser &&)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#aad1a1084c337880ff4d383122d5352c2',1,'CppSerialization::JSON::Serializer::operator=(const Serializer &)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a8ba675e7c5ac3576d2f7c41e6bbb4fb5',1,'CppSerialization::JSON::Serializer::operator=(Serializer &&)=default']]] +]; diff --git a/documents/html/search/functions_5.html b/documents/html/search/functions_5.html new file mode 100644 index 0000000..61b920d --- /dev/null +++ b/documents/html/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/functions_5.js b/documents/html/search/functions_5.js new file mode 100644 index 0000000..466dcd5 --- /dev/null +++ b/documents/html/search/functions_5.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['pair_63',['Pair',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a28955398db6b272251b05e7e6e8cba77',1,'CppSerialization::JSON::Serializer::Pair(const char *key, std::nullptr_t value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a8d58703b072eec58305e7bfbc2b6be74',1,'CppSerialization::JSON::Serializer::Pair(const char *key, bool value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a106cb78520a2e412a480e78e7a8adc2b',1,'CppSerialization::JSON::Serializer::Pair(const char *key, int value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a83d60d35d0ddc938d9c86523e823a716',1,'CppSerialization::JSON::Serializer::Pair(const char *key, unsigned value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a8e86f4748426098a5e2499d7a05fed75',1,'CppSerialization::JSON::Serializer::Pair(const char *key, int64_t value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a5008639a935ca9cdf308a28faef7489a',1,'CppSerialization::JSON::Serializer::Pair(const char *key, uint64_t value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#aec7a5223f5f610cbb365693ac12ad85f',1,'CppSerialization::JSON::Serializer::Pair(const char *key, double value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a442406fc59d1309c350b4a3f79365f20',1,'CppSerialization::JSON::Serializer::Pair(const char *key, const char *value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a8d2dff34ebe32e55e6a54b7be11c0452',1,'CppSerialization::JSON::Serializer::Pair(const char *key, const char *value, size_t size)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a0bba71e53aa3d6eee8397467986722e9',1,'CppSerialization::JSON::Serializer::Pair(const char *key, const std::string &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a2b878d93aef2bcc571faab5104635314',1,'CppSerialization::JSON::Serializer::Pair(const char *key, const char(&value)[N])']]], + ['parse_64',['Parse',['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a89969fbe1ca1b9a5a0cb5e854673a5a2',1,'CppSerialization::JSON::Parser::Parse(const char *source)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a87e256a51d92cf0fbd3ee5e1ec9d8ecb',1,'CppSerialization::JSON::Parser::Parse(const char *source, size_t size)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a169848b1a7ec6a011371534bf582985d',1,'CppSerialization::JSON::Parser::Parse(const std::string &source)']]], + ['parseinplace_65',['ParseInPlace',['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a0077788d1137b2392f5e8ba4666a08b3',1,'CppSerialization::JSON::Parser']]], + ['parser_66',['Parser',['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a7706777f710724858bc9b0ca81f1ec53',1,'CppSerialization::JSON::Parser::Parser()=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a998371db13de0e7bcc9fc04a50576d2c',1,'CppSerialization::JSON::Parser::Parser(const Parser &)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a9245067574b7d86dd55d497cab68f4d1',1,'CppSerialization::JSON::Parser::Parser(Parser &&)=delete']]], + ['parsestream_67',['ParseStream',['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#aa6029a4734fc20d5721b9df6b50a133d',1,'CppSerialization::JSON::Parser']]] +]; diff --git a/documents/html/search/functions_6.html b/documents/html/search/functions_6.html new file mode 100644 index 0000000..dc70a4a --- /dev/null +++ b/documents/html/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/functions_6.js b/documents/html/search/functions_6.js new file mode 100644 index 0000000..57592be --- /dev/null +++ b/documents/html/search/functions_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['serializer_68',['Serializer',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a427d39d057f8c232ec964136208469a5',1,'CppSerialization::JSON::Serializer::Serializer()=default'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#aeb2cfe4d4cb07fc3b1a3db1b29f8bb5d',1,'CppSerialization::JSON::Serializer::Serializer(OutputStream &stream)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ad94a0fb6ecc3743689e599156ad0c1f7',1,'CppSerialization::JSON::Serializer::Serializer(const Serializer &)=delete'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ad25f75a652fbc6192ccb6011a9b49074',1,'CppSerialization::JSON::Serializer::Serializer(Serializer &&)=default']]], + ['startarray_69',['StartArray',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a1537d97befb95733a8f1bf0563a33e3d',1,'CppSerialization::JSON::Serializer']]], + ['startobject_70',['StartObject',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#aaa4ed835924e1cc4a7deab21af15d147',1,'CppSerialization::JSON::Serializer']]] +]; diff --git a/documents/html/search/functions_7.html b/documents/html/search/functions_7.html new file mode 100644 index 0000000..7de3106 --- /dev/null +++ b/documents/html/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/functions_7.js b/documents/html/search/functions_7.js new file mode 100644 index 0000000..d15265b --- /dev/null +++ b/documents/html/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['value_71',['Value',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ac88ea6618b4da843a174c1d0b101a7ea',1,'CppSerialization::JSON::Serializer::Value(std::nullptr_t value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a0b8a908812df1c9bedbfd96a3d194309',1,'CppSerialization::JSON::Serializer::Value(bool value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a5617ba0a8914e321c7d6acdf1df28f78',1,'CppSerialization::JSON::Serializer::Value(int value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a4b06aa8ed1f17616dec8ff7aa36434a1',1,'CppSerialization::JSON::Serializer::Value(unsigned value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#ae6cc7a83d1ad6f564a2cfaa1e51e93dc',1,'CppSerialization::JSON::Serializer::Value(int64_t value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a659a811392a01b1db7dba735d6e57191',1,'CppSerialization::JSON::Serializer::Value(uint64_t value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#aa8ced35baf28733ade207658c132b610',1,'CppSerialization::JSON::Serializer::Value(double value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a3721192c895b87d8d88c7a8cfebd5a45',1,'CppSerialization::JSON::Serializer::Value(const char *value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#aacbf2e476af638605b5438a17e786570',1,'CppSerialization::JSON::Serializer::Value(const char *value, size_t size)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a3c753519bd8a56c2aecaf5b9ea59ec89',1,'CppSerialization::JSON::Serializer::Value(const std::string &value)'],['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#a07169db87980d3619904d075d2e0281f',1,'CppSerialization::JSON::Serializer::Value(const char(&value)[N])']]] +]; diff --git a/documents/html/search/functions_8.html b/documents/html/search/functions_8.html new file mode 100644 index 0000000..7422be2 --- /dev/null +++ b/documents/html/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/functions_8.js b/documents/html/search/functions_8.js new file mode 100644 index 0000000..47998c0 --- /dev/null +++ b/documents/html/search/functions_8.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_7edeserializer_72',['~Deserializer',['../class_cpp_serialization_1_1_j_s_o_n_1_1_deserializer.html#a6b797d29fadcd1fcef2adcaae68eb093',1,'CppSerialization::JSON::Deserializer']]], + ['_7eparser_73',['~Parser',['../class_cpp_serialization_1_1_j_s_o_n_1_1_parser.html#a64e0f927da5ffc8329794db062408f08',1,'CppSerialization::JSON::Parser']]], + ['_7eserializer_74',['~Serializer',['../class_cpp_serialization_1_1_j_s_o_n_1_1_serializer.html#af8e599588998580e2a54e7ef9c6d0a59',1,'CppSerialization::JSON::Serializer']]] +]; diff --git a/documents/html/search/mag_sel.png b/documents/html/search/mag_sel.png new file mode 100644 index 0000000..39c0ed5 Binary files /dev/null and b/documents/html/search/mag_sel.png differ diff --git a/documents/html/search/namespaces_0.html b/documents/html/search/namespaces_0.html new file mode 100644 index 0000000..76996d1 --- /dev/null +++ b/documents/html/search/namespaces_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/namespaces_0.js b/documents/html/search/namespaces_0.js new file mode 100644 index 0000000..2443284 --- /dev/null +++ b/documents/html/search/namespaces_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['cppserialization_43',['CppSerialization',['../namespace_cpp_serialization.html',1,'']]], + ['json_44',['JSON',['../namespace_cpp_serialization_1_1_j_s_o_n.html',1,'CppSerialization']]] +]; diff --git a/documents/html/search/nomatches.html b/documents/html/search/nomatches.html new file mode 100644 index 0000000..4377320 --- /dev/null +++ b/documents/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/documents/html/search/pages_0.html b/documents/html/search/pages_0.html new file mode 100644 index 0000000..9a6a29a --- /dev/null +++ b/documents/html/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/pages_0.js b/documents/html/search/pages_0.js new file mode 100644 index 0000000..6c20180 --- /dev/null +++ b/documents/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['c_2b_2b_20serialization_20library_80',['C++ Serialization Library',['../index.html',1,'']]] +]; diff --git a/documents/html/search/search.css b/documents/html/search/search.css new file mode 100644 index 0000000..3cf9df9 --- /dev/null +++ b/documents/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/documents/html/search/search.js b/documents/html/search/search.js new file mode 100644 index 0000000..a554ab9 --- /dev/null +++ b/documents/html/search/search.js @@ -0,0 +1,814 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + This program is free software; you can redistribute it and/or modify + it under the terms of 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. + + 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 General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/documents/html/search/variables_0.js b/documents/html/search/variables_0.js new file mode 100644 index 0000000..600decc --- /dev/null +++ b/documents/html/search/variables_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['version_75',['version',['../namespace_cpp_serialization.html#abc3d6af18e6a0cfd26bccf986376aac6',1,'CppSerialization']]] +]; diff --git a/documents/html/serializer_8h.html b/documents/html/serializer_8h.html new file mode 100644 index 0000000..7d16596 --- /dev/null +++ b/documents/html/serializer_8h.html @@ -0,0 +1,115 @@ + + + + + + + +CppSerialization: include/serialization/json/serializer.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    serializer.h File Reference
    +
    +
    + +

    JSON serializer definition. +More...

    +
    #include "json.h"
    +#include "serializer.inl"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  CppSerialization::JSON::Serializer< OutputStream >
     JSON serializer. More...
     
    + + + + + + + +

    +Namespaces

     CppSerialization
     C++ Serialization project definitions.
     
     CppSerialization::JSON
     JSON definitions.
     
    +

    Detailed Description

    +

    JSON serializer definition.

    +
    Author
    Ivan Shynkarenka
    +
    Date
    25.02.2017
    + + +

    Definition in file serializer.h.

    +
    + + + + diff --git a/documents/html/serializer_8h_source.html b/documents/html/serializer_8h_source.html new file mode 100644 index 0000000..c4c4594 --- /dev/null +++ b/documents/html/serializer_8h_source.html @@ -0,0 +1,186 @@ + + + + + + + +CppSerialization: include/serialization/json/serializer.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    serializer.h
    +
    +
    +Go to the documentation of this file.
    1 
    +
    9 #ifndef CPPSERIALIZATION_JSON_SERIALIZER_H
    +
    10 #define CPPSERIALIZATION_JSON_SERIALIZER_H
    +
    11 
    +
    12 #include "json.h"
    +
    13 
    +
    14 namespace CppSerialization {
    +
    15 namespace JSON {
    +
    16 
    +
    18 
    +
    22 template <class OutputStream>
    +
    23 class Serializer : public Writer<OutputStream>
    +
    24 {
    +
    25 public:
    +
    26  Serializer() = default;
    +
    27  explicit Serializer(OutputStream& stream) : Writer<OutputStream>(stream) {}
    +
    28  Serializer(const Serializer&) = delete;
    +
    29  Serializer(Serializer&&) = default;
    +
    30  ~Serializer() = default;
    +
    31 
    +
    32  Serializer& operator=(const Serializer&) = delete;
    +
    33  Serializer& operator=(Serializer&&) = default;
    +
    34 
    +
    36  void StartObject();
    +
    38  void EndObject();
    +
    39 
    +
    41  void StartArray();
    +
    43  void EndArray();
    +
    44 
    +
    46  void Key(const char* key);
    +
    48  void Key(const char* key, size_t size);
    +
    50  void Key(const std::string& key);
    +
    52  template <std::size_t N>
    +
    53  void Key(const char (&key)[N]);
    +
    54 
    +
    56  void Value(std::nullptr_t value);
    +
    58  void Value(bool value);
    +
    60  void Value(int value);
    +
    62  void Value(unsigned value);
    +
    64  void Value(int64_t value);
    +
    66  void Value(uint64_t value);
    +
    68  void Value(double value);
    +
    70  void Value(const char* value);
    +
    72  void Value(const char* value, size_t size);
    +
    74  void Value(const std::string& value);
    +
    76  template <std::size_t N>
    +
    77  void Value(const char (&value)[N]);
    +
    78 
    +
    80  void Pair(const char* key, std::nullptr_t value)
    +
    81  { Key(key); Value(value); }
    +
    83  void Pair(const char* key, bool value)
    +
    84  { Key(key); Value(value); }
    +
    86  void Pair(const char* key, int value)
    +
    87  { Key(key); Value(value); }
    +
    89  void Pair(const char* key, unsigned value)
    +
    90  { Key(key); Value(value); }
    +
    92  void Pair(const char* key, int64_t value)
    +
    93  { Key(key); Value(value); }
    +
    95  void Pair(const char* key, uint64_t value)
    +
    96  { Key(key); Value(value); }
    +
    98  void Pair(const char* key, double value)
    +
    99  { Key(key); Value(value); }
    +
    101  void Pair(const char* key, const char* value)
    +
    102  { Key(key); Value(value); }
    +
    104  void Pair(const char* key, const char* value, size_t size)
    +
    105  { Key(key); Value(value, size); }
    +
    107  void Pair(const char* key, const std::string& value)
    +
    108  { Key(key); Value(value); }
    +
    110  template <std::size_t N>
    +
    111  void Pair(const char* key, const char (&value)[N])
    +
    112  { Key(key); Value(value); }
    +
    113 };
    +
    114 
    +
    115 } // namespace JSON
    +
    116 } // namespace CppSerialization
    +
    117 
    +
    118 #include "serializer.inl"
    +
    119 
    +
    120 #endif // CPPSERIALIZATION_JSON_SERIALIZER_H
    +
    +
    Serializer(OutputStream &stream)
    Definition: serializer.h:27
    +
    void Pair(const char *key, const char(&value)[N])
    Put the fixed string array key/value pair.
    Definition: serializer.h:111
    +
    void Pair(const char *key, unsigned value)
    Put the unsigned integer key/value pair.
    Definition: serializer.h:89
    +
    void Pair(const char *key, const std::string &value)
    Put the string key/value pair.
    Definition: serializer.h:107
    +
    void Pair(const char *key, std::nullptr_t value)
    Put the null key/value pair.
    Definition: serializer.h:80
    +
    Serializer & operator=(const Serializer &)=delete
    +
    C++ Serialization project definitions.
    Definition: exceptions.h:14
    +
    void Pair(const char *key, const char *value, size_t size)
    Put the C-string key/value pair with a given size.
    Definition: serializer.h:104
    +
    void Key(const char *key)
    Put the C-string key.
    Definition: serializer.inl:41
    +
    void Pair(const char *key, const char *value)
    Put the C-string key/value pair.
    Definition: serializer.h:101
    +
    void EndObject()
    End the current object.
    Definition: serializer.inl:20
    + + +
    void StartObject()
    Start new object.
    Definition: serializer.inl:13
    +
    void EndArray()
    End the current array.
    Definition: serializer.inl:34
    +
    void Pair(const char *key, int value)
    Put the integer key/value pair.
    Definition: serializer.h:86
    +
    void Pair(const char *key, bool value)
    Put the boolean key/value pair.
    Definition: serializer.h:83
    +
    JSON serializer inline implementation.
    +
    void Value(std::nullptr_t value)
    Put the null value.
    Definition: serializer.inl:70
    +
    void Pair(const char *key, double value)
    Put the double key/value pair.
    Definition: serializer.h:98
    +
    JSON C++ Library definition.
    +
    void Pair(const char *key, int64_t value)
    Put the 64-bit integer key/value pair.
    Definition: serializer.h:92
    +
    void Pair(const char *key, uint64_t value)
    Put the 64-bit unsigned integer key/value pair.
    Definition: serializer.h:95
    + +
    void StartArray()
    Start new array.
    Definition: serializer.inl:27
    + + + + diff --git a/documents/html/serializer_8inl.html b/documents/html/serializer_8inl.html new file mode 100644 index 0000000..3fd2e02 --- /dev/null +++ b/documents/html/serializer_8inl.html @@ -0,0 +1,106 @@ + + + + + + + +CppSerialization: include/serialization/json/serializer.inl File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    serializer.inl File Reference
    +
    +
    + +

    JSON serializer inline implementation. +More...

    + +

    Go to the source code of this file.

    + + + + + + + + +

    +Namespaces

     CppSerialization
     C++ Serialization project definitions.
     
     CppSerialization::JSON
     JSON definitions.
     
    +

    Detailed Description

    +

    JSON serializer inline implementation.

    +
    Author
    Ivan Shynkarenka
    +
    Date
    25.02.2017
    + + +

    Definition in file serializer.inl.

    +
    + + + + diff --git a/documents/html/serializer_8inl_source.html b/documents/html/serializer_8inl_source.html new file mode 100644 index 0000000..15effe1 --- /dev/null +++ b/documents/html/serializer_8inl_source.html @@ -0,0 +1,231 @@ + + + + + + + +CppSerialization: include/serialization/json/serializer.inl Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    serializer.inl
    +
    +
    +Go to the documentation of this file.
    1 
    +
    9 namespace CppSerialization {
    +
    10 namespace JSON {
    +
    11 
    +
    12 template <class OutputStream>
    + +
    14 {
    +
    15  if (!Writer<OutputStream>::StartObject())
    +
    16  throwex SerializationException("Cannot start to serialize JSON object!");
    +
    17 }
    +
    18 
    +
    19 template <class OutputStream>
    + +
    21 {
    +
    22  if (!Writer<OutputStream>::EndObject())
    +
    23  throwex SerializationException("Cannot end to serialize JSON object!");
    +
    24 }
    +
    25 
    +
    26 template <class OutputStream>
    + +
    28 {
    +
    29  if (!Writer<OutputStream>::StartArray())
    +
    30  throwex SerializationException("Cannot start to serialize JSON array!");
    +
    31 }
    +
    32 
    +
    33 template <class OutputStream>
    + +
    35 {
    +
    36  if (!Writer<OutputStream>::EndArray())
    +
    37  throwex SerializationException("Cannot end to serialize JSON array!");
    +
    38 }
    +
    39 
    +
    40 template <class OutputStream>
    +
    41 inline void Serializer<OutputStream>::Key(const char* key)
    +
    42 {
    +
    43  if (!Writer<OutputStream>::Key(key))
    +
    44  throwex SerializationException("Cannot serialize JSON key!");
    +
    45 }
    +
    46 
    +
    47 template <class OutputStream>
    +
    48 inline void Serializer<OutputStream>::Key(const char* key, size_t size)
    +
    49 {
    +
    50  if (!Writer<OutputStream>::Key(key, size))
    +
    51  throwex SerializationException("Cannot serialize JSON key!");
    +
    52 }
    +
    53 
    +
    54 template <class OutputStream>
    +
    55 inline void Serializer<OutputStream>::Key(const std::string& key)
    +
    56 {
    +
    57  if (!Writer<OutputStream>::Key(key))
    +
    58  throwex SerializationException("Cannot serialize JSON key!");
    +
    59 }
    +
    60 
    +
    61 template <class OutputStream>
    +
    62 template <std::size_t N>
    +
    63 inline void Serializer<OutputStream>::Key(const char (&key)[N])
    +
    64 {
    +
    65  if (!Writer<OutputStream>::Key(key, N))
    +
    66  throwex SerializationException("Cannot serialize JSON key!");
    +
    67 }
    +
    68 
    +
    69 template <class OutputStream>
    +
    70 inline void Serializer<OutputStream>::Value(std::nullptr_t value)
    +
    71 {
    +
    72  if (!Writer<OutputStream>::Null())
    +
    73  throwex SerializationException("Cannot serialize JSON null value!");
    +
    74 }
    +
    75 
    +
    76 template <class OutputStream>
    +
    77 inline void Serializer<OutputStream>::Value(bool value)
    +
    78 {
    +
    79  if (!Writer<OutputStream>::Bool(value))
    +
    80  throwex SerializationException("Cannot serialize JSON bool value!");
    +
    81 }
    +
    82 
    +
    83 template <class OutputStream>
    +
    84 inline void Serializer<OutputStream>::Value(int value)
    +
    85 {
    +
    86  if (!Writer<OutputStream>::Int(value))
    +
    87  throwex SerializationException("Cannot serialize JSON integer value!");
    +
    88 }
    +
    89 
    +
    90 template <class OutputStream>
    +
    91 inline void Serializer<OutputStream>::Value(unsigned value)
    +
    92 {
    +
    93  if (!Writer<OutputStream>::UInt(value))
    +
    94  throwex SerializationException("Cannot serialize JSON unsigned value!");
    +
    95 }
    +
    96 
    +
    97 template <class OutputStream>
    +
    98 inline void Serializer<OutputStream>::Value(int64_t value)
    +
    99 {
    +
    100  if (!Writer<OutputStream>::Int64(value))
    +
    101  throwex SerializationException("Cannot serialize JSON 64-bit integer value!");
    +
    102 }
    +
    103 
    +
    104 template <class OutputStream>
    +
    105 inline void Serializer<OutputStream>::Value(uint64_t value)
    +
    106 {
    +
    107  if (!Writer<OutputStream>::UInt64(value))
    +
    108  throwex SerializationException("Cannot serialize JSON 64-bit unsigned value!");
    +
    109 }
    +
    110 
    +
    111 template <class OutputStream>
    +
    112 inline void Serializer<OutputStream>::Value(double value)
    +
    113 {
    +
    114  if (!Writer<OutputStream>::Double(value))
    +
    115  throwex SerializationException("Cannot serialize JSON double value!");
    +
    116 }
    +
    117 
    +
    118 template <class OutputStream>
    +
    119 inline void Serializer<OutputStream>::Value(const char* value)
    +
    120 {
    +
    121  if (!Writer<OutputStream>::String(value))
    +
    122  throwex SerializationException("Cannot serialize JSON C-string value!");
    +
    123 }
    +
    124 
    +
    125 template <class OutputStream>
    +
    126 inline void Serializer<OutputStream>::Value(const char* value, size_t size)
    +
    127 {
    +
    128  if (!Writer<OutputStream>::String(value, size))
    +
    129  throwex SerializationException("Cannot serialize JSON C-string value with a given size!");
    +
    130 }
    +
    131 
    +
    132 template <class OutputStream>
    +
    133 inline void Serializer<OutputStream>::Value(const std::string& value)
    +
    134 {
    +
    135  if (!Writer<OutputStream>::String(value))
    +
    136  throwex SerializationException("Cannot serialize JSON string value!");
    +
    137 }
    +
    138 
    +
    139 template <class OutputStream>
    +
    140 template <std::size_t N>
    +
    141 inline void Serializer<OutputStream>::Value(const char (&value)[N])
    +
    142 {
    +
    143  if (!Writer<OutputStream>::String(value, N))
    +
    144  throwex SerializationException("Cannot serialize JSON string array value!");
    +
    145 }
    +
    146 
    +
    147 } // namespace JSON
    +
    148 } // namespace CppSerialization
    +
    +
    C++ Serialization project definitions.
    Definition: exceptions.h:14
    +
    void Key(const char *key)
    Put the C-string key.
    Definition: serializer.inl:41
    +
    void EndObject()
    End the current object.
    Definition: serializer.inl:20
    +
    void StartObject()
    Start new object.
    Definition: serializer.inl:13
    +
    void EndArray()
    End the current array.
    Definition: serializer.inl:34
    + +
    void Value(std::nullptr_t value)
    Put the null value.
    Definition: serializer.inl:70
    +
    void StartArray()
    Start new array.
    Definition: serializer.inl:27
    + + + + diff --git a/documents/html/splitbar.png b/documents/html/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/documents/html/splitbar.png differ diff --git a/documents/html/sync_off.png b/documents/html/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/documents/html/sync_off.png differ diff --git a/documents/html/sync_on.png b/documents/html/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/documents/html/sync_on.png differ diff --git a/documents/html/tab_a.png b/documents/html/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/documents/html/tab_a.png differ diff --git a/documents/html/tab_b.png b/documents/html/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/documents/html/tab_b.png differ diff --git a/documents/html/tab_h.png b/documents/html/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/documents/html/tab_h.png differ diff --git a/documents/html/tab_s.png b/documents/html/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/documents/html/tab_s.png differ diff --git a/documents/html/tabs.css b/documents/html/tabs.css new file mode 100644 index 0000000..7d45d36 --- /dev/null +++ b/documents/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/documents/html/version_8h.html b/documents/html/version_8h.html new file mode 100644 index 0000000..48e8ea0 --- /dev/null +++ b/documents/html/version_8h.html @@ -0,0 +1,110 @@ + + + + + + + +CppSerialization: include/serialization/version.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    version.h File Reference
    +
    +
    + +

    Version definition. +More...

    + +

    Go to the source code of this file.

    + + + + + +

    +Namespaces

     CppSerialization
     C++ Serialization project definitions.
     
    + + + + +

    +Variables

    const char CppSerialization::version [] = "1.0.2.0"
     Project version. More...
     
    +

    Detailed Description

    +

    Version definition.

    +
    Author
    Ivan Shynkarenka
    +
    Date
    24.02.2017
    + + +

    Definition in file version.h.

    +
    + + + + diff --git a/documents/html/version_8h_source.html b/documents/html/version_8h_source.html new file mode 100644 index 0000000..48531a2 --- /dev/null +++ b/documents/html/version_8h_source.html @@ -0,0 +1,95 @@ + + + + + + + +CppSerialization: include/serialization/version.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    CppSerialization +  1.0.2.0 +
    +
    C++ Serialization Library
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    version.h
    +
    +
    +Go to the documentation of this file.
    1 
    +
    9 #ifndef CPPSERIALIZATION_VERSION_H
    +
    10 #define CPPSERIALIZATION_VERSION_H
    +
    11 
    +
    28 namespace CppSerialization {
    +
    29 
    +
    31 const char version[] = "1.0.2.0";
    +
    32 
    +
    33 } // namespace CppSerialization
    +
    34 
    +
    35 #endif // CPPSERIALIZATION_VERSION_H
    +
    +
    C++ Serialization project definitions.
    Definition: exceptions.h:14
    +
    const char version[]
    Project version.
    Definition: version.h:31
    + + + + diff --git a/examples/zpp_bits.cpp b/examples/zpp_bits.cpp new file mode 100644 index 0000000..e0103e7 --- /dev/null +++ b/examples/zpp_bits.cpp @@ -0,0 +1,57 @@ +/*! + \file zpp_bits.cpp + \brief zpp_bits serialization example + \author Ivan Shynkarenka + \date 30.03.2017 + \copyright MIT License +*/ + +#include "../proto/trade.h" +#include "zpp_bits/zpp_bits.h" + +#include + +namespace TradeProto +{ +auto serialize(const Order &) -> zpp::bits::members<6>; +auto serialize(const Account &) -> zpp::bits::members<4>; +auto serialize(const Balance &) -> zpp::bits::members<2>; +} + +int main(int argc, char** argv) +{ + // Create a new account with some orders + TradeProto::Account account(1, "Test", "USD", 1000); + account.Orders.emplace_back(TradeProto::Order(1, "EURUSD", TradeProto::OrderSide::BUY, TradeProto::OrderType::MARKET, 1.23456, 1000)); + account.Orders.emplace_back(TradeProto::Order(2, "EURUSD", TradeProto::OrderSide::SELL, TradeProto::OrderType::LIMIT, 1.0, 100)); + account.Orders.emplace_back(TradeProto::Order(3, "EURUSD", TradeProto::OrderSide::BUY, TradeProto::OrderType::STOP, 1.5, 10)); + + // Serialize the account to bytes. + auto [data, out] = zpp::bits::data_out(); + (void) out(account); + + // Show the serialized size + std::cout << "zpp_bits data size: " << data.size() << std::endl; + + TradeProto::Account deserialized; + (void) zpp::bits::in{data}(deserialized); + + // Show account content + std::cout << std::endl; + std::cout << "Account.Id = " << deserialized.Id << std::endl; + std::cout << "Account.Name = " << deserialized.Name << std::endl; + std::cout << "Account.Wallet.Currency = " << deserialized.Wallet.Currency << std::endl; + std::cout << "Account.Wallet.Amount = " << deserialized.Wallet.Amount << std::endl; + for (const auto& order : deserialized.Orders) + { + std::cout << "Account.Order => Id: " << order.Id + << ", Symbol: " << order.Symbol + << ", Side: " << (int)order.Side + << ", Type: " << (int)order.Type + << ", Price: " << order.Price + << ", Volume: " << order.Volume + << std::endl; + } + + return 0; +} diff --git a/performance/zpp_deserialize.cpp b/performance/zpp_deserialize.cpp new file mode 100644 index 0000000..ae38760 --- /dev/null +++ b/performance/zpp_deserialize.cpp @@ -0,0 +1,43 @@ +// +// Created by Ivan Shynkarenka on 30.03.2018 +// + +#include "benchmark/cppbenchmark.h" + +#include "../proto/trade.h" +#include "zpp_bits/zpp_bits.h" + +namespace TradeProto +{ +auto serialize(const Order &) -> zpp::bits::members<6>; +auto serialize(const Account &) -> zpp::bits::members<4>; +auto serialize(const Balance &) -> zpp::bits::members<2>; +} + +class DeserializationFixture +{ +protected: + TradeProto::Account account; + std::array buffer; + + DeserializationFixture() : account(1, "Test", "USD", 1000) + { + // Create a new account with some orders + account.Orders.emplace_back(1, "EURUSD", TradeProto::OrderSide::BUY, TradeProto::OrderType::MARKET, 1.23456, 1000); + account.Orders.emplace_back(2, "EURUSD", TradeProto::OrderSide::SELL, TradeProto::OrderType::LIMIT, 1.0, 100); + account.Orders.emplace_back(3, "EURUSD", TradeProto::OrderSide::BUY, TradeProto::OrderType::STOP, 1.5, 10); + + // Serialize + (void) zpp::bits::out{buffer}(account); + } +}; + +BENCHMARK_FIXTURE(DeserializationFixture, "ZppBits-Deserialize") +{ + zpp::bits::in in{buffer}; + (void) in(account); + context.metrics().AddBytes(in.position()); + context.metrics().SetCustom("Size", (unsigned)in.position()); +} + +BENCHMARK_MAIN() diff --git a/performance/zpp_serialize.cpp b/performance/zpp_serialize.cpp new file mode 100644 index 0000000..a7401a2 --- /dev/null +++ b/performance/zpp_serialize.cpp @@ -0,0 +1,40 @@ +// +// Created by Ivan Shynkarenka on 30.03.2018 +// + +#include "benchmark/cppbenchmark.h" + +#include "../proto/trade.h" +#include "zpp_bits/zpp_bits.h" + +namespace TradeProto +{ +auto serialize(const Order &) -> zpp::bits::members<6>; +auto serialize(const Account &) -> zpp::bits::members<4>; +auto serialize(const Balance &) -> zpp::bits::members<2>; +} + +class SerializationFixture +{ +protected: + TradeProto::Account account; + std::array buffer; + + SerializationFixture() : account(1, "Test", "USD", 1000) + { + // Create a new account with some orders + account.Orders.emplace_back(1, "EURUSD", TradeProto::OrderSide::BUY, TradeProto::OrderType::MARKET, 1.23456, 1000); + account.Orders.emplace_back(2, "EURUSD", TradeProto::OrderSide::SELL, TradeProto::OrderType::LIMIT, 1.0, 100); + account.Orders.emplace_back(3, "EURUSD", TradeProto::OrderSide::BUY, TradeProto::OrderType::STOP, 1.5, 10); + } +}; + +BENCHMARK_FIXTURE(SerializationFixture, "ZppBits-Serialize") +{ + zpp::bits::out out{buffer}; + (void) out(account); + context.metrics().AddBytes(out.position()); + context.metrics().SetCustom("Size", (unsigned)out.position()); +} + +BENCHMARK_MAIN() diff --git a/tests/test_zpp_bits.cpp b/tests/test_zpp_bits.cpp new file mode 100644 index 0000000..b522a2c --- /dev/null +++ b/tests/test_zpp_bits.cpp @@ -0,0 +1,61 @@ +// +// Created by Ivan Shynkarenka on 30.03.2017 +// + +#include "test.h" + +#include "../proto/trade.h" +#include "zpp_bits/zpp_bits.h" + +using namespace CppCommon; +using namespace CppSerialization; + +namespace TradeProto +{ +auto serialize(const Order &) -> zpp::bits::members<6>; +auto serialize(const Account &) -> zpp::bits::members<4>; +auto serialize(const Balance &) -> zpp::bits::members<2>; +} + +TEST_CASE("ZppBits", "[CppSerialization]") +{ + // Create a new account with some orders + TradeProto::Account account(1, "Test", "USD", 1000); + account.Orders.emplace_back(TradeProto::Order(1, "EURUSD", TradeProto::OrderSide::BUY, TradeProto::OrderType::MARKET, 1.23456, 1000)); + account.Orders.emplace_back(TradeProto::Order(2, "EURUSD", TradeProto::OrderSide::SELL, TradeProto::OrderType::LIMIT, 1.0, 100)); + account.Orders.emplace_back(TradeProto::Order(3, "EURUSD", TradeProto::OrderSide::BUY, TradeProto::OrderType::STOP, 1.5, 10)); + + // Serialize the account to bytes. + auto [buffer, in, out] = zpp::bits::data_in_out(); + (void) out(account); + + REQUIRE(!buffer.empty()); + + // Deserialize the account from bytes. + TradeProto::Account deserialized; + (void) in(deserialized); + + REQUIRE(deserialized.Id == 1); + REQUIRE(deserialized.Name == "Test"); + REQUIRE(std::string(deserialized.Wallet.Currency) == "USD"); + REQUIRE(deserialized.Wallet.Amount == 1000); + REQUIRE(deserialized.Orders.size() == 3); + REQUIRE(deserialized.Orders[0].Id == 1); + REQUIRE(std::string(deserialized.Orders[0].Symbol) == "EURUSD"); + REQUIRE(deserialized.Orders[0].Side == TradeProto::OrderSide::BUY); + REQUIRE(deserialized.Orders[0].Type == TradeProto::OrderType::MARKET); + REQUIRE(deserialized.Orders[0].Price == 1.23456); + REQUIRE(deserialized.Orders[0].Volume == 1000); + REQUIRE(deserialized.Orders[1].Id == 2); + REQUIRE(std::string(deserialized.Orders[1].Symbol) == "EURUSD"); + REQUIRE(deserialized.Orders[1].Side == TradeProto::OrderSide::SELL); + REQUIRE(deserialized.Orders[1].Type == TradeProto::OrderType::LIMIT); + REQUIRE(deserialized.Orders[1].Price == 1.0); + REQUIRE(deserialized.Orders[1].Volume == 100); + REQUIRE(deserialized.Orders[2].Id == 3); + REQUIRE(std::string(deserialized.Orders[2].Symbol) == "EURUSD"); + REQUIRE(deserialized.Orders[2].Side == TradeProto::OrderSide::BUY); + REQUIRE(deserialized.Orders[2].Type == TradeProto::OrderType::STOP); + REQUIRE(deserialized.Orders[2].Price == 1.5); + REQUIRE(deserialized.Orders[2].Volume == 10); +}