summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Jamroot.jam4
-rw-r--r--icespider/common/Jamfile.jam5
-rw-r--r--icespider/common/formatters.cpp1
-rw-r--r--icespider/common/maybeString.cpp1
-rw-r--r--icespider/common/maybeString.h13
-rw-r--r--icespider/common/pathparts.cpp6
-rw-r--r--icespider/common/pathparts.h1
-rw-r--r--icespider/compile/Jamfile.jam6
-rw-r--r--icespider/compile/main.cpp13
-rw-r--r--icespider/compile/routeCompiler.cpp14
-rw-r--r--icespider/compile/routeCompiler.h81
-rw-r--r--icespider/core/core.cpp11
-rw-r--r--icespider/core/core.h15
-rw-r--r--icespider/core/exceptions.h1
-rw-r--r--icespider/core/flatMap.cpp1
-rw-r--r--icespider/core/flatMap.h19
-rw-r--r--icespider/core/ihttpRequest.cpp14
-rw-r--r--icespider/core/ihttpRequest.h16
-rw-r--r--icespider/core/irouteHandler.cpp11
-rw-r--r--icespider/core/irouteHandler.h21
-rw-r--r--icespider/core/util-test.cpp1
-rw-r--r--icespider/core/xwwwFormUrlEncoded.cpp17
-rw-r--r--icespider/core/xwwwFormUrlEncoded.h8
-rw-r--r--icespider/fcgi/cgiRequest.cpp1
-rw-r--r--icespider/fcgi/cgiRequest.h3
-rw-r--r--icespider/fcgi/cgiRequestBase.cpp11
-rw-r--r--icespider/fcgi/cgiRequestBase.h6
-rw-r--r--icespider/fcgi/fcgiRequest.h4
-rw-r--r--icespider/fcgi/main.cpp4
-rw-r--r--icespider/fileSessions/fileSessions.cpp23
-rw-r--r--icespider/testing/testRequest.cpp8
-rw-r--r--icespider/testing/testRequest.h8
-rw-r--r--icespider/unittests/Jamfile.jam21
-rw-r--r--icespider/unittests/base2.cpp1
-rw-r--r--icespider/unittests/base2.h10
-rw-r--r--icespider/unittests/leak.suppressions1
-rw-r--r--icespider/unittests/test-api-impl.cpp2
-rw-r--r--icespider/unittests/testAccept.cpp8
-rw-r--r--icespider/unittests/testApp.cpp24
-rw-r--r--icespider/unittests/testCompile.cpp18
-rw-r--r--icespider/unittests/testFcgi.cpp24
-rw-r--r--icespider/unittests/testFileSessions.cpp10
-rw-r--r--icespider/unittests/testFlatMap.cpp8
-rw-r--r--icespider/xslt/exslt-init.cpp (renamed from icespider/xslt/exslt.cpp)3
-rw-r--r--icespider/xslt/xsltStreamSerializer.cpp12
-rw-r--r--icespider/xslt/xsltStreamSerializer.h8
-rw-r--r--iwyu.json293
47 files changed, 677 insertions, 114 deletions
diff --git a/Jamroot.jam b/Jamroot.jam
index de7cae6..5a6f3b3 100644
--- a/Jamroot.jam
+++ b/Jamroot.jam
@@ -33,6 +33,7 @@ project
<variant>coverage:<coverage>on
<toolset>tidy:<checkxx>boost-*
<toolset>tidy:<checkxx>bugprone-*
+ <toolset>tidy:<xcheckxx>bugprone-easily-swappable-parameters
<toolset>tidy:<checkxx>clang-*
<toolset>tidy:<checkxx>misc-*
<toolset>tidy:<xcheckxx>misc-non-private-member-variables-in-classes
@@ -43,13 +44,14 @@ project
<toolset>tidy:<checkxx>performance-*
<toolset>tidy:<exclude>common/bin/http.h
<toolset>tidy:<exclude>common/bin/session.h
- <toolset>tidy:<exclude>cxxstd-17-iso/routes.h
+ <toolset>tidy:<exclude>cxxstd-20-iso/routes.h
<toolset>tidy:<exclude>core/bin/routeOptions.h
<toolset>tidy:<exclude>unittests/bin/test-api.h
<toolset>tidy:<exclude>unittests/bin/test-fcgi.h
<toolset>tidy:<exclude>ice/cpp/*
<toolset>tidy:<librarydef>boost
<toolset>tidy:<librarydef>std
+ <toolset>tidy:<mapping>iwyu.json
;
build-project icespider ;
diff --git a/icespider/common/Jamfile.jam b/icespider/common/Jamfile.jam
index dc13273..6a60b5f 100644
--- a/icespider/common/Jamfile.jam
+++ b/icespider/common/Jamfile.jam
@@ -2,18 +2,19 @@ lib adhocutil : : : : <include>/usr/include/adhocutil ;
lib slicer : : : : <include>/usr/include/slicer ;
obj http : http.ice : <toolset>tidy:<checker>none ;
+obj slicer-http : http.ice : <use>slicer <use>adhocutil
+ <implicit-dependency>http <slicer>pure <toolset>tidy:<checker>none ;
obj session : session.ice : <toolset>tidy:<checker>none ;
lib icespider-common :
[ glob *.cpp ]
http session
- http.ice
+ slicer-http
:
<library>adhocutil
<library>..//pthread
<library>..//Ice
<library>slicer
- <slicer>pure
<implicit-dependency>http
<implicit-dependency>session
: :
diff --git a/icespider/common/formatters.cpp b/icespider/common/formatters.cpp
new file mode 100644
index 0000000..6bf31c0
--- /dev/null
+++ b/icespider/common/formatters.cpp
@@ -0,0 +1 @@
+#include "formatters.h"
diff --git a/icespider/common/maybeString.cpp b/icespider/common/maybeString.cpp
new file mode 100644
index 0000000..8dab2cc
--- /dev/null
+++ b/icespider/common/maybeString.cpp
@@ -0,0 +1 @@
+#include "maybeString.h"
diff --git a/icespider/common/maybeString.h b/icespider/common/maybeString.h
index b760faa..41ca524 100644
--- a/icespider/common/maybeString.h
+++ b/icespider/common/maybeString.h
@@ -1,21 +1,26 @@
#ifndef ICESPIDER_COMMON_MAYBESTRING_H
#define ICESPIDER_COMMON_MAYBESTRING_H
+#include <compare>
+#include <iosfwd>
#include <string>
#include <string_view>
+#include <type_traits>
+#include <utility>
#include <variant>
namespace IceSpider {
class MaybeString {
public:
- MaybeString() { }
+ MaybeString() = default;
- // NOLINTNEXTLINE(hicpp-explicit-conversions)
+ // cppcheck-suppress noExplicitConstructor; NOLINTNEXTLINE(hicpp-explicit-conversions)
inline MaybeString(std::string s) : value_ {std::move(s)} { }
- // NOLINTNEXTLINE(hicpp-explicit-conversions)
- inline MaybeString(std::string_view s) : value_ {std::move(s)} { }
+ // cppcheck-suppress noExplicitConstructor; NOLINTNEXTLINE(hicpp-explicit-conversions)
+ inline MaybeString(std::string_view s) : value_ {s} { }
+ // NOLINTNEXTLINE(hicpp-explicit-conversions)
[[nodiscard]] inline operator std::string_view() const
{
if (value_.index() == 0) {
diff --git a/icespider/common/pathparts.cpp b/icespider/common/pathparts.cpp
index 9318088..654081a 100644
--- a/icespider/common/pathparts.cpp
+++ b/icespider/common/pathparts.cpp
@@ -1,6 +1,8 @@
#include "pathparts.h"
-#include <boost/algorithm/string/split.hpp>
-#include <boost/algorithm/string/trim.hpp>
+#include <boost/algorithm/string/compare.hpp>
+#include <boost/algorithm/string/find_iterator.hpp>
+#include <boost/algorithm/string/finder.hpp>
+#include <string>
namespace ba = boost::algorithm;
diff --git a/icespider/common/pathparts.h b/icespider/common/pathparts.h
index 2c6aaa9..077386d 100644
--- a/icespider/common/pathparts.h
+++ b/icespider/common/pathparts.h
@@ -2,6 +2,7 @@
#define ICESPIDER_CORE_PATHS_H
#include <c++11Helpers.h>
+#include <cstddef>
#include <memory>
#include <string_view>
#include <vector>
diff --git a/icespider/compile/Jamfile.jam b/icespider/compile/Jamfile.jam
index e481791..47c93e6 100644
--- a/icespider/compile/Jamfile.jam
+++ b/icespider/compile/Jamfile.jam
@@ -6,12 +6,13 @@ lib stdc++fs ;
lib slice-parser ;
obj routes : routes.ice : <use>../common//icespider-common <toolset>tidy:<checker>none ;
+obj slicer-routes : routes.ice : <use>slicer <use>adhocutil
+ <implicit-dependency>routes <slicer>pure <toolset>tidy:<checker>none ;
lib icespider-compile :
routeCompiler.cpp
- routes.ice
+ slicer-routes
routes
:
- <slicer>pure
<library>slicer
<library>adhocutil
<library>slicer-json
@@ -26,6 +27,7 @@ lib icespider-compile :
<library>stdc++fs
<library>../common//icespider-common
<library>slice-parser
+ <include>.
;
exe icespider :
diff --git a/icespider/compile/main.cpp b/icespider/compile/main.cpp
index 180d3f1..2ea668c 100644
--- a/icespider/compile/main.cpp
+++ b/icespider/compile/main.cpp
@@ -1,7 +1,18 @@
#include "routeCompiler.h"
-#include <boost/algorithm/string/split.hpp>
+#include <array>
+#include <boost/algorithm/string/compare.hpp>
+#include <boost/algorithm/string/find_iterator.hpp>
+#include <boost/algorithm/string/finder.hpp>
+#include <boost/lexical_cast.hpp>
#include <boost/program_options.hpp>
#include <compileTimeFormatter.h>
+#include <cstdlib>
+#include <filesystem>
+#include <iostream>
+#include <string>
+#include <string_view>
+#include <utility>
+#include <vector>
namespace po = boost::program_options;
using namespace AdHoc::literals;
diff --git a/icespider/compile/routeCompiler.cpp b/icespider/compile/routeCompiler.cpp
index c2b1731..da4f457 100644
--- a/icespider/compile/routeCompiler.cpp
+++ b/icespider/compile/routeCompiler.cpp
@@ -1,15 +1,29 @@
#include "routeCompiler.h"
+#include "routes.h"
+#include <Ice/Optional.h>
+#include <IceUtil/Handle.h>
#include <Slice/CPlusPlusUtil.h>
#include <Slice/Preprocessor.h>
+#include <algorithm>
+#include <boost/algorithm/string/find_iterator.hpp>
#include <boost/algorithm/string/join.hpp>
#include <boost/algorithm/string/replace.hpp>
+#include <boost/format.hpp>
#include <compileTimeFormatter.h>
+#include <cstdlib>
#include <filesystem>
#include <fprintbf.h>
+#include <http.h>
+#include <list>
+#include <memory>
#include <pathparts.h>
#include <scopeExit.h>
#include <slicer/modelPartsTypes.h>
+#include <slicer/serializer.h>
#include <slicer/slicer.h>
+#include <stdexcept>
+#include <string_view>
+#include <utility>
namespace IceSpider {
using namespace AdHoc::literals;
diff --git a/icespider/compile/routeCompiler.h b/icespider/compile/routeCompiler.h
index 45c3ffa..ee388ad 100644
--- a/icespider/compile/routeCompiler.h
+++ b/icespider/compile/routeCompiler.h
@@ -3,60 +3,61 @@
#include <Ice/BuiltinSequences.h>
#include <Slice/Parser.h>
+#include <cstdio>
#include <filesystem>
+#include <map>
#include <optional>
#include <routes.h>
+#include <string>
#include <vector>
#include <visibility.h>
-namespace IceSpider {
- namespace Compile {
- class DLL_PUBLIC RouteCompiler {
- public:
- using Units = std::map<std::string, Slice::UnitPtr>;
+namespace IceSpider::Compile {
+ class DLL_PUBLIC RouteCompiler {
+ public:
+ using Units = std::map<std::string, Slice::UnitPtr>;
- RouteCompiler();
+ RouteCompiler();
- [[nodiscard]] RouteConfigurationPtr loadConfiguration(const std::filesystem::path &) const;
- [[nodiscard]] Units loadUnits(const RouteConfigurationPtr &) const;
+ [[nodiscard]] RouteConfigurationPtr loadConfiguration(const std::filesystem::path &) const;
+ [[nodiscard]] Units loadUnits(const RouteConfigurationPtr &) const;
- void applyDefaults(const RouteConfigurationPtr &, const Units & u) const;
- void compile(const std::filesystem::path & input, const std::filesystem::path & output) const;
+ void applyDefaults(const RouteConfigurationPtr &, const Units & u) const;
+ void compile(const std::filesystem::path & input, const std::filesystem::path & output) const;
- std::vector<std::filesystem::path> searchPath;
+ std::vector<std::filesystem::path> searchPath;
- private:
- using Proxies = std::map<std::string, int>;
+ private:
+ using Proxies = std::map<std::string, int>;
#pragma GCC visibility push(hidden)
- void processConfiguration(FILE * output, FILE * outputh, const std::string & name,
- const RouteConfigurationPtr &, const Units &) const;
- void processBases(FILE * output, FILE * outputh, const RouteConfigurationPtr &, const Units &) const;
- void processBase(FILE * output, FILE * outputh, const RouteBases::value_type &, const Units &) const;
- void processRoutes(FILE * output, const RouteConfigurationPtr &, const Units &) const;
- void processRoute(FILE * output, const Routes::value_type &, const Units &) const;
- void registerOutputSerializers(FILE * output, const RoutePtr &) const;
- [[nodiscard]] Proxies initializeProxies(FILE * output, const RoutePtr &) const;
- void declareProxies(FILE * output, const Proxies &) const;
- void addSingleOperation(FILE * output, const RoutePtr &, const Slice::OperationPtr &) const;
- void addMashupOperations(FILE * output, const RoutePtr &, const Proxies &, const Units &) const;
- using ParameterMap = std::map<std::string, Slice::ParamDeclPtr>;
- static ParameterMap findParameters(const RoutePtr &, const Units &);
- static Slice::OperationPtr findOperation(const std::string &, const Units &);
- static Slice::OperationPtr findOperation(
- const std::string &, const Slice::ContainerPtr &, const Ice::StringSeq & = Ice::StringSeq());
- // using Type = std::pair<Slice::StructPtr, Slice::ClassDeclPtr>;
- struct Type {
- std::string type;
- std::optional<std::string> scoped;
- Slice::DataMemberList members;
- };
- static Type findType(const std::string &, const Units &);
- static std::optional<Type> findType(
- const std::string &, const Slice::ContainerPtr &, const Ice::StringSeq & = Ice::StringSeq());
-#pragma GCC visibility pop
+ void processConfiguration(FILE * output, FILE * outputh, const std::string & name,
+ const RouteConfigurationPtr &, const Units &) const;
+ void processBases(FILE * output, FILE * outputh, const RouteConfigurationPtr &, const Units &) const;
+ void processBase(FILE * output, FILE * outputh, const RouteBases::value_type &, const Units &) const;
+ void processRoutes(FILE * output, const RouteConfigurationPtr &, const Units &) const;
+ void processRoute(FILE * output, const Routes::value_type &, const Units &) const;
+ void registerOutputSerializers(FILE * output, const RoutePtr &) const;
+ [[nodiscard]] Proxies initializeProxies(FILE * output, const RoutePtr &) const;
+ void declareProxies(FILE * output, const Proxies &) const;
+ void addSingleOperation(FILE * output, const RoutePtr &, const Slice::OperationPtr &) const;
+ void addMashupOperations(FILE * output, const RoutePtr &, const Proxies &, const Units &) const;
+ using ParameterMap = std::map<std::string, Slice::ParamDeclPtr>;
+ static ParameterMap findParameters(const RoutePtr &, const Units &);
+ static Slice::OperationPtr findOperation(const std::string &, const Units &);
+ static Slice::OperationPtr findOperation(
+ const std::string &, const Slice::ContainerPtr &, const Ice::StringSeq & = Ice::StringSeq());
+ // using Type = std::pair<Slice::StructPtr, Slice::ClassDeclPtr>;
+ struct Type {
+ std::string type;
+ std::optional<std::string> scoped;
+ Slice::DataMemberList members;
};
- }
+ static Type findType(const std::string &, const Units &);
+ static std::optional<Type> findType(
+ const std::string &, const Slice::ContainerPtr &, const Ice::StringSeq & = Ice::StringSeq());
+#pragma GCC visibility pop
+ };
}
#endif
diff --git a/icespider/core/core.cpp b/icespider/core/core.cpp
index 989dcfb..448c7ec 100644
--- a/icespider/core/core.cpp
+++ b/icespider/core/core.cpp
@@ -1,11 +1,22 @@
#include "core.h"
#include "exceptions.h"
+#include "ihttpRequest.h"
#include <Ice/Initialize.h>
#include <Ice/ObjectAdapter.h>
+#include <Ice/PropertiesF.h>
+#include <algorithm>
+#include <compare>
#include <compileTimeFormatter.h>
+#include <cstdlib>
#include <cxxabi.h>
#include <factory.impl.h>
#include <filesystem>
+#include <http.h>
+#include <iostream>
+#include <pathparts.h>
+#include <set>
+#include <string>
+#include <typeinfo>
INSTANTIATEFACTORY(IceSpider::Plugin, Ice::CommunicatorPtr, Ice::PropertiesPtr);
INSTANTIATEPLUGINOF(IceSpider::ErrorHandler);
diff --git a/icespider/core/core.h b/icespider/core/core.h
index a77ce1a..b2150f8 100644
--- a/icespider/core/core.h
+++ b/icespider/core/core.h
@@ -3,14 +3,27 @@
#include "irouteHandler.h"
#include "util.h"
+#include <Ice/BuiltinSequences.h>
#include <Ice/Communicator.h>
+#include <Ice/Object.h>
+#include <Ice/ObjectAdapterF.h>
+#include <Ice/Properties.h>
+#include <Ice/Proxy.h>
+#include <Ice/ProxyF.h>
#include <c++11Helpers.h>
+#include <exception>
+#include <factory.h> // IWYU pragma: keep
#include <filesystem>
-#include <plugins.h>
+#include <memory>
+#include <plugins.h> // IWYU pragma: keep
+#include <string_view>
#include <vector>
#include <visibility.h>
+// IWYU pragma: no_include "factory.impl.h"
namespace IceSpider {
+ class IHttpRequest;
+
class DLL_PUBLIC Core {
public:
using AllRoutes = std::vector<IRouteHandlerCPtr>;
diff --git a/icespider/core/exceptions.h b/icespider/core/exceptions.h
index 8e3466d..0f1d1e8 100644
--- a/icespider/core/exceptions.h
+++ b/icespider/core/exceptions.h
@@ -2,6 +2,7 @@
#define ICESPIDER_EXCEPTIONS_H
#include "http.h"
+#include <string>
#include <visibility.h>
#define DeclareHttpEx(Name) \
diff --git a/icespider/core/flatMap.cpp b/icespider/core/flatMap.cpp
new file mode 100644
index 0000000..b6ad3a6
--- /dev/null
+++ b/icespider/core/flatMap.cpp
@@ -0,0 +1 @@
+#include "flatMap.h"
diff --git a/icespider/core/flatMap.h b/icespider/core/flatMap.h
index 1526cdf..8a8cc20 100644
--- a/icespider/core/flatMap.h
+++ b/icespider/core/flatMap.h
@@ -1,6 +1,12 @@
#ifndef ICESPIDER_CORE_FLATMAP_H
#define ICESPIDER_CORE_FLATMAP_H
+#include <algorithm>
+#include <cstddef>
+#include <functional>
+#include <iterator>
+#include <stdexcept>
+#include <string>
#include <utility>
#include <vector>
@@ -39,21 +45,21 @@ namespace IceSpider {
}
template<typename N>
- auto
+ [[nodiscard]] auto
lower_bound(const N & n) const
{
return std::lower_bound(begin(), end(), n, KeyComp<N> {});
}
template<typename N>
- auto
+ [[nodiscard]] auto
contains(const N & n) const
{
return std::binary_search(begin(), end(), n, KeyComp<N> {});
}
template<typename N>
- auto
+ [[nodiscard]] auto
find(const N & n) const
{
const auto lb = lower_bound(n);
@@ -67,13 +73,14 @@ namespace IceSpider {
}
template<typename Ex = std::out_of_range, typename N>
- const auto &
+ [[nodiscard]] const auto &
at(const N & n) const
{
if (const auto i = find(n); i != end()) {
return i->second;
}
if constexpr (std::is_constructible_v<Ex, N>) {
+ // NOLINTNEXTLINE(hicpp-no-array-decay)
throw Ex(n);
}
else {
@@ -81,12 +88,12 @@ namespace IceSpider {
}
}
- auto
+ [[nodiscard]] auto
begin() const
{
return cbegin();
}
- auto
+ [[nodiscard]] auto
end() const
{
return cend();
diff --git a/icespider/core/ihttpRequest.cpp b/icespider/core/ihttpRequest.cpp
index 7a72a96..873c96b 100644
--- a/icespider/core/ihttpRequest.cpp
+++ b/icespider/core/ihttpRequest.cpp
@@ -3,10 +3,18 @@
#include "irouteHandler.h"
#include "util.h"
#include "xwwwFormUrlEncoded.h"
+#include <algorithm>
#include <boost/lexical_cast.hpp>
-#include <cstdio>
+#include <compileTimeFormatter.h>
+#include <cstdlib>
#include <ctime>
#include <formatters.h>
+#include <http.h>
+#include <memory>
+#include <plugins.h>
+#include <slicer/modelParts.h>
+#include <slicer/serializer.h>
+#include <stdexcept>
namespace IceSpider {
using namespace AdHoc::literals;
@@ -16,7 +24,7 @@ namespace IceSpider {
Ice::Context
IHttpRequest::getContext() const
{
- return Ice::Context();
+ return {};
}
Slicer::DeserializerPtr
@@ -89,7 +97,7 @@ namespace IceSpider {
throw Http400_BadRequest();
}
}
- accepts.push_back(std::move(a));
+ accepts.push_back(a);
}
std::stable_sort(accepts.begin(), accepts.end(), [](const auto & a, const auto & b) {
diff --git a/icespider/core/ihttpRequest.h b/icespider/core/ihttpRequest.h
index f88d81f..a32509a 100644
--- a/icespider/core/ihttpRequest.h
+++ b/icespider/core/ihttpRequest.h
@@ -3,12 +3,21 @@
#include "exceptions.h"
#include <Ice/Current.h>
-#include <Ice/Optional.h>
-#include <IceUtil/Exception.h>
-#include <IceUtil/Optional.h>
#include <boost/lexical_cast.hpp>
+#include <c++11Helpers.h>
+#include <ctime>
#include <http.h>
+#include <iosfwd>
+#include <map>
+#include <optional>
+#include <slicer/modelParts.h>
+#include <slicer/serializer.h>
#include <slicer/slicer.h>
+#include <string>
+#include <string_view>
+#include <type_traits>
+#include <utility>
+#include <vector>
#include <visibility.h>
namespace IceSpider {
@@ -28,6 +37,7 @@ namespace IceSpider {
public:
explicit IHttpRequest(const Core *);
virtual ~IHttpRequest() = default;
+ SPECIAL_MEMBERS_DEFAULT_MOVE_NO_COPY(IHttpRequest);
[[nodiscard]] Ice::Context getContext() const;
[[nodiscard]] virtual const PathElements & getRequestPath() const = 0;
diff --git a/icespider/core/irouteHandler.cpp b/icespider/core/irouteHandler.cpp
index fc49aff..85b49f6 100644
--- a/icespider/core/irouteHandler.cpp
+++ b/icespider/core/irouteHandler.cpp
@@ -1,7 +1,14 @@
#include "irouteHandler.h"
-#include "core.h"
+#include "exceptions.h"
+#include "routeOptions.h"
#include <factory.impl.h>
#include <formatters.h>
+#include <optional>
+#include <pathparts.h>
+#include <set>
+#include <sstream>
+#include <string>
+#include <utility>
INSTANTIATEFACTORY(IceSpider::IRouteHandler, const IceSpider::Core *);
@@ -34,7 +41,7 @@ namespace IceSpider {
return {rs.first, rs.second->create(strm)};
}
}
- return ContentTypeSerializer();
+ return {};
}
ContentTypeSerializer
diff --git a/icespider/core/irouteHandler.h b/icespider/core/irouteHandler.h
index 7853c35..c9c09e2 100644
--- a/icespider/core/irouteHandler.h
+++ b/icespider/core/irouteHandler.h
@@ -1,17 +1,24 @@
#ifndef ICESPIDER_IROUTEHANDLER_H
#define ICESPIDER_IROUTEHANDLER_H
-#include "exceptions.h"
+#include "http.h"
#include "ihttpRequest.h"
-#include "routeOptions.h"
-#include "util.h"
+#include "slicer/serializer.h"
#include <c++11Helpers.h>
-#include <factory.h>
+#include <factory.h> // IWYU pragma: keep
+#include <iosfwd>
+#include <map>
+#include <memory>
#include <pathparts.h>
+#include <string_view>
#include <visibility.h>
+// IWYU pragma: no_include "factory.impl.h"
+// IWYU pragma: no_include <Ice/Comparable.h>
+// IWYU pragma: no_include <string>
namespace IceSpider {
class Core;
+ class RouteOptions;
class DLL_PUBLIC IRouteHandler : public Path {
public:
@@ -49,10 +56,4 @@ namespace IceSpider {
using RouteHandlerFactory = AdHoc::Factory<IRouteHandler, const Core *>;
}
-#if __cplusplus < 201709
-namespace std {
- template<typename T> using remove_cvref = typename std::remove_cv<typename std::remove_reference<T>::type>;
-}
-#endif
-
#endif
diff --git a/icespider/core/util-test.cpp b/icespider/core/util-test.cpp
index 32a7c42..df79fb2 100644
--- a/icespider/core/util-test.cpp
+++ b/icespider/core/util-test.cpp
@@ -1,4 +1,5 @@
#include "util.h"
+#include <string_view>
namespace foo ::bar {
class really;
diff --git a/icespider/core/xwwwFormUrlEncoded.cpp b/icespider/core/xwwwFormUrlEncoded.cpp
index 7a785bd..42bbddd 100644
--- a/icespider/core/xwwwFormUrlEncoded.cpp
+++ b/icespider/core/xwwwFormUrlEncoded.cpp
@@ -1,8 +1,23 @@
#include "xwwwFormUrlEncoded.h"
#include "exceptions.h"
-#include <Ice/BuiltinSequences.h>
+#include <Ice/Config.h>
+#include <algorithm>
#include <array>
+#include <boost/algorithm/string/compare.hpp>
+#include <boost/algorithm/string/finder.hpp>
#include <boost/lexical_cast.hpp>
+#include <cstddef>
+#include <cstdint>
+#include <factory.h>
+#include <istream>
+#include <iterator>
+#include <limits>
+#include <maybeString.h>
+#include <memory>
+#include <optional>
+#include <slicer/modelParts.h>
+#include <slicer/serializer.h>
+#include <utility>
namespace ba = boost::algorithm;
using namespace std::literals;
diff --git a/icespider/core/xwwwFormUrlEncoded.h b/icespider/core/xwwwFormUrlEncoded.h
index 6c266b6..d4b11f3 100644
--- a/icespider/core/xwwwFormUrlEncoded.h
+++ b/icespider/core/xwwwFormUrlEncoded.h
@@ -1,10 +1,16 @@
#ifndef ICESPIDER_CGI_XWWWFORMURLENCODED_H
#define ICESPIDER_CGI_XWWWFORMURLENCODED_H
-#include <boost/algorithm/string/split.hpp>
+#include <boost/algorithm/string/find_iterator.hpp>
+#include <functional>
+#include <iosfwd>
#include <maybeString.h>
+#include <slicer/modelParts.h>
#include <slicer/serializer.h>
+#include <string>
+#include <string_view>
#include <visibility.h>
+// IWYU pragma: no_forward_declare boost::algorithm::split_iterator
namespace IceSpider {
class XWwwFormUrlEncoded : public Slicer::Deserializer {
diff --git a/icespider/fcgi/cgiRequest.cpp b/icespider/fcgi/cgiRequest.cpp
index 2158956..d416280 100644
--- a/icespider/fcgi/cgiRequest.cpp
+++ b/icespider/fcgi/cgiRequest.cpp
@@ -1,4 +1,5 @@
#include "cgiRequest.h"
+#include <iostream>
namespace IceSpider {
CgiRequest::CgiRequest(Core * c, int argc, char ** argv, char ** env) : CgiRequestBase(c, env)
diff --git a/icespider/fcgi/cgiRequest.h b/icespider/fcgi/cgiRequest.h
index c78f76e..bae6db0 100644
--- a/icespider/fcgi/cgiRequest.h
+++ b/icespider/fcgi/cgiRequest.h
@@ -2,8 +2,11 @@
#define ICESPIDER_CGI_CGIREQUEST_H
#include "cgiRequestBase.h"
+#include <iosfwd>
namespace IceSpider {
+ class Core;
+
class CgiRequest : public CgiRequestBase {
public:
CgiRequest(Core * c, int argc, char ** argv, char ** env);
diff --git a/icespider/fcgi/cgiRequestBase.cpp b/icespider/fcgi/cgiRequestBase.cpp
index fbb195d..108f2ce 100644
--- a/icespider/fcgi/cgiRequestBase.cpp
+++ b/icespider/fcgi/cgiRequestBase.cpp
@@ -1,13 +1,20 @@
#include "cgiRequestBase.h"
#include "xwwwFormUrlEncoded.h"
-#include <boost/algorithm/string/case_conv.hpp>
#include <boost/algorithm/string/classification.hpp>
+#include <boost/algorithm/string/constants.hpp>
+#include <boost/algorithm/string/find_iterator.hpp>
#include <boost/algorithm/string/predicate.hpp>
#include <boost/algorithm/string/split.hpp>
+#include <compileTimeFormatter.h>
+#include <exceptions.h>
+#include <flatMap.h>
#include <formatters.h>
+#include <ihttpRequest.h>
+#include <maybeString.h>
#include <slicer/common.h>
#include <slicer/modelPartsTypes.h>
-#include <util.h>
+#include <utility>
+#include <vector>
namespace ba = boost::algorithm;
using namespace std::literals;
diff --git a/icespider/fcgi/cgiRequestBase.h b/icespider/fcgi/cgiRequestBase.h
index fdc82d7..32cdca3 100644
--- a/icespider/fcgi/cgiRequestBase.h
+++ b/icespider/fcgi/cgiRequestBase.h
@@ -1,14 +1,18 @@
#ifndef ICESPIDER_CGI_CGIREQUESTBASE_H
#define ICESPIDER_CGI_CGIREQUESTBASE_H
+#include "http.h"
#include <case_less.h>
-#include <core.h>
#include <flatMap.h>
#include <ihttpRequest.h>
+#include <iosfwd>
#include <maybeString.h>
#include <string_view>
+// IWYU pragma: no_forward_declare AdHoc::case_less
namespace IceSpider {
+ class Core;
+
class CgiRequestBase : public IHttpRequest {
protected:
CgiRequestBase(Core * c, const char * const * const env);
diff --git a/icespider/fcgi/fcgiRequest.h b/icespider/fcgi/fcgiRequest.h
index 58ffc0a..c77bb68 100644
--- a/icespider/fcgi/fcgiRequest.h
+++ b/icespider/fcgi/fcgiRequest.h
@@ -2,9 +2,13 @@
#define ICESPIDER_CGI_FCGIREQUEST_H
#include "cgiRequestBase.h"
+#include <fcgiapp.h>
#include <fcgio.h>
+#include <iosfwd>
namespace IceSpider {
+ class Core;
+
class FcgiRequest : public CgiRequestBase {
public:
FcgiRequest(Core * c, FCGX_Request * r);
diff --git a/icespider/fcgi/main.cpp b/icespider/fcgi/main.cpp
index 8402501..b4b9052 100644
--- a/icespider/fcgi/main.cpp
+++ b/icespider/fcgi/main.cpp
@@ -1,6 +1,8 @@
#include "cgiRequest.h"
-#include "core.h"
#include "fcgiRequest.h"
+#include <core.h>
+#include <fcgiapp.h>
+#include <http.h>
#include <visibility.h>
using namespace IceSpider;
diff --git a/icespider/fileSessions/fileSessions.cpp b/icespider/fileSessions/fileSessions.cpp
index afbb18d..6818410 100644
--- a/icespider/fileSessions/fileSessions.cpp
+++ b/icespider/fileSessions/fileSessions.cpp
@@ -1,18 +1,29 @@
-#include "Ice/Initialize.h"
+#include <Ice/Communicator.h>
+#include <Ice/Config.h>
+#include <Ice/Current.h>
#include <Ice/InputStream.h>
#include <Ice/OutputStream.h>
-#include <boost/uuid/uuid_generators.hpp>
+#include <Ice/Properties.h>
+#include <Ice/PropertiesF.h>
+#include <boost/lexical_cast.hpp>
+#include <boost/uuid/random_generator.hpp>
#include <boost/uuid/uuid_io.hpp>
+#include <cerrno>
#include <core.h>
+#include <cstring>
+#include <ctime>
+#include <exception>
#include <factory.impl.h>
-#include <fcntl.h>
#include <fileUtils.h>
-#include <filesystem>
+#include <ios>
+#include <memory>
#include <session.h>
+#include <string>
+#include <string_view>
#include <sys.h>
#include <sys/file.h>
-#include <sys/mman.h>
-#include <sys/stat.h>
+#include <unistd.h>
+#include <utility>
namespace IceSpider {
class FileSessions : public Plugin, public SessionManager {
diff --git a/icespider/testing/testRequest.cpp b/icespider/testing/testRequest.cpp
index c384b31..e522bc1 100644
--- a/icespider/testing/testRequest.cpp
+++ b/icespider/testing/testRequest.cpp
@@ -1,7 +1,15 @@
#include "testRequest.h"
+#include <array>
#include <boost/algorithm/string/classification.hpp>
+#include <boost/algorithm/string/constants.hpp>
+#include <boost/algorithm/string/find_iterator.hpp>
+#include <boost/algorithm/string/predicate_facade.hpp>
#include <boost/algorithm/string/split.hpp>
+#include <cstdio>
#include <formatters.h>
+#include <http.h>
+#include <ihttpRequest.h>
+#include <utility>
namespace IceSpider {
constexpr std::string_view slash("/");
diff --git a/icespider/testing/testRequest.h b/icespider/testing/testRequest.h
index 4d93197..0258572 100644
--- a/icespider/testing/testRequest.h
+++ b/icespider/testing/testRequest.h
@@ -1,10 +1,18 @@
#ifndef ICESPIDER_TESTING_TESTREQUEST_H
#define ICESPIDER_TESTING_TESTREQUEST_H
+#include <functional>
+#include <http.h>
#include <ihttpRequest.h>
+#include <iosfwd>
+#include <map>
+#include <string>
+#include <string_view>
#include <visibility.h>
namespace IceSpider {
+ class Core;
+
class DLL_PUBLIC TestRequest : public IHttpRequest {
public:
using MapVars = std::map<std::string, std::string, std::less<>>;
diff --git a/icespider/unittests/Jamfile.jam b/icespider/unittests/Jamfile.jam
index bc84b6d..16cb1e6 100644
--- a/icespider/unittests/Jamfile.jam
+++ b/icespider/unittests/Jamfile.jam
@@ -52,6 +52,8 @@ run
<implicit-dependency>../compile//icespider-compile
<include>.
<implicit-dependency>test-api-lib
+ <variant>san:<testing.launcher>LSAN_OPTIONS=suppressions=$(me)/leak.suppressions
+ <variant>san:<dependency>$(me)/leak.suppressions
: testCompile :
;
@@ -121,11 +123,16 @@ run
obj test-fcgi : test-fcgi.ice : <toolset>tidy:<checker>none ;
run
testFcgi.cpp
- test-fcgi.ice
+ [ obj slicer-test-fcgi : test-fcgi.ice :
+ <slicer>pure
+ <use>slicer
+ <use>adhocutil
+ <include>.
+ <implicit-dependency>test-fcgi
+ <toolset>tidy:<checker>none ]
test-fcgi
../fcgi/cgiRequestBase.cpp
: : :
- <slicer>pure
<define>BOOST_TEST_DYN_LINK
<library>testCommon
<library>../common//icespider-common
@@ -155,11 +162,16 @@ run
obj test-api : test-api.ice : <include>. <toolset>tidy:<checker>none ;
lib test-api-lib :
- test-api.ice
+ [ obj slicer-test-api : test-api.ice :
+ <slicer>pure
+ <use>slicer
+ <use>adhocutil
+ <include>.
+ <implicit-dependency>test-api
+ <toolset>tidy:<checker>none ]
test-api-impl.cpp
test-api
:
- <slicer>pure
<library>slicer
<library>adhocutil
<library>..//pthread
@@ -172,4 +184,5 @@ run testFlatMap.cpp : : :
<library>boost_utf
<define>BOOST_TEST_DYN_LINK
<use>../core//icespider-core
+ <toolset>tidy:<xcheckxx>hicpp-vararg
;
diff --git a/icespider/unittests/base2.cpp b/icespider/unittests/base2.cpp
index a64d46b..6936252 100644
--- a/icespider/unittests/base2.cpp
+++ b/icespider/unittests/base2.cpp
@@ -1,4 +1,5 @@
#include "base2.h"
+#include "test-api.h"
namespace common {
base2::base2(const IceSpider::Core *) { }
diff --git a/icespider/unittests/base2.h b/icespider/unittests/base2.h
index d0ad75c..0082b4f 100644
--- a/icespider/unittests/base2.h
+++ b/icespider/unittests/base2.h
@@ -2,11 +2,15 @@
#define ICESPIDER_TEST_BASE2_H
// Standard headers.
-#include <core.h>
-#include <irouteHandler.h>
+#include <visibility.h>
// Interface headers.
-#include <test-api.h>
+#include "test-api.h"
+
+namespace IceSpider {
+ class Core;
+ class IHttpRequest;
+}
namespace common {
// Base classes.
diff --git a/icespider/unittests/leak.suppressions b/icespider/unittests/leak.suppressions
new file mode 100644
index 0000000..5a2035c
--- /dev/null
+++ b/icespider/unittests/leak.suppressions
@@ -0,0 +1 @@
+leak:libmcpp.so
diff --git a/icespider/unittests/test-api-impl.cpp b/icespider/unittests/test-api-impl.cpp
index bcf32ed..bcde5c5 100644
--- a/icespider/unittests/test-api-impl.cpp
+++ b/icespider/unittests/test-api-impl.cpp
@@ -1,3 +1,5 @@
+#include <iosfwd>
+#include <string>
#include <test-api.h>
void
diff --git a/icespider/unittests/testAccept.cpp b/icespider/unittests/testAccept.cpp
index 7719d56..cacb01e 100644
--- a/icespider/unittests/testAccept.cpp
+++ b/icespider/unittests/testAccept.cpp
@@ -2,8 +2,14 @@
#include <boost/test/data/test_case.hpp>
#include <boost/test/unit_test.hpp>
-#include <exceptions.h>
#include <ihttpRequest.h>
+#include <optional>
+#include <ostream>
+#include <string_view>
+#include <vector>
+namespace IceSpider {
+ class Http400_BadRequest;
+}
auto parse = IceSpider::IHttpRequest::parseAccept;
using namespace boost::unit_test::data;
diff --git a/icespider/unittests/testApp.cpp b/icespider/unittests/testApp.cpp
index 1ce26f4..d6a4a28 100644
--- a/icespider/unittests/testApp.cpp
+++ b/icespider/unittests/testApp.cpp
@@ -1,24 +1,40 @@
#define BOOST_TEST_MODULE TestApp
#include <boost/test/unit_test.hpp>
+#include <Ice/Communicator.h>
+#include <Ice/Config.h>
#include <Ice/Initialize.h>
#include <Ice/ObjectAdapter.h>
-#include <boost/algorithm/string/classification.hpp>
+#include <Ice/Optional.h>
+#include <Ice/Properties.h>
+#include <Ice/PropertiesF.h>
#include <boost/algorithm/string/predicate.hpp>
-#include <boost/algorithm/string/split.hpp>
#include <core.h>
#include <definedDirs.h>
+#include <exception>
#include <exceptions.h>
#include <factory.impl.h>
#include <filesystem>
+#include <http.h>
+#include <ihttpRequest.h>
#include <irouteHandler.h>
#include <json/serializer.h>
+#include <libxml++/document.h>
+#include <libxml++/nodes/element.h>
#include <libxml++/parsers/domparser.h>
-#include <safeMapFind.h>
+#include <map>
+#include <memory>
+#include <set>
#include <slicer/slicer.h>
+#include <slicer/xml/serializer.h>
+#include <sstream>
+#include <string>
+#include <string_view>
#include <test-api.h>
#include <testRequest.h>
-#include <xml/serializer.h>
+namespace Ice {
+ struct Current;
+}
using namespace IceSpider;
diff --git a/icespider/unittests/testCompile.cpp b/icespider/unittests/testCompile.cpp
index fa16de3..402143f 100644
--- a/icespider/unittests/testCompile.cpp
+++ b/icespider/unittests/testCompile.cpp
@@ -1,13 +1,21 @@
#define BOOST_TEST_MODULE TestCompile
#include <boost/test/unit_test.hpp>
-#include "../compile/routeCompiler.h"
-#include "../core/irouteHandler.h"
-#include <boost/algorithm/string/join.hpp>
+#include <Ice/Optional.h>
+#include <IceUtil/Handle.h>
+#include <Slice/Parser.h>
#include <definedDirs.h>
-#include <dlfcn.h>
-#include <plugins.h>
+#include <filesystem>
+#include <http.h>
+#include <iosfwd>
+#include <map>
+#include <memory>
+#include <routeCompiler.h>
+#include <routes.h>
#include <slicer/modelPartsTypes.h>
+#include <string>
+#include <utility>
+#include <vector>
using namespace IceSpider;
diff --git a/icespider/unittests/testFcgi.cpp b/icespider/unittests/testFcgi.cpp
index cc9aa44..5b1ac5b 100644
--- a/icespider/unittests/testFcgi.cpp
+++ b/icespider/unittests/testFcgi.cpp
@@ -1,11 +1,31 @@
#define BOOST_TEST_MODULE TestApp
#include <boost/test/unit_test.hpp>
+#include <Ice/Config.h>
+#include <boost/lexical_cast.hpp>
#include <cgiRequestBase.h>
#include <core.h>
-#include <definedDirs.h>
+#include <cstdlib>
+#include <cstring>
+#include <ctime>
+#include <http.h>
+#include <ihttpRequest.h>
+#include <iostream>
+#include <map>
+#include <memory>
+#include <optional>
#include <slicer/modelPartsTypes.h>
+#include <string>
+#include <string_view>
#include <test-fcgi.h>
+#include <vector>
+
+namespace IceSpider {
+ class Http400_BadRequest;
+}
+namespace IceSpider {
+ class Http405_MethodNotAllowed;
+}
using namespace std::literals;
namespace std {
@@ -96,7 +116,7 @@ public:
}
// NOLINTNEXTLINE(hicpp-explicit-conversions)
- operator char * *()
+ operator char **()
{
return &front();
}
diff --git a/icespider/unittests/testFileSessions.cpp b/icespider/unittests/testFileSessions.cpp
index 3712d03..2470363 100644
--- a/icespider/unittests/testFileSessions.cpp
+++ b/icespider/unittests/testFileSessions.cpp
@@ -1,11 +1,19 @@
#define BOOST_TEST_MODULE TestFileSessions
#include <boost/test/unit_test.hpp>
-#include <Ice/Initialize.h>
+#include <Ice/Communicator.h>
#include <Ice/Properties.h>
+#include <Ice/Proxy.h>
#include <core.h>
+#include <ctime>
#include <definedDirs.h>
+#include <filesystem>
+#include <map>
+#include <memory>
#include <session.h>
+#include <string>
+#include <string_view>
+#include <unistd.h>
BOOST_TEST_DONT_PRINT_LOG_VALUE(IceSpider::Variables);
diff --git a/icespider/unittests/testFlatMap.cpp b/icespider/unittests/testFlatMap.cpp
index 3995cc9..ed19371 100644
--- a/icespider/unittests/testFlatMap.cpp
+++ b/icespider/unittests/testFlatMap.cpp
@@ -2,6 +2,10 @@
#include <boost/test/unit_test.hpp>
#include <flatMap.h>
+#include <stdexcept>
+#include <string_view>
+#include <utility>
+#include <vector>
using TM = IceSpider::flatmap<std::string_view, int>;
@@ -28,7 +32,7 @@ BOOST_AUTO_TEST_CASE(single)
BOOST_CHECK(contains("a"));
BOOST_CHECK_EQUAL(at("a"), 1);
BOOST_CHECK(!contains("b"));
- BOOST_CHECK_THROW(at("b"), std::out_of_range);
+ BOOST_CHECK_THROW((void)at("b"), std::out_of_range);
BOOST_CHECK_EQUAL(begin()->first, "a");
BOOST_CHECK_EQUAL(begin()->second, 1);
BOOST_CHECK_EQUAL(find("a"), begin());
@@ -86,7 +90,7 @@ BOOST_AUTO_TEST_CASE(several)
BOOST_CHECK(contains(1));
BOOST_CHECK_EQUAL(at(1), "a");
BOOST_CHECK(!contains(2));
- BOOST_CHECK_THROW(at(2), std::out_of_range);
+ BOOST_CHECK_THROW((void)at(2), std::out_of_range);
BOOST_CHECK(contains(3));
BOOST_CHECK(contains(6));
BOOST_CHECK_EQUAL(begin()->first, 1);
diff --git a/icespider/xslt/exslt.cpp b/icespider/xslt/exslt-init.cpp
index 186c77a..d4489e7 100644
--- a/icespider/xslt/exslt.cpp
+++ b/icespider/xslt/exslt-init.cpp
@@ -1,5 +1,6 @@
#include <libexslt/exslt.h>
-#include <libxslt/transform.h>
+#include <libxml/parser.h>
+#include <libxslt/xslt.h>
static void initLibXml() __attribute__((constructor(102)));
void
diff --git a/icespider/xslt/xsltStreamSerializer.cpp b/icespider/xslt/xsltStreamSerializer.cpp
index c2d2136..e210685 100644
--- a/icespider/xslt/xsltStreamSerializer.cpp
+++ b/icespider/xslt/xsltStreamSerializer.cpp
@@ -1,9 +1,19 @@
#include "xsltStreamSerializer.h"
-#include <factory.impl.h>
+#include <chrono>
#include <filesystem>
#include <libxml++/document.h>
+#include <libxml++/exceptions/exception.h>
#include <libxml/HTMLtree.h>
+#include <libxml/tree.h>
+#include <libxml/xmlIO.h>
+#include <libxml/xmlstring.h>
+#include <libxslt/transform.h>
#include <libxslt/xsltInternals.h>
+#include <memory>
+#include <ostream>
+#include <slicer/modelParts.h>
+#include <slicer/serializer.h>
+#include <slicer/xml/serializer.h>
namespace IceSpider {
static int
diff --git a/icespider/xslt/xsltStreamSerializer.h b/icespider/xslt/xsltStreamSerializer.h
index a21f424..429b73c 100644
--- a/icespider/xslt/xsltStreamSerializer.h
+++ b/icespider/xslt/xsltStreamSerializer.h
@@ -3,9 +3,15 @@
#include <c++11Helpers.h>
#include <filesystem>
-#include <libxslt/transform.h>
+#include <iosfwd>
+#include <libxslt/xsltInternals.h>
+#include <slicer/modelParts.h>
+#include <slicer/serializer.h>
#include <slicer/xml/serializer.h>
#include <visibility.h>
+namespace xmlpp {
+ class Document;
+}
namespace IceSpider {
class DLL_PUBLIC XsltStreamSerializer : public Slicer::XmlDocumentSerializer {
diff --git a/iwyu.json b/iwyu.json
new file mode 100644
index 0000000..56b0ffa
--- /dev/null
+++ b/iwyu.json
@@ -0,0 +1,293 @@
+[
+ {
+ "symbol": [
+ "Glib::ustring",
+ "private",
+ "<glibmm/ustring.h>",
+ "public"
+ ]
+ },
+ {
+ "symbol": [
+ "@u?int\\d\\+_t",
+ "private",
+ "<cstdint>",
+ "public"
+ ]
+ },
+ {
+ "symbol": [
+ "tm",
+ "private",
+ "<ctime>",
+ "public"
+ ]
+ },
+ {
+ "symbol": [
+ "boost::posix_time::time_duration",
+ "private",
+ "<boost/date_time/posix_time/posix_time.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "<bits/types/stack_t.h>",
+ "private",
+ "<ucontext.h>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@.field_types.h.",
+ "private",
+ "<mysql.h>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@.mysql_time.h.",
+ "private",
+ "<mysql.h>",
+ "public"
+ ]
+ },
+ {
+ "symbol": [
+ "free",
+ "private",
+ "<cstdlib>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "<boost/cstdint.hpp>",
+ "private",
+ "<cstdint>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "<ext/alloc_traits.h>",
+ "private",
+ "<memory>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "<bits/struct_stat.h>",
+ "private",
+ "<sys/stat.h>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "<bits/exception.h>",
+ "private",
+ "<stdexcept>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/test/(unit_test_suite|framework).hpp>",
+ "private",
+ "<boost/test/unit_test.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/test/(utils|tools|tree)/.*>",
+ "private",
+ "<boost/test/unit_test.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/format/(format_(class|implementation)|alt_sstream).hpp>",
+ "private",
+ "<boost/format.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/test/data/.*>",
+ "private",
+ "<boost/test/data/test_case.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/mpl/.*>",
+ "private",
+ "<boost/mpl/list.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/iostreams/detail/.*>",
+ "private",
+ "<boost/iostreams/stream.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/date_time/gregorian/.*>",
+ "private",
+ "<boost/date_time/gregorian_calendar.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/date_time/time_.*>",
+ "private",
+ "<boost/date_time/time.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/date_time/posix_time/posix_time_.*>",
+ "private",
+ "<boost/date_time/posix_time/posix_time.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/date_time/posix_time/(ptime|conversion|time_(formatt|pars)ers).hpp>",
+ "private",
+ "<boost/date_time/posix_time/posix_time.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/preprocessor/.*>",
+ "private",
+ "<boost/test/unit_test.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/lexical_cast/.*>",
+ "private",
+ "<boost/lexical_cast.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "<boost/algorithm/string/detail/finder.hpp>",
+ "private",
+ "<boost/algorithm/string/finder.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/program_options/.*>",
+ "private",
+ "<boost/program_options.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/multi_index/detail/index.*>",
+ "private",
+ "<boost/multi_index/ordered_index.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/multi_index/detail/ord.*>",
+ "private",
+ "<boost/multi_index/ordered_index.hpp>",
+ "public"
+ ]
+ },
+ {
+ "symbol": [
+ "std::filesystem",
+ "private",
+ "<filesystem>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/multi_index/detail/bidir.*>",
+ "private",
+ "<boost/multi_index_container.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "<boost/algorithm/string/detail/classification.hpp>",
+ "private",
+ "<boost/algorithm/string/classification.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/range/.*\\.hpp>",
+ "private",
+ "<boost/algorithm/string/find_iterator.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "@<boost/iterator/.*\\.hpp>",
+ "private",
+ "<boost/algorithm/string/find_iterator.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "<boost/detail/basic_pointerbuf.hpp>",
+ "private",
+ "<boost/lexical_cast.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "<boost/detail/basic_pointerbuf.hpp>",
+ "private",
+ "<boost/lexical_cast.hpp>",
+ "public"
+ ]
+ },
+ {
+ "include": [
+ "<boost/algorithm/string/detail/find_iterator.hpp>",
+ "private",
+ "<boost/algorithm/string/find_iterator.hpp>",
+ "public"
+ ]
+ },
+ {
+ "ref": "/usr/lib/llvm/13/share/include-what-you-use/boost-all-private.imp"
+ }
+]