Skip to content

Commit 1647ebe

Browse files
release3.00.3.2
1 parent 09a533c commit 1647ebe

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+5282
-3255
lines changed

.clang-format

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
BasedOnStyle: LLVM
2+
IndentWidth: 4
3+
ColumnLimit: 120
4+
BreakBeforeBraces: Linux

.clang-tidy

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
# Disable checks for unrelated platform or projects: OSX and WebKit
2+
# Disable readability-braces-around-statements because there are too many and introduces format issues
3+
# Disable modernize-use-trailing-return-type because we prefix the old style for simple typenames
4+
# Disable performance-avoid-endl because we don't care performance of logging
5+
# Disable performance-enum-size because we don't care sizeof(enum)
6+
# Disable llvm-header-guard because we use #pragma once
7+
8+
Checks: 'bugprone-*, readability-*, modernize-*, performance-*, concurrency-*, portability-*, misc-*,
9+
cppcoreguidelines-*, cert-*, google-*, hicpp-*, llvm-*,
10+
-readability-braces-around-statements, -google-readability-braces-around-statements, -hicpp-braces-around-statements,
11+
-modernize-use-trailing-return-type,
12+
-performance-avoid-endl,
13+
-performance-enum-size,
14+
-llvm-header-guard,
15+
-clang-analyzer-core.CallAndMessage,
16+
-clang-analyzer-optin.core.EnumCastOutOfRange,
17+
-clang-analyzer-optin.cplusplus.UninitializedObject,
18+
-clang-analyzer-security.ArrayBound,
19+
-clang-analyzer-security.insecureAPI.strcpy,
20+
-bugprone-assignment-in-if-condition,
21+
-bugprone-easily-swappable-parameters,
22+
-bugprone-empty-catch,
23+
-bugprone-implicit-widening-of-multiplication-result,
24+
-bugprone-incorrect-roundings,
25+
-bugprone-macro-parentheses,
26+
-bugprone-multiple-new-in-one-expression,
27+
-bugprone-narrowing-conversions,
28+
-bugprone-signed-char-misuse,
29+
-bugprone-switch-missing-default-case,
30+
-bugprone-undefined-memory-manipulation,
31+
-bugprone-unhandled-exception-at-new,
32+
-bugprone-unique-ptr-array-mismatch,
33+
-readability-avoid-const-params-in-decls,
34+
-readability-avoid-nested-conditional-operator,
35+
-readability-avoid-unconditional-preprocessor-if,
36+
-readability-container-data-pointer,
37+
-readability-convert-member-functions-to-static,
38+
-readability-enum-initial-value, cert-int09-c,
39+
-readability-function-cognitive-complexity,
40+
-readability-identifier-length,
41+
-readability-implicit-bool-conversion,
42+
-readability-inconsistent-declaration-parameter-name,
43+
-readability-isolate-declaration,
44+
-readability-magic-numbers, -cppcoreguidelines-avoid-magic-numbers,
45+
-readability-make-member-function-const,
46+
-readability-non-const-parameter,
47+
-readability-simplify-boolean-expr,
48+
-readability-delete-null-pointer,
49+
-readability-suspicious-call-argument,
50+
-modernize-avoid-bind,
51+
-modernize-avoid-c-arrays, -hicpp-avoid-c-arrays,
52+
-modernize-loop-convert,
53+
-modernize-macro-to-enum, -cppcoreguidelines-macro-to-enum,
54+
-modernize-return-braced-init-list,
55+
-modernize-type-traits,
56+
-modernize-use-default-member-init,
57+
-modernize-use-nodiscard,
58+
-portability-template-virtual-member-function,
59+
-misc-const-correctness,
60+
-misc-include-cleaner,
61+
-misc-no-recursion,
62+
-misc-non-private-member-variables-in-classes,
63+
-misc-unused-parameters,
64+
-misc-use-anonymous-namespace,
65+
-misc-use-internal-linkage,
66+
-cppcoreguidelines-avoid-c-arrays,
67+
-cppcoreguidelines-avoid-const-or-ref-data-members,
68+
-cppcoreguidelines-avoid-do-while,
69+
-cppcoreguidelines-avoid-goto, -hicpp-avoid-goto,
70+
-cppcoreguidelines-avoid-non-const-global-variables,
71+
-cppcoreguidelines-c-copy-assignment-signature,
72+
-cppcoreguidelines-init-variables,
73+
-cppcoreguidelines-macro-usage,
74+
-cppcoreguidelines-misleading-capture-default-by-value,
75+
-cppcoreguidelines-narrowing-conversions,
76+
-cppcoreguidelines-non-private-member-variables-in-classes,
77+
-cppcoreguidelines-owning-memory,
78+
-cppcoreguidelines-prefer-member-initializer,
79+
-cppcoreguidelines-slicing,
80+
-cppcoreguidelines-special-member-functions, -hicpp-special-member-functions,
81+
-cppcoreguidelines-pro-bounds-array-to-pointer-decay, -hicpp-no-array-decay,
82+
-cppcoreguidelines-pro-bounds-constant-array-index,
83+
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
84+
-cppcoreguidelines-pro-type-cstyle-cast,
85+
-cppcoreguidelines-pro-type-member-init, -hicpp-member-init,
86+
-cppcoreguidelines-pro-type-reinterpret-cast,
87+
-cppcoreguidelines-pro-type-union-access,
88+
-cppcoreguidelines-pro-type-vararg, -hicpp-vararg,
89+
-cert-err33-c,
90+
-cert-err34-c,
91+
-cert-err58-cpp,
92+
-cert-err60-cpp,
93+
-cert-msc30-c, -cert-msc50-cpp,
94+
-cert-msc32-c, -cert-msc51-cpp,
95+
-cert-oop54-cpp,
96+
-cert-str34-c,
97+
-google-default-arguments,
98+
-google-global-names-in-headers,
99+
-google-readability-casting,
100+
-google-runtime-int,
101+
'
102+
103+
CheckOptions:
104+
cppcoreguidelines-special-member-functions.AllowSoleDefaultDtor: true
105+
readability-redundant-member-init.IgnoreBaseInCopyConstructors: true
106+
misc-include-cleaner.IgnoreHeaders: asm-generic/.*
107+
hicpp-signed-bitwise.IgnorePositiveIntegerLiterals: true
108+
hicpp-special-member-functions.AllowSoleDefaultDtor: true

.gitignore

Lines changed: 8 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,10 @@
1-
.idea
2-
cmake-build-debug
3-
project
4-
cmake-build-debug-coverage
5-
makefile
6-
Makefile
7-
libDolphinDBAPI.so
8-
copytest
9-
/vs
1+
# IDE
102
.vscode/
11-
.clangd/
12-
.cache
3+
4+
# CI
135
build/
14-
CMakeFiles/
15-
test/*example*.*
16-
obj/
17-
*.dll
18-
test/*.dos
19-
libtest/
20-
report/coverage/*
21-
bin/*
22-
__pycache__
23-
demo/bin
24-
demo/lib
25-
demo/build
6+
compile_commands.json
7+
8+
# deb package
9+
dolphindb
10+
dolphindb.deb

CMakeLists.txt

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,31 +89,45 @@ if (USE_AERON)
8989
endif()
9090
endif()
9191

92+
find_package(Threads REQUIRED)
93+
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE Threads::Threads)
9294
if (WIN32)
9395
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE _DDBAPIDLL)
9496
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ws2_32 crypt32)
9597
if (MINGW)
9698
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE _WIN32_WINNT=0x0600)
9799
endif()
98100
else()
99-
check_include_file_cxx("uuid/uuid.h" HAS_UUID)
100-
if (NOT HAS_UUID)
101-
message(FATAL_ERROR "Failed to find uuid.")
102-
endif()
103-
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE pthread rt uuid)
104-
if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" AND CMAKE_CXX_COMPILER_VERSION LESS 8)
105-
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE -w)
101+
# libuuid
102+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
103+
find_package(LibUUID REQUIRED)
104+
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE LibUUID::LibUUID)
105+
# Linux shared memory API
106+
include(CheckLibraryExists)
107+
check_library_exists("" shm_open "" LIBRT_MERGED)
108+
if (NOT LIBRT_MERGED)
109+
target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE rt)
106110
endif()
107111
endif()
108112

113+
set(CMAKE_CXX_FLAGS_DEV "${CMAKE_CXX_FLAGS_DEBUG}")
114+
set(CMAKE_CXX_FLAGS_COV "${CMAKE_CXX_FLAGS_DEBUG}")
109115
if (MSVC)
110-
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE /W4 /MP /Zc:__cplusplus /utf-8)
116+
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE /W4 /MP /Zc:__cplusplus /utf-8 /bigobj)
117+
target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE _CRT_SECURE_NO_WARNINGS)
111118
if (${CMAKE_BUILD_TYPE} MATCHES "Dev")
112119
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE /WX)
113120
endif()
121+
elseif (MINGW)
122+
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE -Wa,-mbig-obj)
114123
else()
115-
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic)
124+
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE -Wall -Wextra -Wpedantic -fstrict-aliasing)
125+
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE -fsigned-char)
116126
set(CMAKE_CXX_FLAGS_DEV "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -Werror")
127+
if (${CMAKE_BUILD_TYPE} MATCHES "Cov")
128+
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE --coverage)
129+
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE --coverage)
130+
endif()
117131
endif()
118132

119133
if (WITH_UNITTEST)

cmake/FindLibUUID.cmake

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# This file is adapted from CMake's internal FindLibUUID module
2+
# Original source: https://github.com/Kitware/CMake/blob/v4.2.1/Source/Modules/FindLibUUID.cmake
3+
#
4+
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
5+
# file LICENSE.rst or https://cmake.org/licensing for details.
6+
7+
#[=======================================================================[.rst:
8+
FindLibUUID
9+
------------
10+
11+
Find LibUUID include directory and library.
12+
13+
Imported Targets
14+
^^^^^^^^^^^^^^^^
15+
16+
An :ref:`imported target <Imported targets>` named
17+
``LibUUID::LibUUID`` is provided if LibUUID has been found.
18+
19+
Result Variables
20+
^^^^^^^^^^^^^^^^
21+
22+
This module defines the following variables:
23+
24+
``LibUUID_FOUND``
25+
Boolean indicating whether LibUUID was found.
26+
``LibUUID_INCLUDE_DIRS``
27+
Include directories needed to include LibUUID headers.
28+
``LibUUID_LIBRARIES``
29+
Libraries needed to link to LibUUID.
30+
31+
Cache Variables
32+
^^^^^^^^^^^^^^^
33+
34+
This module uses the following cache variables:
35+
36+
``LibUUID_LIBRARY``
37+
The location of the LibUUID library file.
38+
``LibUUID_INCLUDE_DIR``
39+
The location of the LibUUID include directory containing ``uuid/uuid.h``.
40+
41+
The cache variables should not be used by project code.
42+
They may be set by end users to point at LibUUID components.
43+
#]=======================================================================]
44+
45+
#-----------------------------------------------------------------------------
46+
if(MSYS)
47+
# Note: on current version of MSYS2, linking to libuuid.dll.a doesn't
48+
# import the right symbols sometimes. Fix this by linking directly
49+
# to the DLL that provides the symbols, instead.
50+
find_library(LibUUID_LIBRARY
51+
NAMES msys-uuid-1.dll
52+
)
53+
elseif(CYGWIN)
54+
# Note: on current version of Cygwin, linking to libuuid.dll.a doesn't
55+
# import the right symbols sometimes. Fix this by linking directly
56+
# to the DLL that provides the symbols, instead.
57+
set(old_suffixes ${CMAKE_FIND_LIBRARY_SUFFIXES})
58+
set(CMAKE_FIND_LIBRARY_SUFFIXES .dll)
59+
find_library(LibUUID_LIBRARY
60+
NAMES cyguuid-1.dll
61+
)
62+
set(CMAKE_FIND_LIBRARY_SUFFIXES ${old_suffixes})
63+
else()
64+
find_library(LibUUID_LIBRARY
65+
NAMES uuid
66+
)
67+
endif()
68+
mark_as_advanced(LibUUID_LIBRARY)
69+
70+
find_path(LibUUID_INCLUDE_DIR
71+
NAMES uuid/uuid.h
72+
)
73+
mark_as_advanced(LibUUID_INCLUDE_DIR)
74+
75+
#-----------------------------------------------------------------------------
76+
include(FindPackageHandleStandardArgs)
77+
find_package_handle_standard_args(LibUUID
78+
REQUIRED_VARS LibUUID_LIBRARY LibUUID_INCLUDE_DIR
79+
)
80+
81+
#-----------------------------------------------------------------------------
82+
# Provide documented result variables and targets.
83+
if(LibUUID_FOUND)
84+
set(LibUUID_INCLUDE_DIRS ${LibUUID_INCLUDE_DIR})
85+
set(LibUUID_LIBRARIES ${LibUUID_LIBRARY})
86+
if(NOT TARGET LibUUID::LibUUID)
87+
add_library(LibUUID::LibUUID UNKNOWN IMPORTED)
88+
set_target_properties(LibUUID::LibUUID PROPERTIES
89+
IMPORTED_LOCATION "${LibUUID_LIBRARY}"
90+
INTERFACE_INCLUDE_DIRECTORIES "${LibUUID_INCLUDE_DIRS}"
91+
)
92+
endif()
93+
endif()

demo/src/DemoStreamReplicator.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
#include "StreamReplicator.h"
2+
using namespace dolphindb;
3+
using namespace std;
4+
5+
int main()
6+
{
7+
std::vector<HostInfo> hosts{{"192.168.0.104", 8848, "admin", "123456"}, {"192.168.0.104", 8900, "admin", "123456"}};
8+
StreamReplicator rep(hosts, "testTable");
9+
rep.insert(1, 100.0);
10+
rep.insert(2, 200.0);
11+
return 0;
12+
}

0 commit comments

Comments
 (0)