diff --git a/.editorconfig b/.editorconfig index c2e0235c3..a8b060be6 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,9 +1,12 @@ [*] charset=utf-8 end_of_line=lf -insert_final_newline=true +insert_final_newline=false indent_style=space indent_size=2 [Makefile] indent_style = tab + +[*.{c,cpp,cc,h,hpp}] +insert_final_newline=true diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 000000000..32fafb136 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,113 @@ +{ + "configurations": [ + { + "name": "Mac", + "includePath": [ + "/usr/include", + "/usr/local/include", + "${workspaceRoot}" + ], + "defines": [], + "intelliSenseMode": "clang-x64", + "browse": { + "path": [ + "/usr/include", + "/usr/local/include", + "${workspaceRoot}" + ], + "limitSymbolsToIncludedHeaders": true, + "databaseFilename": "" + }, + "macFrameworkPath": [ + "/System/Library/Frameworks", + "/Library/Frameworks" + ] + }, + { + "name": "Linux", + "includePath": [ + "/usr/include", + "/usr/include/linux", + "/usr/local/include", + "/usr/include/x86_64-linux-gnu", + "/usr/lib/gcc/x86_64-linux-gnu/7/include", + "/usr/lib/gcc/x86_64-linux-gnu/6/include", + "/usr/lib/gcc/x86_64-linux-gnu/5/include", + "/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed", + "/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed", + "/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed", + "/usr/include/x86_64-linux-gnu/c++/7", + "/usr/include/x86_64-linux-gnu/c++/6", + "/usr/include/x86_64-linux-gnu/c++/5", + "/usr/include/c++/7", + "/usr/include/c++/6", + "/usr/include/c++/5", + "/usr/include/c++/7/backward", + "/usr/include/c++/6/backward", + "/usr/include/c++/5/backward", + "${workspaceRoot}", + "${workspaceRoot}/build/src/generated", + "${workspaceRoot}/src", + "${workspaceRoot}/src/jbj" + ], + "defines": [ + "_GNU_SOURCE", + "IW_64", + "JB_64" + ], + "intelliSenseMode": "clang-x64", + "browse": { + "path": [ + "/usr/include", + "/usr/include/linux", + "/usr/local/include", + "/usr/include/x86_64-linux-gnu", + "/usr/lib/gcc/x86_64-linux-gnu/7/include", + "/usr/lib/gcc/x86_64-linux-gnu/6/include", + "/usr/lib/gcc/x86_64-linux-gnu/5/include", + "/usr/lib/gcc/x86_64-linux-gnu/7/include-fixed", + "/usr/lib/gcc/x86_64-linux-gnu/6/include-fixed", + "/usr/lib/gcc/x86_64-linux-gnu/5/include-fixed", + "/usr/include/x86_64-linux-gnu/c++/7", + "/usr/include/x86_64-linux-gnu/c++/6", + "/usr/include/x86_64-linux-gnu/c++/5", + "/usr/include/c++/7", + "/usr/include/c++/6", + "/usr/include/c++/5", + "/usr/include/c++/7/backward", + "/usr/include/c++/6/backward", + "/usr/include/c++/5/backward", + "${workspaceRoot}", + "${workspaceRoot}/src" + ], + "limitSymbolsToIncludedHeaders": true, + "databaseFilename": "" + }, + "compilerPath": "/usr/bin/clang", + "cStandard": "c11", + "cppStandard": "c++17" + }, + { + "name": "Win32", + "includePath": [ + "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include", + "${workspaceRoot}" + ], + "defines": [ + "_DEBUG", + "UNICODE", + "_UNICODE" + ], + "intelliSenseMode": "msvc-x64", + "browse": { + "path": [ + "C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include/*", + "${workspaceRoot}" + ], + "limitSymbolsToIncludedHeaders": true, + "databaseFilename": "" + } + } + ], + "version": 4 +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..0b90ef8c8 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,101 @@ +{ + "files.insertFinalNewline": false, + "cmake.configureArgs": [ + "-DBUILD_TESTS=ON", + "-DCMAKE_VERBOSE_MAKEFILE=OFF", + "-DBUILD_SHARED_LIBS=ON", + "-DBUILD_EXAMPLES=ON", + "-DBUILD_BENCHMARKS=OFF" + ], + "cmake.ctestArgs": [], + "cmake.debugConfig": { + "cwd": "${workspaceRoot}/build/src/tests" + }, + "C_Cpp.formatting": "Disabled", + "C_Cpp.autocomplete": "Disabled", + "C_Cpp.errorSquiggles": "Disabled", + "astyle.astylerc": "${workspaceRoot}/.astylerc", + "astyle.c.enable": true, + "astyle.cpp.enable": true, + "clang.completion.enable": true, + "clang.diagnostic.enable": true, + "clang.cflags": [ + "-D_GNU_SOURCE", + "-D_LARGEFILE_SOURCE", + "-D_FILE_OFFSET_BITS=64", + "-DIW_64", + "-DJB_64", + "-std=gnu11", + "-Wc99-compat", + "-Wall", + "-Wcast-qual", + "-Wunused", + "-Wnonportable-system-include-path", + "-Wno-sign-compare", + "-Wno-unused-parameter", + "-Wno-unknown-pragmas", + "-Wno-unused-function", + "-Wno-missing-field-initializers", + "-Wno-missing-braces", + "-Wno-pragma-once-outside-header", + "-I${workspaceRoot}/build/src/generated", + "-I${workspaceRoot}/src", + "-I${workspaceRoot}/src/jbj" + ], + "clang.cxxflags": [ + "-D_GNU_SOURCE", + "-D_LARGEFILE_SOURCE", + "-D_FILE_OFFSET_BITS=64", + "-DIW_64", + "-DJB_64", + "-std=c++11", + "-Wall", + "-Wcast-qual", + "-Wunused", + "-Wnonportable-system-include-path", + "-Wno-sign-compare", + "-Wno-unused-parameter", + "-Wno-unknown-pragmas", + "-Wno-unused-function", + "-Wno-missing-field-initializers", + "-Wno-pragma-once-outside-header", + "-I${workspaceRoot}/build/src/generated", + "-I${workspaceRoot}/src", + "-I${workspaceRoot}/src/jbj" + ], + "files.associations": { + "*.h": "c" + }, + "python.pythonPath": "/usr/bin/python3", + "python.linting.pylintEnabled": false, + "python.linting.enabled": true, + "python.linting.pep8Enabled": false, + "python.linting.flake8Enabled": true, + "search.exclude": { + "**/build": true + }, + "files.exclude": { + "**/.git": true, + "**/build": true, + "**/mxe": true + }, + "cSpell.enabledLanguageIds": [ + "asciidoc", + "html", + "markdown", + "plaintext", + "restructuredtext", + "text" + ], + "cSpell.words": [ + "IWKV" + ], + "cSpell.enabled": false, + "files.watcherExclude": { + "**/.git/objects/**": true, + "**/.git/subtree-cache/**": true, + "**/node_modules/**": true, + "**/mxe/**": true + } +} + diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ef5b25c4..bddccf463 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -64,26 +64,6 @@ if(UPLOAD_PPA) set(ENABLE_PPA ON) endif(UPLOAD_PPA) -# add a target to generate API documentation with Doxygen -find_package(Doxygen) -option(BUILD_DOCUMENTATION "Create and install the HTML based API documentation (requires Doxygen)" OFF) - -if(BUILD_DOCUMENTATION) - if(NOT DOXYGEN_FOUND) - message(FATAL_ERROR "Doxygen is needed to build the documentation.") - endif() - set(doxyfile_in ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) - set(doxyfile ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile) - configure_file(${doxyfile_in} ${doxyfile} @ONLY) - add_custom_target(docs - COMMAND ${DOXYGEN_EXECUTABLE} ${doxyfile} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API documentation with Doxygen" - VERBATIM) - install(CODE "execute_process(COMMAND ${CMAKE_BUILD_TOOL} docs)") - install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/html DESTINATION share/doc) -endif() - add_subdirectory(man) if(NOT ENABLE_PPA) @@ -113,7 +93,7 @@ if(CPACK_GENERATORS) "/\\\\.vscode/" "/\\\\.codelite/" "/\\\\.idea/" - "/cmake-.*/" + "/cmake-.*/" "\\\\.sh$" "\\\\.project$" "\\\\.workspace$" diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..b7e1a499e --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2012-2018 Softmotions Ltd + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 000000000..5c43cd25a --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# EJDB2 + diff --git a/ejdb2.project b/ejdb2.project index def6a5056..64b7f7e4e 100644 --- a/ejdb2.project +++ b/ejdb2.project @@ -13,8 +13,8 @@ - /home/adam/Projects/softmotions/ejdb/build /home/adam/Projects/softmotions/ejdb/cmake-build-Debug + /home/adam/Projects/softmotions/ejdb/build @@ -25,19 +25,17 @@ + + + + - - - - - - diff --git a/installer/CMakeLists.txt b/installer/CMakeLists.txt new file mode 100644 index 000000000..aee2573a8 --- /dev/null +++ b/installer/CMakeLists.txt @@ -0,0 +1,59 @@ +set(CPACK_PACKAGE_NAME "${CMAKE_PROJECT_NAME}") +set(CPACK_PACKAGE_CONTACT "${PROJECT_MAINTAINER}") +set(CPACK_PACKAGE_VERSION ${ejdb2_VERSION}) +set(CPACK_PACKAGE_VERSION_MAJOR ${ejdb2_VERSION_MAJOR}) +set(CPACK_PACKAGE_VERSION_MINOR ${ejdb2_VERSION_MINOR}) +set(CPACK_PACKAGE_VERSION_PATCH ${ejdb2_VERSION_PATCH}) +set(CPACK_PACKAGE_VENDOR ${PROJECT_VENDOR}) +set(CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJECT_DESCRIPTION_SUMMARY}) +set(CPACK_PACKAGE_DESCRIPTION ${PROJECT_DESCRIPTION}) +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/LICENSE") +set(CPACK_RESOURCE_FILE_README "${CMAKE_SOURCE_DIR}/README.md") +set(CPACK_RESOURCE_FILE_WELCOME "${CMAKE_SOURCE_DIR}/README.md") +set(CPACK_PACKAGE_FILE_NAME +"${PROJECT_NAME}-${CPACK_PACKAGE_VERSION}-${CMAKE_BUILD_TYPE}-${CMAKE_SYSTEM_NAME}-${PROJECT_ARCH}") +if (CMAKE_BUILD_TYPE STREQUAL "Release") + set(CPACK_STRIP_FILES ON) +endif() + +if (PACKAGE_DEB) + execute_process ( + COMMAND /usr/bin/dpkg --print-architecture + OUTPUT_VARIABLE CPACK_DEBIAN_PACKAGE_ARCHITECTURE + RESULT_VARIABLE EXECUTE_RESULT + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) + if (EXECUTE_RESULT) + message(FATAL_ERROR "dpkg not found: No package generation.") + endif() + set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${PROJECT_DESCRIPTION}) + set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${PROJECT_WEBSITE}) + set(CPACK_DEBIAN_PACKAGE_SECTION libs) + set(CPACK_DEBIAN_PACKAGE_PRIORITY optional) + #set(CPACK_DEBIAN_PACKAGE_DEPENDS zlib1g) + set(CPACK_DEBIAN_PACKAGE_BUILD_DEPENDS pkg-config git devscripts dh-make) + if (NOT PPA_DEBIAN_VERSION) + set(PPA_DEBIAN_VERSION ppa1) + endif() + if (PROJECT_PPA) + set(DPUT_HOST ${PROJECT_PPA}) + endif() + #set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "any") + set(CPACK_DEBIAN_RESOURCE_FILE_CHANGELOG ${CMAKE_SOURCE_DIR}/Changelog) + set(CPACK_DEBIAN_UPDATE_CHANGELOG ON) +endif(PACKAGE_DEB) + +if (PACKAGE_TGZ) + set(CPACK_INCLUDE_TOPLEVEL_DIRECTORY OFF) +endif(PACKAGE_TGZ) + +include(CPack) + +if (ENABLE_PPA) + if (NOT PROJECT_PPA_DISTRIB_TARGET) + set(PROJECT_PPA_DISTRIB_TARGET xenial artful) + endif() + set(DPUT_CONFIG_IN ${CMAKE_CURRENT_SOURCE_DIR}/debian/dput.cf.in) + include(UploadPPA) +endif() diff --git a/installer/debian/dput.cf.in b/installer/debian/dput.cf.in new file mode 100644 index 000000000..c78437bb4 --- /dev/null +++ b/installer/debian/dput.cf.in @@ -0,0 +1,5 @@ +[ppa] +fqdn = ppa.launchpad.net +method = sftp +login = @PROJECT_PPA_USER@ +incoming = ~%(ppa)s/ubuntu/@DPUT_DIST@ diff --git a/man/CMakeLists.txt b/man/CMakeLists.txt new file mode 100644 index 000000000..e39a26ee2 --- /dev/null +++ b/man/CMakeLists.txt @@ -0,0 +1,2 @@ +install(FILES ejdb.3 DESTINATION ${CMAKE_INSTALL_MANDIR}/man3 + COMPONENT doc) diff --git a/man/ejdb.3 b/man/ejdb.3 new file mode 100644 index 000000000..95e1943e0 --- /dev/null +++ b/man/ejdb.3 @@ -0,0 +1,14 @@ +.TH "EJDB" 3 "2018-05-08" "Man Page" "EJDB" + +.SH NAME +EJDB \- Embedded JSON Database engine + +.SH DESCRIPTION +.PP +It aims to be a fast MongoDB-like library which can be embedded into C/C++ and NodeJS applications. + +.SH "SEE ALSO" +.I http://ejdb.org +EJDB project offcial web site. + + diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1023d78fd..0464ed526 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -83,7 +83,7 @@ add_definitions(-D_GNU_SOURCE) add_definitions(-D_LARGEFILE_SOURCE) add_definitions(-D_FILE_OFFSET_BITS=64) -list(APPEND ALL_SRC ${CMAKE_CURRENT_SOURCE_DIR}/jb.c) +list(APPEND ALL_SRC ${CMAKE_CURRENT_SOURCE_DIR}/ejdb2.c) foreach(MODULE IN LISTS MODULES) file(GLOB MODULE_SRC ${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}/*.c) @@ -93,8 +93,8 @@ foreach(MODULE IN LISTS MODULES) list(APPEND PROJECT_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/${MODULE}) endforeach(MODULE) -list(APPEND PUB_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/jb.h - ${CMAKE_CURRENT_SOURCE_DIR}/jbdefs.h +list(APPEND PUB_HDRS ${CMAKE_CURRENT_SOURCE_DIR}/ejdb2.h + ${CMAKE_CURRENT_SOURCE_DIR}/ejdb2defs.h ${CMAKE_CURRENT_SOURCE_DIR}/jbi/jbi.h ) @@ -132,7 +132,7 @@ if (CMAKE_COMPILER_IS_GNUCC) endif() endif() -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tmpl/jbcfg.h ${PROJECT_GENERATED_DIR}/jbcfg.h) +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/tmpl/ejdb2cfg.h ${PROJECT_GENERATED_DIR}/ejdb2cfg.h) file(GLOB PROJECT_GENERATED_HDRS ${PROJECT_GENERATED_DIR}/*.h) list(APPEND ALL_HDRS ${PROJECT_GENERATED_HDRS}) diff --git a/src/ejdb2.c b/src/ejdb2.c new file mode 100644 index 000000000..26404d0b7 --- /dev/null +++ b/src/ejdb2.c @@ -0,0 +1,7 @@ +#include "ejdb2.h" + +void ejdb2_init() { + +} + + diff --git a/src/ejdb2.h b/src/ejdb2.h new file mode 100644 index 000000000..74ff5a5ce --- /dev/null +++ b/src/ejdb2.h @@ -0,0 +1,7 @@ +#pragma once +#ifndef EJDB2_H +#define EJDB2_H + +void ejdb2_init(); + +#endif diff --git a/src/ejdb2defs.h b/src/ejdb2defs.h new file mode 100644 index 000000000..2d86a1c75 --- /dev/null +++ b/src/ejdb2defs.h @@ -0,0 +1,6 @@ +#pragma once +#ifndef EJDB2DEFS_H +#define EJDB2DEFS_H + + +#endif diff --git a/src/jb.c b/src/jb.c deleted file mode 100644 index 2a2dc1a50..000000000 --- a/src/jb.c +++ /dev/null @@ -1,3 +0,0 @@ -#include "jb.h" - - diff --git a/src/jb.h b/src/jb.h deleted file mode 100644 index 0fa358366..000000000 --- a/src/jb.h +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once -#ifndef JB_H -#define JB_H - - - -#endif diff --git a/src/jbdefs.h b/src/jbdefs.h deleted file mode 100644 index caaeafb4b..000000000 --- a/src/jbdefs.h +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once -#ifndef JBDEFS_H -#define JBDEFS_H - - -#endif diff --git a/src/jbj/jbj.c b/src/jbj/jbj.c index 89945c2e9..b63764018 100644 --- a/src/jbj/jbj.c +++ b/src/jbj/jbj.c @@ -1,3 +1,6 @@ #include "jbj.h" +void jbc_init() { + +} diff --git a/src/tmpl/jbcfg.h b/src/tmpl/ejdb2cfg.h similarity index 100% rename from src/tmpl/jbcfg.h rename to src/tmpl/ejdb2cfg.h diff --git a/win64-tc.cmake b/win64-tc.cmake new file mode 100644 index 000000000..c93b21429 --- /dev/null +++ b/win64-tc.cmake @@ -0,0 +1,28 @@ +if (NOT MXE_HOME) + set(MXE_HOME $ENV{MXE_HOME}) +endif() +if (NOT MXE_HOME) + message(FATAL_ERROR "Please setup MXE_HOME environment variable") +endif() + +if (NOT MXE_CFG) + set(MXE_CFG $ENV{MXE_CFG}) + if (NOT MXE_CFG) + set(MXE_CFG "x86_64-w64-mingw32.static") + endif() +endif() + +set(CMAKE_SYSTEM_NAME Windows) +set(MSYS 1) +set(CMAKE_FIND_ROOT_PATH ${MXE_HOME}/usr/${MXE_CFG}) +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_C_COMPILER ${MXE_HOME}/usr/bin/${MXE_CFG}-gcc) +set(CMAKE_CXX_COMPILER ${MXE_HOME}/usr/bin/${MXE_CFG}-g++) +set(CMAKE_RC_COMPILER ${MXE_HOME}/usr/bin/${MXE_CFG}-windres) +set(CMAKE_MODULE_PATH "${MXE_HOME}/src/cmake" ${CMAKE_MODULE_PATH}) # For mxe FindPackage scripts +#set(CMAKE_INSTALL_PREFIX ${MXE_HOME}/usr/x86_64-w64-mingw32.static CACHE PATH "Installation Prefix") +set(CMAKE_CROSS_COMPILING ON) # Workaround for http://www.cmake.org/Bug/view.php?id=14075 +set(CMAKE_RC_COMPILE_OBJECT " -O coff -o ") # Workaround for buggy windres rules +set(PKG_CONFIG_EXECUTABLE ${MXE_HOME}/usr/bin/${MXE_CFG}-pkg-config)