Merge pull request #34 from BlackMATov/dev

Dev
This commit is contained in:
2021-08-06 03:56:54 +07:00
committed by GitHub
16 changed files with 136 additions and 146 deletions

View File

@@ -1,28 +0,0 @@
image:
- Visual Studio 2017
- Visual Studio 2019
platform:
- x86
- x64
configuration:
- Release
for:
-
matrix:
only:
- platform: x86
configuration: Release
build_script:
- .ci\build_windows_x86.bat
-
matrix:
only:
- platform: x64
configuration: Release
build_script:
- .ci\build_windows_x64.bat

16
.github/workflows/coverage.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
name: coverage
on: [push, pull_request]
jobs:
build:
runs-on: macos-10.15
name: "coverage"
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Install lcov by Homebrew
run: brew install lcov
- name: Build && Test && Upload
run: .ci/build_coverage.sh

24
.github/workflows/darwin.yml vendored Normal file
View File

@@ -0,0 +1,24 @@
name: darwin
on: [push, pull_request]
jobs:
build:
runs-on: ${{matrix.config.os}}
strategy:
fail-fast: false
matrix:
config:
# https://github.com/actions/virtual-environments/tree/main/images/macos
- { os: "macos-10.15", xcode: "10.3" }
- { os: "macos-10.15", xcode: "11.7" }
- { os: "macos-10.15", xcode: "12.4" }
name: "xcode-${{matrix.config.xcode}}"
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Select Xcode
run: sudo xcode-select --switch "/Applications/Xcode_${{matrix.config.xcode}}.app"
- name: Build && Test
run: .ci/build_darwin.sh

31
.github/workflows/linux.yml vendored Normal file
View File

@@ -0,0 +1,31 @@
name: linux
on: [push, pull_request]
jobs:
build:
runs-on: ${{matrix.config.os}}
strategy:
fail-fast: false
matrix:
config:
# https://github.com/actions/virtual-environments/tree/main/images/linux
- { os: "ubuntu-20.04", cc: "gcc-7", cxx: "g++-7" }
- { os: "ubuntu-20.04", cc: "gcc-8", cxx: "g++-8" }
- { os: "ubuntu-20.04", cc: "gcc-9", cxx: "g++-9" }
- { os: "ubuntu-20.04", cc: "gcc-10", cxx: "g++-10" }
- { os: "ubuntu-20.04", cc: "clang-7", cxx: "clang++-7" }
- { os: "ubuntu-20.04", cc: "clang-8", cxx: "clang++-8" }
- { os: "ubuntu-20.04", cc: "clang-9", cxx: "clang++-9" }
- { os: "ubuntu-20.04", cc: "clang-10", cxx: "clang++-10" }
name: "${{matrix.config.cxx}}"
steps:
- name: Setup
run: sudo apt-get -y install "${{matrix.config.cc}}" "${{matrix.config.cxx}}"
- name: Checkout
uses: actions/checkout@v2
with:
submodules: recursive
- name: Build && Test
run: .ci/build_linux.sh
env: { CC: "${{matrix.config.cc}}", CXX: "${{matrix.config.cxx}}" }

23
.github/workflows/windows.yml vendored Normal file
View File

@@ -0,0 +1,23 @@
name: windows
on: [push, pull_request]
jobs:
build:
runs-on: ${{matrix.config.os}}
strategy:
fail-fast: false
matrix:
config:
# https://github.com/actions/virtual-environments/tree/main/images/win
- { os: "windows-2016", vs: "Visual Studio 2017", arch: "x86" }
- { os: "windows-2016", vs: "Visual Studio 2017", arch: "x64" }
- { os: "windows-2019", vs: "Visual Studio 2019", arch: "x86" }
- { os: "windows-2019", vs: "Visual Studio 2019", arch: "x64" }
name: "${{matrix.config.vs}} ${{matrix.config.arch}}"
steps:
- uses: actions/checkout@v2
with:
submodules: recursive
- name: Build && Test
run: .ci\build_windows_${{matrix.config.arch}}.bat

View File

@@ -1,89 +0,0 @@
git:
depth: false
quiet: true
language: cpp
jobs:
include:
#
# linux (g++)
#
- os: linux
dist: bionic
stage: linux
name: g++-7
addons: { apt: { sources: ["ubuntu-toolchain-r-test"], packages: ["g++-7"] } }
env: CC=gcc-7 CXX=g++-7
script: .ci/build_linux.sh
- os: linux
dist: bionic
stage: linux
name: g++-8
addons: { apt: { sources: ["ubuntu-toolchain-r-test"], packages: ["g++-8"] } }
env: CC=gcc-8 CXX=g++-8
script: .ci/build_linux.sh
#
# linux (clang++)
#
- os: linux
dist: bionic
stage: linux
name: clang++-5.0
addons: { apt: { sources: ["ubuntu-toolchain-r-test"], packages: ["clang-5.0"] } }
env: CC=clang-5.0 CXX=clang++-5.0
script: .ci/build_linux.sh
- os: linux
dist: bionic
stage: linux
name: clang++-6.0
addons: { apt: { sources: ["ubuntu-toolchain-r-test"], packages: ["clang-6.0"] } }
env: CC=clang-6.0 CXX=clang++-6.0
script: .ci/build_linux.sh
#
# darwin
#
- os: osx
osx_image: xcode10
stage: darwin
name: xcode10
script: .ci/build_darwin.sh
- os: osx
osx_image: xcode11
stage: darwin
name: xcode11
script: .ci/build_darwin.sh
#
# windows
#
- os: windows
stage: windows
name: x86
script: .ci/build_windows_x86.bat
- os: windows
stage: windows
name: x64
script: .ci/build_windows_x64.bat
#
# coverage
#
- os: osx
osx_image: xcode10
stage: coverage
name: coverage
addons: { homebrew: { packages: ["lcov"], update: true } }
script: .ci/build_coverage.sh

View File

@@ -3,6 +3,8 @@ cmake_minimum_required(VERSION 3.8 FATAL_ERROR)
if(NOT DEFINED PROJECT_NAME) if(NOT DEFINED PROJECT_NAME)
set(BUILD_AS_STANDALONE ON) set(BUILD_AS_STANDALONE ON)
else()
set(BUILD_AS_STANDALONE OFF)
endif() endif()
project(flat.hpp) project(flat.hpp)
@@ -11,6 +13,14 @@ add_library(${PROJECT_NAME} INTERFACE)
target_include_directories(${PROJECT_NAME} INTERFACE headers) target_include_directories(${PROJECT_NAME} INTERFACE headers)
target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17) target_compile_features(${PROJECT_NAME} INTERFACE cxx_std_17)
target_compile_options(${PROJECT_NAME}
INTERFACE
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:
-Wno-c++98-compat-pedantic
-Wno-padded
-Wno-shadow
-Wno-unknown-warning-option>)
if(BUILD_AS_STANDALONE) if(BUILD_AS_STANDALONE)
option(BUILD_WITH_UNBENCH "Build with benchmarks" OFF) option(BUILD_WITH_UNBENCH "Build with benchmarks" OFF)
if(BUILD_WITH_UNBENCH) if(BUILD_WITH_UNBENCH)

View File

@@ -2,26 +2,26 @@
> Library of flat vector-like based associative containers > Library of flat vector-like based associative containers
[![travis][badge.travis]][travis] [![linux][badge.linux]][linux]
[![appveyor][badge.appveyor]][appveyor] [![darwin][badge.darwin]][darwin]
[![windows][badge.windows]][windows]
[![codecov][badge.codecov]][codecov] [![codecov][badge.codecov]][codecov]
[![language][badge.language]][language] [![language][badge.language]][language]
[![license][badge.license]][license] [![license][badge.license]][license]
[![paypal][badge.paypal]][paypal]
[badge.travis]: https://img.shields.io/travis/BlackMATov/flat.hpp/main.svg?logo=travis [badge.darwin]: https://img.shields.io/github/workflow/status/BlackMATov/flat.hpp/darwin/main?label=Xcode&logo=xcode
[badge.appveyor]: https://img.shields.io/appveyor/ci/BlackMATov/flat-hpp/main.svg?logo=appveyor [badge.linux]: https://img.shields.io/github/workflow/status/BlackMATov/flat.hpp/linux/main?label=GCC%2FClang&logo=linux
[badge.codecov]: https://img.shields.io/codecov/c/github/BlackMATov/flat.hpp/main.svg?logo=codecov [badge.windows]: https://img.shields.io/github/workflow/status/BlackMATov/flat.hpp/windows/main?label=Visual%20Studio&logo=visual-studio
[badge.language]: https://img.shields.io/badge/language-C%2B%2B17-yellow.svg [badge.codecov]: https://img.shields.io/codecov/c/github/BlackMATov/flat.hpp/main?logo=codecov
[badge.license]: https://img.shields.io/badge/license-MIT-blue.svg [badge.language]: https://img.shields.io/badge/language-C%2B%2B17-yellow
[badge.paypal]: https://img.shields.io/badge/donate-PayPal-orange.svg?logo=paypal&colorA=00457C [badge.license]: https://img.shields.io/badge/license-MIT-blue
[travis]: https://travis-ci.org/BlackMATov/flat.hpp [darwin]: https://github.com/BlackMATov/flat.hpp/actions?query=workflow%3Adarwin
[appveyor]: https://ci.appveyor.com/project/BlackMATov/flat-hpp [linux]: https://github.com/BlackMATov/flat.hpp/actions?query=workflow%3Alinux
[windows]: https://github.com/BlackMATov/flat.hpp/actions?query=workflow%3Awindows
[codecov]: https://codecov.io/gh/BlackMATov/flat.hpp [codecov]: https://codecov.io/gh/BlackMATov/flat.hpp
[language]: https://en.wikipedia.org/wiki/C%2B%2B17 [language]: https://en.wikipedia.org/wiki/C%2B%2B17
[license]: https://en.wikipedia.org/wiki/MIT_License [license]: https://en.wikipedia.org/wiki/MIT_License
[paypal]: https://www.paypal.me/matov
[flat]: https://github.com/BlackMATov/flat.hpp [flat]: https://github.com/BlackMATov/flat.hpp

View File

@@ -392,7 +392,7 @@ namespace flat_hpp
size_type erase(const key_type& key) { size_type erase(const key_type& key) {
const auto p = equal_range(key); const auto p = equal_range(key);
size_type r = std::distance(p.first, p.second); size_type r = static_cast<size_type>(std::distance(p.first, p.second));
erase(p.first, p.second); erase(p.first, p.second);
return r; return r;
} }
@@ -410,7 +410,7 @@ namespace flat_hpp
size_type count(const key_type& key) const { size_type count(const key_type& key) const {
const auto p = equal_range(key); const auto p = equal_range(key);
return std::distance(p.first, p.second); return static_cast<size_type>(std::distance(p.first, p.second));
} }
template < typename K > template < typename K >
@@ -419,7 +419,7 @@ namespace flat_hpp
size_type> size_type>
count(const K& key) const { count(const K& key) const {
const auto p = equal_range(key); const auto p = equal_range(key);
return std::distance(p.first, p.second); return static_cast<size_type>(std::distance(p.first, p.second));
} }
iterator find(const key_type& key) { iterator find(const key_type& key) {

View File

@@ -320,7 +320,7 @@ namespace flat_hpp
size_type erase(const key_type& key) { size_type erase(const key_type& key) {
const auto p = equal_range(key); const auto p = equal_range(key);
size_type r = std::distance(p.first, p.second); size_type r = static_cast<size_type>(std::distance(p.first, p.second));
erase(p.first, p.second); erase(p.first, p.second);
return r; return r;
} }
@@ -338,7 +338,7 @@ namespace flat_hpp
size_type count(const key_type& key) const { size_type count(const key_type& key) const {
const auto p = equal_range(key); const auto p = equal_range(key);
return std::distance(p.first, p.second); return static_cast<size_type>(std::distance(p.first, p.second));
} }
template < typename K > template < typename K >
@@ -347,7 +347,7 @@ namespace flat_hpp
size_type> size_type>
count(const K& key) const { count(const K& key) const {
const auto p = equal_range(key); const auto p = equal_range(key);
return std::distance(p.first, p.second); return static_cast<size_type>(std::distance(p.first, p.second));
} }
iterator find(const key_type& key) { iterator find(const key_type& key) {

View File

@@ -23,9 +23,12 @@ target_link_libraries(${PROJECT_NAME} flat.hpp)
target_compile_options(${PROJECT_NAME} target_compile_options(${PROJECT_NAME}
PRIVATE PRIVATE
$<$<CXX_COMPILER_ID:MSVC>: $<$<CXX_COMPILER_ID:MSVC>:
/W4> /WX /W4>
PRIVATE PRIVATE
$<$<OR:$<CXX_COMPILER_ID:GNU>,$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>: $<$<CXX_COMPILER_ID:GNU>:
-Wall -Wextra -Wpedantic>) -Werror -Wall -Wextra -Wpedantic>
PRIVATE
$<$<OR:$<CXX_COMPILER_ID:Clang>,$<CXX_COMPILER_ID:AppleClang>>:
-Werror -Weverything -Wconversion>)
add_test(${PROJECT_NAME} ${PROJECT_NAME}) add_test(${PROJECT_NAME} ${PROJECT_NAME})

View File

@@ -4,8 +4,8 @@
#define STATIC_REQUIRE(...)\ #define STATIC_REQUIRE(...)\
static_assert(__VA_ARGS__, #__VA_ARGS__);\ static_assert(__VA_ARGS__, #__VA_ARGS__);\
REQUIRE(__VA_ARGS__); REQUIRE(__VA_ARGS__)
#define STATIC_REQUIRE_FALSE(...)\ #define STATIC_REQUIRE_FALSE(...)\
static_assert(!(__VA_ARGS__), "!(" #__VA_ARGS__ ")");\ static_assert(!(__VA_ARGS__), "!(" #__VA_ARGS__ ")");\
REQUIRE(!(__VA_ARGS__)); REQUIRE(!(__VA_ARGS__))

View File

@@ -36,7 +36,7 @@ namespace
}; };
template < typename T > template < typename T >
void swap(dummy_less2<T>&, dummy_less2<T>&) noexcept { [[maybe_unused]] void swap(dummy_less2<T>&, dummy_less2<T>&) noexcept {
} }
template < typename T > template < typename T >

View File

@@ -36,7 +36,7 @@ namespace
}; };
template < typename T > template < typename T >
void swap(dummy_less2<T>&, dummy_less2<T>&) noexcept { [[maybe_unused]] void swap(dummy_less2<T>&, dummy_less2<T>&) noexcept {
} }
template < typename T > template < typename T >

View File

@@ -36,7 +36,7 @@ namespace
}; };
template < typename T > template < typename T >
void swap(dummy_less2<T>&, dummy_less2<T>&) noexcept { [[maybe_unused]] void swap(dummy_less2<T>&, dummy_less2<T>&) noexcept {
} }
template < typename T > template < typename T >
@@ -511,7 +511,7 @@ TEST_CASE("flat_multiset") {
struct my_less { struct my_less {
int i; int i;
my_less(int i) : i(i) {} my_less(int i) : i(i) {}
bool operator()(int l, int r) const { [[maybe_unused]] bool operator()(int l, int r) const {
return l < r; return l < r;
} }
}; };

View File

@@ -36,7 +36,7 @@ namespace
}; };
template < typename T > template < typename T >
void swap(dummy_less2<T>&, dummy_less2<T>&) noexcept { [[maybe_unused]] void swap(dummy_less2<T>&, dummy_less2<T>&) noexcept {
} }
template < typename T > template < typename T >
@@ -509,7 +509,7 @@ TEST_CASE("flat_set") {
struct my_less { struct my_less {
int i; int i;
my_less(int i) : i(i) {} my_less(int i) : i(i) {}
bool operator()(int l, int r) const { [[maybe_unused]] bool operator()(int l, int r) const {
return l < r; return l < r;
} }
}; };