diff --git a/.jenkins.d/40-headers-check.sh b/.jenkins.d/40-headers-check.sh index da13efa..ad23cee 100755 --- a/.jenkins.d/40-headers-check.sh +++ b/.jenkins.d/40-headers-check.sh @@ -18,7 +18,7 @@ if has CentOS $NODE_LABELS; then fi CXX=${CXX:-g++} -STD=-std=c++14 +STD=-std=c++17 CXXFLAGS="-O2 -Wall -Wno-unneeded-internal-declaration -Wno-unused-const-variable $(pkg-config --cflags libndn-cxx $PCFILE)" INCLUDEDIR="$(pkg-config --variable=includedir $PCFILE)"/$PROJ diff --git a/.waf-tools/default-compiler-flags.py b/.waf-tools/default-compiler-flags.py index f086c17..7c6d282 100644 --- a/.waf-tools/default-compiler-flags.py +++ b/.waf-tools/default-compiler-flags.py @@ -136,7 +136,7 @@ class GccBasicFlags(CompilerFlags): """ def getGeneralFlags(self, conf): flags = super(GccBasicFlags, self).getGeneralFlags(conf) - flags['CXXFLAGS'] += ['-std=c++14'] + flags['CXXFLAGS'] += ['-std=c++17'] if Utils.unversioned_sys_platform() == 'linux': flags['LINKFLAGS'] += ['-fuse-ld=gold'] elif Utils.unversioned_sys_platform() == 'freebsd': diff --git a/PSync/consumer.hpp b/PSync/consumer.hpp index b081937..07c3443 100644 --- a/PSync/consumer.hpp +++ b/PSync/consumer.hpp @@ -1,6 +1,6 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2014-2021, The University of Memphis + * Copyright (c) 2014-2022, The University of Memphis * * This file is part of PSync. * See AUTHORS.md for complete list of PSync authors and contributors. @@ -119,12 +119,12 @@ public: return m_subscriptionList.find(prefix) != m_subscriptionList.end(); } - ndn::optional + std::optional getSeqNo(const ndn::Name& prefix) const { auto it = m_prefixes.find(prefix); if (it == m_prefixes.end()) { - return ndn::nullopt; + return std::nullopt; } return it->second; } diff --git a/PSync/detail/bloom-filter.cpp b/PSync/detail/bloom-filter.cpp index 041ead0..cdc7345 100644 --- a/PSync/detail/bloom-filter.cpp +++ b/PSync/detail/bloom-filter.cpp @@ -53,8 +53,7 @@ #include #include -namespace psync { -namespace detail { +namespace psync::detail { // https://github.com/ArashPartow/bloom @@ -376,5 +375,4 @@ BloomFilter::generate_unique_salt() } } -} // namespace detail -} // namespace psync +} // namespace psync::detail diff --git a/PSync/detail/bloom-filter.hpp b/PSync/detail/bloom-filter.hpp index 8ed7028..611e2eb 100644 --- a/PSync/detail/bloom-filter.hpp +++ b/PSync/detail/bloom-filter.hpp @@ -52,8 +52,7 @@ #include #include -namespace psync { -namespace detail { +namespace psync::detail { class bloom_parameters; @@ -142,7 +141,6 @@ private: double desired_false_positive_probability_ = 0.0; }; -} // namespace detail -} // namespace psync +} // namespace psync::detail #endif // PSYNC_DETAIL_BLOOM_FILTER_HPP diff --git a/PSync/detail/iblt.cpp b/PSync/detail/iblt.cpp index b62b893..9f38f6e 100644 --- a/PSync/detail/iblt.cpp +++ b/PSync/detail/iblt.cpp @@ -48,8 +48,7 @@ #include -namespace psync { -namespace detail { +namespace psync::detail { namespace be = boost::endian; @@ -267,5 +266,4 @@ operator<<(std::ostream& os, const IBLT& iblt) return os; } -} // namespace detail -} // namespace psync +} // namespace psync::detail diff --git a/PSync/detail/iblt.hpp b/PSync/detail/iblt.hpp index b81809b..65b2a5e 100644 --- a/PSync/detail/iblt.hpp +++ b/PSync/detail/iblt.hpp @@ -1,6 +1,6 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2014-2020, The University of Memphis + * Copyright (c) 2014-2022, The University of Memphis * * This file is part of PSync. * See AUTHORS.md for complete list of PSync authors and contributors. @@ -53,8 +53,7 @@ #include #include -namespace psync { -namespace detail { +namespace psync::detail { class HashTableEntry { @@ -162,8 +161,8 @@ private: private: std::vector m_hashTable; - static const int INSERT = 1; - static const int ERASE = -1; + static constexpr int INSERT = 1; + static constexpr int ERASE = -1; CompressionScheme m_compressionScheme; }; @@ -176,7 +175,6 @@ operator!=(const IBLT& iblt1, const IBLT& iblt2); std::ostream& operator<<(std::ostream& os, const IBLT& iblt); -} // namespace detail -} // namespace psync +} // namespace psync::detail #endif // PSYNC_DETAIL_IBLT_HPP diff --git a/PSync/detail/state.cpp b/PSync/detail/state.cpp index 2f7f1b6..3f9146f 100644 --- a/PSync/detail/state.cpp +++ b/PSync/detail/state.cpp @@ -1,6 +1,6 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2014-2020, The University of Memphis + * Copyright (c) 2014-2022, The University of Memphis * * This file is part of PSync. * See AUTHORS.md for complete list of PSync authors and contributors. @@ -22,8 +22,7 @@ #include #include -namespace psync { -namespace detail { +namespace psync::detail { State::State(const ndn::Block& block) { @@ -76,8 +75,7 @@ void State::wireDecode(const ndn::Block& wire) { if (wire.type() != tlv::PSyncContent) { - NDN_THROW(ndn::tlv::Error("Expected PSyncContent element, but TLV has type " + - ndn::to_string(wire.type()))); + NDN_THROW(ndn::tlv::Error("PSyncContent", wire.type())); } m_content.clear(); @@ -90,8 +88,7 @@ State::wireDecode(const ndn::Block& wire) m_content.emplace_back(*it); } else { - NDN_THROW(ndn::tlv::Error("Expected Name element, but TLV has type " + - ndn::to_string(it->type()))); + NDN_THROW(ndn::tlv::Error("Name", it->type())); } } } @@ -108,5 +105,4 @@ operator<<(std::ostream& os, const State& state) return os; } -} // namespace detail -} // namespace psync +} // namespace psync::detail diff --git a/PSync/detail/state.hpp b/PSync/detail/state.hpp index 90f5ab3..c7211ab 100644 --- a/PSync/detail/state.hpp +++ b/PSync/detail/state.hpp @@ -1,6 +1,6 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2014-2020, The University of Memphis + * Copyright (c) 2014-2022, The University of Memphis * * This file is part of PSync. * See AUTHORS.md for complete list of PSync authors and contributors. @@ -22,16 +22,15 @@ #include -namespace psync { -namespace tlv { +namespace psync::tlv { enum { PSyncContent = 128 }; -} // namespace tlv +} // namespace psync::tlv -namespace detail { +namespace psync::detail { class State { @@ -82,7 +81,6 @@ NDN_CXX_DECLARE_WIRE_ENCODE_INSTANTIATIONS(State); std::ostream& operator<<(std::ostream& os, const State& State); -} // namespace detail -} // namespace psync +} // namespace psync::detail #endif // PSYNC_DETAIL_STATE_HPP diff --git a/PSync/detail/util.cpp b/PSync/detail/util.cpp index 9a3e5cf..c1450ef 100644 --- a/PSync/detail/util.cpp +++ b/PSync/detail/util.cpp @@ -46,8 +46,7 @@ #include #endif -namespace psync { -namespace detail { +namespace psync::detail { namespace bio = boost::iostreams; @@ -96,9 +95,9 @@ murmurHash3(const void* key, size_t len, uint32_t seed) switch (len & 3) { case 3: k1 ^= tail[2] << 16; - NDN_CXX_FALLTHROUGH; + [[fallthrough]]; case 2: k1 ^= tail[1] << 8; - NDN_CXX_FALLTHROUGH; + [[fallthrough]]; case 1: k1 ^= tail[0]; k1 *= c1; k1 = ROTL32(k1,15); k1 *= c2; h1 ^= k1; } @@ -235,5 +234,4 @@ decompress(CompressionScheme scheme, ndn::span buffer) return out.buf(); } -} // namespace detail -} // namespace psync +} // namespace psync::detail diff --git a/PSync/detail/util.hpp b/PSync/detail/util.hpp index cf405f8..3610c1b 100644 --- a/PSync/detail/util.hpp +++ b/PSync/detail/util.hpp @@ -25,8 +25,7 @@ #include #include -namespace psync { -namespace detail { +namespace psync::detail { uint32_t murmurHash3(const void* key, size_t len, uint32_t seed); @@ -49,7 +48,6 @@ compress(CompressionScheme scheme, ndn::span buffer); std::shared_ptr decompress(CompressionScheme scheme, ndn::span buffer); -} // namespace detail -} // namespace psync +} // namespace psync::detail #endif // PSYNC_DETAIL_UTIL_HPP diff --git a/PSync/full-producer.cpp b/PSync/full-producer.cpp index 70e7a52..d899965 100644 --- a/PSync/full-producer.cpp +++ b/PSync/full-producer.cpp @@ -65,7 +65,7 @@ FullProducer::~FullProducer() } void -FullProducer::publishName(const ndn::Name& prefix, ndn::optional seq) +FullProducer::publishName(const ndn::Name& prefix, std::optional seq) { if (m_prefixes.find(prefix) == m_prefixes.end()) { NDN_LOG_WARN("Prefix not added: " << prefix); @@ -73,11 +73,8 @@ FullProducer::publishName(const ndn::Name& prefix, ndn::optional seq) } uint64_t newSeq = seq.value_or(m_prefixes[prefix] + 1); - NDN_LOG_INFO("Publish: " << prefix << "/" << newSeq); - updateSeqNo(prefix, newSeq); - satisfyPendingInterests(); } @@ -296,7 +293,6 @@ FullProducer::onSyncData(const ndn::Interest& interest, const ndn::ConstBufferPt NDN_LOG_ERROR("Cannot parse received sync Data: " << e.what()); return; } - NDN_LOG_DEBUG("Sync Data received: " << state); std::vector updates; diff --git a/PSync/full-producer.hpp b/PSync/full-producer.hpp index 53d09b5..d660b66 100644 --- a/PSync/full-producer.hpp +++ b/PSync/full-producer.hpp @@ -80,7 +80,7 @@ public: * @param seq the sequence number of the prefix */ void - publishName(const ndn::Name& prefix, ndn::optional seq = ndn::nullopt); + publishName(const ndn::Name& prefix, std::optional seq = std::nullopt); PSYNC_PUBLIC_WITH_TESTS_ELSE_PRIVATE: /** diff --git a/PSync/partial-producer.cpp b/PSync/partial-producer.cpp index 202935c..852a68e 100644 --- a/PSync/partial-producer.cpp +++ b/PSync/partial-producer.cpp @@ -54,18 +54,15 @@ PartialProducer::PartialProducer(size_t expectedNumEntries, } void -PartialProducer::publishName(const ndn::Name& prefix, ndn::optional seq) +PartialProducer::publishName(const ndn::Name& prefix, std::optional seq) { if (m_prefixes.find(prefix) == m_prefixes.end()) { return; } uint64_t newSeq = seq.value_or(m_prefixes[prefix] + 1); - NDN_LOG_INFO("Publish: " << prefix << "/" << newSeq); - updateSeqNo(prefix, newSeq); - satisfyPendingSyncInterests(prefix); } diff --git a/PSync/partial-producer.hpp b/PSync/partial-producer.hpp index 07ffabd..48ff01e 100644 --- a/PSync/partial-producer.hpp +++ b/PSync/partial-producer.hpp @@ -1,6 +1,6 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2014-2021, The University of Memphis + * Copyright (c) 2014-2022, The University of Memphis * * This file is part of PSync. * See AUTHORS.md for complete list of PSync authors and contributors. @@ -76,7 +76,7 @@ public: * @param seq the sequence number of the prefix */ void - publishName(const ndn::Name& prefix, ndn::optional seq = ndn::nullopt); + publishName(const ndn::Name& prefix, std::optional seq = std::nullopt); private: /** diff --git a/PSync/producer-base.hpp b/PSync/producer-base.hpp index 123b360..29e682d 100644 --- a/PSync/producer-base.hpp +++ b/PSync/producer-base.hpp @@ -1,6 +1,6 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2014-2021, The University of Memphis + * Copyright (c) 2014-2022, The University of Memphis * * This file is part of PSync. * See AUTHORS.md for complete list of PSync authors and contributors. @@ -79,12 +79,12 @@ public: * * @param prefix prefix to get the sequence number of */ - ndn::optional + std::optional getSeqNo(const ndn::Name& prefix) const { auto it = m_prefixes.find(prefix); if (it == m_prefixes.end()) { - return ndn::nullopt; + return std::nullopt; } return it->second; } diff --git a/README.md b/README.md index 6523357..8d03a64 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![CI](https://github.com/named-data/PSync/actions/workflows/ci.yml/badge.svg)](https://github.com/named-data/PSync/actions/workflows/ci.yml) [![Docs](https://github.com/named-data/PSync/actions/workflows/docs.yml/badge.svg)](https://github.com/named-data/PSync/actions/workflows/docs.yml) -![Language](https://img.shields.io/badge/C%2B%2B-14-blue) +![Language](https://img.shields.io/badge/C%2B%2B-17-blue) ![Latest version](https://img.shields.io/github/v/tag/named-data/PSync?label=Latest%20version) The PSync library implements the diff --git a/examples/full-sync.cpp b/examples/full-sync.cpp index f92149d..01da1dd 100644 --- a/examples/full-sync.cpp +++ b/examples/full-sync.cpp @@ -1,6 +1,6 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2014-2019, The University of Memphis + * Copyright (c) 2014-2022, The University of Memphis * * This file is part of PSync. * See AUTHORS.md for complete list of PSync authors and contributors. @@ -53,7 +53,7 @@ public: { // Add user prefixes and schedule updates for them in specified interval for (int i = 0; i < m_numDataStreams; i++) { - ndn::Name prefix(userPrefix + "-" + ndn::to_string(i)); + ndn::Name prefix(userPrefix + "-" + std::to_string(i)); m_fullProducer.addUserNode(prefix); m_scheduler.schedule(ndn::time::milliseconds(m_rangeUniformRandom(m_rng)), [this, prefix] { doUpdate(prefix); }); diff --git a/examples/producer.cpp b/examples/producer.cpp index 6fcbb25..a6f4ca1 100644 --- a/examples/producer.cpp +++ b/examples/producer.cpp @@ -1,6 +1,6 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2014-2019, The University of Memphis + * Copyright (c) 2014-2022, The University of Memphis * * This file is part of PSync. * See AUTHORS.md for complete list of PSync authors and contributors. @@ -47,7 +47,7 @@ public: { // Add user prefixes and schedule updates for them for (int i = 0; i < m_nDataStreams; i++) { - ndn::Name updateName(userPrefix + "-" + ndn::to_string(i)); + ndn::Name updateName(userPrefix + "-" + std::to_string(i)); // Add the user prefix to the producer // Note that this does not add the already added userPrefix-0 in the constructor diff --git a/tests/clock-fixture.cpp b/tests/clock-fixture.cpp index 0b4e04a..d47f695 100644 --- a/tests/clock-fixture.cpp +++ b/tests/clock-fixture.cpp @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2013-2020 Regents of the University of California + * Copyright (c) 2013-2022 Regents of the University of California * The University of Memphis * * This file is part of PSync. @@ -19,8 +19,7 @@ #include "tests/clock-fixture.hpp" -namespace ndn { -namespace tests { +namespace ndn::tests { ClockFixture::ClockFixture() : m_steadyClock(make_shared()) @@ -50,5 +49,4 @@ ClockFixture::advanceClocks(time::nanoseconds tick, time::nanoseconds total) } } -} // namespace tests -} // namespace ndn +} // namespace ndn::tests diff --git a/tests/clock-fixture.hpp b/tests/clock-fixture.hpp index c340526..6f79950 100644 --- a/tests/clock-fixture.hpp +++ b/tests/clock-fixture.hpp @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2013-2020 Regents of the University of California + * Copyright (c) 2013-2022 Regents of the University of California * The University of Memphis * * This file is part of PSync. @@ -22,8 +22,7 @@ #include -namespace ndn { -namespace tests { +namespace ndn::tests { /** \brief A test fixture that overrides steady clock and system clock. */ @@ -77,7 +76,6 @@ protected: shared_ptr m_systemClock; }; -} // namespace tests -} // namespace ndn +} // namespace ndn::tests #endif // PSYNC_TESTS_CLOCK_FIXTURE_HPP diff --git a/tests/io-fixture.hpp b/tests/io-fixture.hpp index d15a8ed..cdd2713 100644 --- a/tests/io-fixture.hpp +++ b/tests/io-fixture.hpp @@ -1,6 +1,6 @@ /* -*- Mode: C++; c-file-style: "gnu"; indent-tabs-mode:nil -*- */ /* - * Copyright (c) 2013-2020 Regents of the University of California + * Copyright (c) 2013-2022 Regents of the University of California * The University of Memphis * * This file is part of PSync. @@ -24,8 +24,7 @@ #include -namespace ndn { -namespace tests { +namespace ndn::tests { class IoFixture : public ClockFixture { @@ -47,7 +46,6 @@ protected: boost::asio::io_service m_io; }; -} // namespace tests -} // namespace ndn +} // namespace ndn::tests #endif // PSYNC_TESTS_IO_FIXTURE_HPP diff --git a/tests/test-full-sync.cpp b/tests/test-full-sync.cpp index d3d9e03..16ba4bc 100644 --- a/tests/test-full-sync.cpp +++ b/tests/test-full-sync.cpp @@ -30,7 +30,6 @@ namespace psync { using ndn::Name; -using ndn::optional; using ndn::util::DummyClientFace; class FullSyncFixture : public ndn::tests::IoFixture @@ -99,7 +98,7 @@ protected: * @param seq expected sequence number. */ void - batchCheck(int id, int origin, int min, int max, optional seq) + batchCheck(int id, int origin, int min, int max, std::optional seq) { uint64_t expected = seq.value_or(NOT_EXIST); FullProducer& node = *nodes.at(id); @@ -170,15 +169,13 @@ protected: protected: const Name syncPrefix = "/psync"; - static const int MAX_NODES = 4; + static constexpr int MAX_NODES = 4; std::array, MAX_NODES> faces; std::array userPrefixes; std::array, MAX_NODES> nodes; - static const uint64_t NOT_EXIST = std::numeric_limits::max(); + static constexpr uint64_t NOT_EXIST = std::numeric_limits::max(); }; -const uint64_t FullSyncFixture::NOT_EXIST; - BOOST_FIXTURE_TEST_SUITE(TestFullSync, FullSyncFixture) BOOST_AUTO_TEST_CASE(TwoNodesSimple) diff --git a/tests/test-iblt.cpp b/tests/test-iblt.cpp index 1f00564..e5ce12f 100644 --- a/tests/test-iblt.cpp +++ b/tests/test-iblt.cpp @@ -91,9 +91,7 @@ BOOST_AUTO_TEST_CASE(NameAppendAndExtract) iblt2.insert(hash); Name ibltName2("/sync"); iblt2.appendToName(ibltName2); - BOOST_CHECK_EQUAL_COLLECTIONS(IBF, IBF + sizeof(IBF), - ibltName2.at(-1).wireEncode().begin(), - ibltName2.at(-1).wireEncode().end()); + BOOST_TEST(ibltName2.at(-1).wireEncode() == IBF, boost::test_tools::per_element()); Name malformedName("/test"); auto compressed = compress(CompressionScheme::DEFAULT, diff --git a/tests/test-partial-sync.cpp b/tests/test-partial-sync.cpp index 6235310..7353c5e 100644 --- a/tests/test-partial-sync.cpp +++ b/tests/test-partial-sync.cpp @@ -1,6 +1,6 @@ /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* - * Copyright (c) 2014-2020, The University of Memphis + * Copyright (c) 2014-2022, The University of Memphis * * This file is part of PSync. * See AUTHORS.md for complete list of PSync authors and contributors. @@ -112,7 +112,7 @@ public: { // zeroth is added through constructor for (int i = 1; i < numOfUserNodes; i++) { - producer->addUserNode(prefix + "-" + to_string(i)); + producer->addUserNode(prefix + "-" + std::to_string(i)); } } @@ -291,7 +291,7 @@ BOOST_AUTO_TEST_CASE(ReplicatedProducer) util::DummyClientFace face2(m_io, {true, true}); PartialProducer replicatedProducer(40, face2, syncPrefix, userPrefix); for (int i = 1; i < 10; i++) { - replicatedProducer.addUserNode("testUser-" + to_string(i)); + replicatedProducer.addUserNode("testUser-" + std::to_string(i)); } advanceClocks(ndn::time::milliseconds(10)); replicatedProducer.publishName("testUser-2"); @@ -326,7 +326,7 @@ BOOST_AUTO_TEST_CASE(ApplicationNack) oldSeqMap = producer->m_prefixes; for (int i = 0; i < 50; i++) { - Name prefix("testUser-" + to_string(i)); + Name prefix("testUser-" + std::to_string(i)); producer->updateSeqNo(prefix, producer->getSeqNo(prefix).value() + 1); } // Next sync interest should trigger the nack @@ -387,7 +387,7 @@ BOOST_AUTO_TEST_CASE(SegmentedSync) std::vector subscribeTo; for (int i = 1; i < 10; i++) { - subscribeTo.push_back(longNameToExceedDataSize.toUri() + "-" + to_string(i)); + subscribeTo.push_back(longNameToExceedDataSize.toUri() + "-" + std::to_string(i)); } addConsumer(0, subscribeTo); @@ -404,7 +404,7 @@ BOOST_AUTO_TEST_CASE(SegmentedSync) oldSeqMap = producer->m_prefixes; for (int i = 1; i < 10; i++) { - producer->updateSeqNo(longNameToExceedDataSize.toUri() + "-" + to_string(i), 1); + producer->updateSeqNo(longNameToExceedDataSize.toUri() + "-" + std::to_string(i), 1); } advanceClocks(ndn::time::milliseconds(999)); diff --git a/tests/test-producer-base.cpp b/tests/test-producer-base.cpp index 30cf4c3..deab560 100644 --- a/tests/test-producer-base.cpp +++ b/tests/test-producer-base.cpp @@ -34,7 +34,7 @@ BOOST_AUTO_TEST_SUITE(TestProducerBase) BOOST_AUTO_TEST_CASE(Constructor) { util::DummyClientFace face; - BOOST_REQUIRE_NO_THROW(ProducerBase(40, face, Name("/psync"), Name("/testUser"))); + BOOST_CHECK_NO_THROW(ProducerBase(40, face, Name("/psync"), Name("/testUser"))); } BOOST_AUTO_TEST_CASE(Basic) @@ -55,7 +55,7 @@ BOOST_AUTO_TEST_CASE(Basic) BOOST_CHECK_EQUAL(prefix.getPrefix(-1), userNode); producerBase.removeUserNode(userNode); - BOOST_CHECK(producerBase.getSeqNo(userNode) == nullopt); + BOOST_CHECK(producerBase.getSeqNo(userNode) == std::nullopt); BOOST_CHECK(producerBase.m_biMap.right.find(prefixWithSeq) == producerBase.m_biMap.right.end()); BOOST_CHECK(producerBase.m_biMap.left.find(hash) == producerBase.m_biMap.left.end()); diff --git a/wscript b/wscript index 4253101..b368414 100644 --- a/wscript +++ b/wscript @@ -98,8 +98,7 @@ def build(bld): bld.recurse('examples') headers = bld.path.ant_glob('PSync/**/*.hpp') - bld.install_files(bld.env.INCLUDEDIR, headers, - relative_trick=True) + bld.install_files('${INCLUDEDIR}', headers, relative_trick=True) bld.install_files('${INCLUDEDIR}/PSync/detail', bld.path.find_resource('PSync/detail/config.hpp'))