diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8f0d21a0b..38ab16afd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,6 +13,30 @@ concurrency: cancel-in-progress: true jobs: + linux-clang-20-cmake-modules: + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + - name: Install Clang 20 + run: | + sudo apt -y update + sudo apt -y install wget lsb-release software-properties-common gnupg + wget https://apt.llvm.org/llvm.sh + chmod +x llvm.sh + sudo ./llvm.sh 20 + sudo apt -y install clang-20 libc++-20-dev libc++abi-20-dev + sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-20 100 + sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-20 100 + - name: Install dependencies + run: sudo apt -y install cmake ninja-build + - name: Configure with Clang 20 and modules + run: | + export CC=clang-20 + export CXX=clang++-20 + cmake -S . -B build -G Ninja -DPOCO_BUILD_MODULES=ON + - name: Build + run: cmake --build build + android-arm64-v8a-ndk-latest-cmake: runs-on: ubuntu-22.04 steps: diff --git a/.gitignore b/.gitignore index 3a5ed86f8..241afe6d9 100644 --- a/.gitignore +++ b/.gitignore @@ -60,6 +60,7 @@ CPackConfig.cmake CPackSourceConfig.cmake cmake_* cmake-build-* +*Targets_installed.cmake # Packages # ############ diff --git a/CMakeLists.txt b/CMakeLists.txt index d91128ee3..74da1fff5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -202,8 +202,18 @@ option(ENABLE_POCODOC "Enable Poco Documentation Generator" OFF) option(ENABLE_PDF "Enable PDF" OFF) option(ENABLE_TRACE "Enable stack tracing" OFF) -option(ENABLE_CPPUNIT - "Set to OFF|ON (default is OFF) to enable CppUnit library" OFF) + +if(POCO_ENABLE_CPP20) + option(ENABLE_MODULES "Build Poco.* C++ modules" OFF) +endif() + +if(ENABLE_ACTIVERECORD AND NOT ENABLE_DATA) + set(ENABLE_DATA ON CACHE BOOL "Enable Data" FORCE) +endif() + +if(ENABLE_ACTIVERECORD AND NOT ENABLE_XML) + set(ENABLE_XML ON CACHE BOOL "Enable XML" FORCE) +endif() option(ENABLE_CPPUNIT "Set to OFF|ON (default is OFF) to enable CppUnit library" OFF) @@ -577,6 +587,10 @@ if(ENABLE_TRACE) list(APPEND Poco_COMPONENTS "Trace") endif() +if(ENABLE_MODULES AND CMAKE_VERSION VERSION_GREATER_EQUAL 3.28) + add_subdirectory(modules) +endif() + ############################################################# # Uninstall stuff see: http://www.vtk.org/Wiki/CMake_FAQ @@ -645,6 +659,13 @@ message(STATUS "[cmake] Installation target path: ${CMAKE_INSTALL_PREFIX}") if(CMAKE_TOOLCHAIN_FILE) message(STATUS "[cmake] Use toolchain file: ${CMAKE_TOOLCHAIN_FILE}") endif() +if (ENABLE_MODULES) + if(CMAKE_VERSION VERSION_GREATER_EQUAL 3.28) + message(STATUS "Building Poco.* C++ modules") + else() + message(WARNING "Skipping Poco.* C++ modules (requires CMake 3.28+, found ${CMAKE_VERSION})") + endif() +endif() message(STATUS "[cmake] Build for OS type: ${CMAKE_SYSTEM_NAME}") message(STATUS "[cmake] Build for OS version: ${CMAKE_SYSTEM_VERSION}") message(STATUS "[cmake] Build for CPU type: ${CMAKE_SYSTEM_PROCESSOR}") diff --git a/Data/include/Poco/Data/AbstractBinder.h b/Data/include/Poco/Data/AbstractBinder.h index 39f2a62c9..b94a6551c 100644 --- a/Data/include/Poco/Data/AbstractBinder.h +++ b/Data/include/Poco/Data/AbstractBinder.h @@ -45,7 +45,7 @@ class Transcoder; namespace Keywords { -static const NullData null = std::nullopt; +inline const NullData null = std::nullopt; } // namespace Keywords diff --git a/Data/include/Poco/Data/Constants.h b/Data/include/Poco/Data/Constants.h index 574c09bb4..2426e7085 100644 --- a/Data/include/Poco/Data/Constants.h +++ b/Data/include/Poco/Data/Constants.h @@ -27,7 +27,7 @@ namespace Poco { namespace Data { -static const std::size_t POCO_DATA_INVALID_ROW = std::numeric_limits::max(); +inline const std::size_t POCO_DATA_INVALID_ROW = std::numeric_limits::max(); } } // namespace Poco::Data diff --git a/Net/include/Poco/Net/MultiSocketPoller.h b/Net/include/Poco/Net/MultiSocketPoller.h index 807a2e752..7a884cc1a 100644 --- a/Net/include/Poco/Net/MultiSocketPoller.h +++ b/Net/include/Poco/Net/MultiSocketPoller.h @@ -19,8 +19,10 @@ #include "Poco/Net/Net.h" +#include "Poco/Net/PollSet.h" #include "Poco/Net/Socket.h" #include "Poco/Net/UDPHandler.h" +#include "Poco/Net/UDPSocketReader.h" namespace Poco { diff --git a/Net/include/Poco/Net/SocketAddress.h b/Net/include/Poco/Net/SocketAddress.h index 8792f539f..e45306741 100644 --- a/Net/include/Poco/Net/SocketAddress.h +++ b/Net/include/Poco/Net/SocketAddress.h @@ -265,23 +265,11 @@ inline void SocketAddress::newIPv4(const sockaddr_in* sockAddr) } -inline void SocketAddress::newIPv4(const IPAddress& hostAddress, Poco::UInt16 portNumber) -{ - _pImpl = new Poco::Net::Impl::IPv4SocketAddressImpl(hostAddress.addr(), htons(portNumber)); -} - - #if defined(POCO_HAVE_IPv6) inline void SocketAddress::newIPv6(const sockaddr_in6* sockAddr) { _pImpl = new Poco::Net::Impl::IPv6SocketAddressImpl(sockAddr); } - - -inline void SocketAddress::newIPv6(const IPAddress& hostAddress, Poco::UInt16 portNumber) -{ - _pImpl = new Poco::Net::Impl::IPv6SocketAddressImpl(hostAddress.addr(), htons(portNumber), hostAddress.scope()); -} #endif // POCO_HAVE_IPv6 diff --git a/Net/include/Poco/Net/UDPSocketReader.h b/Net/include/Poco/Net/UDPSocketReader.h index b6af9e0bd..95301c75f 100644 --- a/Net/include/Poco/Net/UDPSocketReader.h +++ b/Net/include/Poco/Net/UDPSocketReader.h @@ -20,6 +20,7 @@ #include "Poco/Net/Net.h" #include "Poco/Net/DatagramSocket.h" +#include "Poco/Net/UDPServerParams.h" namespace Poco { diff --git a/Net/src/SocketAddress.cpp b/Net/src/SocketAddress.cpp index 3313e483b..e5e2dd5fb 100644 --- a/Net/src/SocketAddress.cpp +++ b/Net/src/SocketAddress.cpp @@ -433,6 +433,20 @@ Poco::UInt16 SocketAddress::resolveService(const std::string& service) } +void SocketAddress::newIPv4(const IPAddress& hostAddress, Poco::UInt16 portNumber) +{ + _pImpl = new Poco::Net::Impl::IPv4SocketAddressImpl(hostAddress.addr(), htons(portNumber)); +} + + +#if defined(POCO_HAVE_IPv6) +void SocketAddress::newIPv6(const IPAddress& hostAddress, Poco::UInt16 portNumber) +{ + _pImpl = new Poco::Net::Impl::IPv6SocketAddressImpl(hostAddress.addr(), htons(portNumber), hostAddress.scope()); +} +#endif // POCO_HAVE_IPv6 + + Poco::BinaryWriter& operator << (Poco::BinaryWriter& writer, const Poco::Net::SocketAddress& value) { writer << value.host(); diff --git a/README.md b/README.md index 58ea761f8..f4283a837 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,7 @@ and [Getting Started](https://pocoproject.org/docs/00200-GettingStarted.html) do - A C++17 compiler (Visual C++ 2017, GCC 8.0, Clang 5, or newer) - OpenSSL headers and libraries (optional, but recommended) - MySQL, PostgreSQL and ODBC client libraries (optional) +- C++20 and CMake 3.28 or later (for C++ modules) Most Unix/Linux systems already have OpenSSL preinstalled. If your system does not have OpenSSL, please get it from or diff --git a/build/exe/vswhere.exe b/build/exe/vswhere.exe deleted file mode 100644 index cd95aa958..000000000 Binary files a/build/exe/vswhere.exe and /dev/null differ diff --git a/cmake/PocoMacros.cmake b/cmake/PocoMacros.cmake index 008c4a05a..2b148a2f2 100644 --- a/cmake/PocoMacros.cmake +++ b/cmake/PocoMacros.cmake @@ -210,60 +210,60 @@ endmacro() # target_name the name of the target. e.g. Foundation for PocoFoundation # Example: POCO_GENERATE_PACKAGE(Foundation) macro(POCO_GENERATE_PACKAGE target_name) -include(CMakePackageConfigHelpers) -write_basic_package_version_file( - "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}ConfigVersion.cmake" - VERSION ${PROJECT_VERSION} - COMPATIBILITY AnyNewerVersion -) -if("${CMAKE_VERSION}" VERSION_LESS "3.0.0") - if(NOT EXISTS "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}Targets.cmake") - export(TARGETS "${target_name}" APPEND + include(CMakePackageConfigHelpers) + write_basic_package_version_file( + "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}ConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion + ) + if("${CMAKE_VERSION}" VERSION_LESS "3.0.0") + if(NOT EXISTS "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}Targets.cmake") + export(TARGETS "${target_name}" APPEND + FILE "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}Targets.cmake" + NAMESPACE "${PROJECT_NAME}::" + ) + endif() + else() + export(EXPORT "${target_name}Targets" FILE "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}Targets.cmake" NAMESPACE "${PROJECT_NAME}::" - ) + ) endif() -else() - export(EXPORT "${target_name}Targets" - FILE "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}Targets.cmake" - NAMESPACE "${PROJECT_NAME}::" - ) -endif() -if("${target_name}" STREQUAL "CppUnit") - configure_file("cmake/${target_name}Config.cmake" - "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}Config.cmake" - @ONLY - ) -else() - configure_file("cmake/Poco${target_name}Config.cmake" + if("${target_name}" STREQUAL "CppUnit") + configure_file("cmake/${target_name}Config.cmake" "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}Config.cmake" @ONLY + ) + else() + configure_file("cmake/Poco${target_name}Config.cmake" + "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}Config.cmake" + @ONLY + ) + endif() + + # Set config script install location in a location that find_package() will + # look for, which is different on MS Windows than for UNIX + # Note: also set in root CMakeLists.txt + if(WIN32) + set(PocoConfigPackageLocation "cmake") + else() + set(PocoConfigPackageLocation "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") + endif() + + install( + EXPORT "${target_name}Targets" + FILE "${PROJECT_NAME}${target_name}Targets.cmake" + NAMESPACE "${PROJECT_NAME}::" + DESTINATION "${PocoConfigPackageLocation}" ) -endif() -# Set config script install location in a location that find_package() will -# look for, which is different on MS Windows than for UNIX -# Note: also set in root CMakeLists.txt -if(WIN32) - set(PocoConfigPackageLocation "cmake") -else() - set(PocoConfigPackageLocation "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}") -endif() - -install( - EXPORT "${target_name}Targets" - FILE "${PROJECT_NAME}${target_name}Targets.cmake" - NAMESPACE "${PROJECT_NAME}::" - DESTINATION "${PocoConfigPackageLocation}" -) - -install( - FILES - "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}Config.cmake" - "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}ConfigVersion.cmake" - DESTINATION "${PocoConfigPackageLocation}" - COMPONENT Devel -) + install( + FILES + "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}Config.cmake" + "${CMAKE_BINARY_DIR}/${PROJECT_NAME}/${PROJECT_NAME}${target_name}ConfigVersion.cmake" + DESTINATION "${PocoConfigPackageLocation}" + COMPONENT Devel + ) endmacro() @@ -276,26 +276,41 @@ endmacro() # target_name the name of the target. e.g. Foundation for PocoFoundation # Example: POCO_INSTALL(Foundation) macro(POCO_INSTALL target_name) -install( - DIRECTORY include/Poco - DESTINATION include - COMPONENT Devel - PATTERN ".svn" EXCLUDE -) -install( - TARGETS "${target_name}" EXPORT "${target_name}Targets" - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} - INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} -) + if (${target_name} STREQUAL "Modules") + # Poco C++ Modules require slightly different install commands + install( + TARGETS "${target_name}" EXPORT "${target_name}Targets" + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + FILE_SET CXX_MODULES DESTINATION ${CMAKE_INSTALL_LIBDIR}/Poco/modules + ) + # Custom package generation for C++ modules + include(CMakePackageConfigHelpers) + else() + install( + DIRECTORY include/Poco + DESTINATION include + COMPONENT Devel + ) + install( + TARGETS "${target_name}" EXPORT "${target_name}Targets" + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + BUNDLE DESTINATION ${CMAKE_INSTALL_BINDIR} + INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR} + ) + endif() -if(MSVC) -# install the targets pdb - POCO_INSTALL_PDB(${target_name}) -endif() + + if(MSVC) + # install the targets pdb + POCO_INSTALL_PDB(${target_name}) + endif() endmacro() diff --git a/modules/CMakeLists.txt b/modules/CMakeLists.txt new file mode 100644 index 000000000..64110d718 --- /dev/null +++ b/modules/CMakeLists.txt @@ -0,0 +1,273 @@ +cmake_minimum_required(VERSION 3.28) + +add_library(Modules) +add_library(Poco::Modules ALIAS Modules) + +set(POCO_MODULES + Poco.cppm +) + +if(ENABLE_FOUNDATION) + list(APPEND POCO_MODULES + Poco/Foundation.cppm + Poco/Dynamic.cppm + ) + + target_compile_definitions(Modules PUBLIC ENABLE_FOUNDATION) + + target_link_libraries(Modules PUBLIC Poco::Foundation) + if(ENABLE_ENCODINGS) + target_compile_definitions(Modules PUBLIC ENABLE_ENCODINGS) + + target_link_libraries(Modules PUBLIC Poco::Encodings) + endif() +endif() + +if(ENABLE_ACTIVERECORD) + list(APPEND POCO_MODULES + Poco/ActiveRecord.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_ACTIVERECORD) + + target_link_libraries(Modules PUBLIC Poco::ActiveRecord) +endif() + +if(ENABLE_CRYPTO) + list(APPEND POCO_MODULES + Poco/Crypto.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_CRYPTO) + + target_link_libraries(Modules PUBLIC Poco::Crypto) +endif() + +if(ENABLE_CPPPARSER) + list(APPEND POCO_MODULES + Poco/CppParser.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_CPPPARSER) + + target_link_libraries(Modules PUBLIC Poco::CppParser) +endif() + +if(ENABLE_CPPUNIT) + list(APPEND POCO_MODULES + CppUnit.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_CPPUNIT) + + target_link_libraries(Modules PUBLIC Poco::CppUnit) +endif() + +if(ENABLE_DATA) + list(APPEND POCO_MODULES + Poco/Data.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_DATA) + + target_link_libraries(Modules PUBLIC Poco::Data) + + if(ENABLE_DATA_MYSQL) + list(APPEND POCO_MODULES + Poco/Data/MySQL.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_DATA_MYSQL) + + target_link_libraries(Modules PUBLIC Poco::DataMySQL) + endif() + + if(ENABLE_DATA_ODBC) + list(APPEND POCO_MODULES + Poco/Data/ODBC.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_DATA_ODBC) + + target_link_libraries(Modules PUBLIC Poco::DataODBC) + endif() + + if(ENABLE_DATA_POSTGRESQL) + list(APPEND POCO_MODULES + Poco/Data/PostgreSQL.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_DATA_POSTGRESQL) + + target_link_libraries(Modules PUBLIC Poco::DataPostgreSQL) + endif() + + if(ENABLE_DATA_SQLITE) + list(APPEND POCO_MODULES + Poco/Data/SQLite.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_DATA_SQLITE) + + target_link_libraries(Modules PUBLIC Poco::DataSQLite) + endif() +endif() + +if(ENABLE_DNSSD) + list(APPEND POCO_MODULES + Poco/DNSSD.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_DNSSD) + + target_link_libraries(Modules PUBLIC Poco::DNSSD) + + if(ENABLE_DNSSD_AVAHI) + list(APPEND POCO_MODULES + Poco/DNSSD/Avahi.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_DNSSD_AVAHI) + + target_link_libraries(Modules PUBLIC Poco::DNSSDAvahi) + endif() + + if(ENABLE_DNSSD_BONJOUR) + list(APPEND POCO_MODULES + Poco/DNSSD/Bonjour.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_DNSSD_BONJOUR) + + target_link_libraries(Modules PUBLIC Poco::DNSSDBonjour) + endif() +endif() + +if(ENABLE_JSON) + list(APPEND POCO_MODULES + Poco/JSON.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_JSON) + + target_link_libraries(Modules PUBLIC Poco::JSON) +endif() + +if(ENABLE_JWT) + list(APPEND POCO_MODULES + Poco/JWT.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_JWT) + + target_link_libraries(Modules PUBLIC Poco::JWT) +endif() + +if(ENABLE_MONGODB) + list(APPEND POCO_MODULES + Poco/MongoDB.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_MONGODB) + + target_link_libraries(Modules PUBLIC Poco::MongoDB) +endif() + +if(ENABLE_NET) + list(APPEND POCO_MODULES + Poco/Net.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_NET) + + target_link_libraries(Modules PUBLIC Poco::Net) + + if(ENABLE_NETSSL_OPENSSL) + target_compile_definitions(Modules PUBLIC ENABLE_NETSSL_OPENSSL) + endif() + + if(ENABLE_NETSSL_WIN) + target_compile_definitions(Modules PUBLIC ENABLE_NETSSL_WIN) + endif() +endif() + +if(ENABLE_PDF) + list(APPEND POCO_MODULES + Poco/PDF.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_PDF) + + target_link_libraries(Modules PUBLIC Poco::PDF) +endif() + +if(ENABLE_PROMETHEUS) + list(APPEND POCO_MODULES + Poco/Prometheus.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_PROMETHEUS) + + target_link_libraries(Modules PUBLIC Poco::Prometheus) +endif() + +if(ENABLE_REDIS) + list(APPEND POCO_MODULES + Poco/Redis.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_REDIS) + + target_link_libraries(Modules PUBLIC Poco::Redis) +endif() + +if(ENABLE_SEVENZIP) + list(APPEND POCO_MODULES + Poco/SevenZip.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_SEVENZIP) + + target_link_libraries(Modules PUBLIC Poco::SevenZip) +endif() + +if(ENABLE_UTIL) + list(APPEND POCO_MODULES + Poco/Util.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_UTIL) + + target_link_libraries(Modules PUBLIC Poco::Util) +endif() + +if(ENABLE_XML) + list(APPEND POCO_MODULES + Poco/XML.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_XML) + + target_link_libraries(Modules PUBLIC Poco::XML) +endif() + +if(ENABLE_ZIP) + list(APPEND POCO_MODULES + Poco/Zip.cppm + ) + target_compile_definitions(Modules PUBLIC ENABLE_ZIP) + + target_link_libraries(Modules PUBLIC Poco::Zip) +endif() + +if(NOT COMMAND configure_cpp_module_target) + function(configure_cpp_module_target target) + target_sources(${target} PUBLIC FILE_SET CXX_MODULES FILES ${POCO_MODULES}) + endfunction() +endif() + +configure_cpp_module_target(Modules) + +set_target_properties(Modules + PROPERTIES + VERSION ${SHARED_LIBRARY_VERSION} + SOVERSION ${SHARED_LIBRARY_VERSION} + OUTPUT_NAME Modules + DEFINE_SYMBOL Modules_EXPORTS +) + +target_include_directories(Modules + PUBLIC + $ + $ + PRIVATE + $ + $ +) + +target_compile_features(Modules PUBLIC cxx_std_20) + +POCO_INSTALL(Modules) +POCO_GENERATE_PACKAGE(Modules) + +if(ENABLE_TESTS) + add_subdirectory(samples) +endif() diff --git a/modules/CppUnit.cppm b/modules/CppUnit.cppm new file mode 100644 index 000000000..d1bc9a4ba --- /dev/null +++ b/modules/CppUnit.cppm @@ -0,0 +1,41 @@ +module; + +#ifdef ENABLE_CPPUNIT +#include "CppUnit/CppUnit.h" +#include "CppUnit/CppUnitException.h" +#include "CppUnit/Guards.h" +#include "CppUnit/Orthodox.h" +#include "CppUnit/RepeatedTest.h" +#include "CppUnit/Test.h" +#include "CppUnit/TestCaller.h" +#include "CppUnit/TestCase.h" +#include "CppUnit/TestDecorator.h" +#include "CppUnit/TestFailure.h" +#include "CppUnit/TestResult.h" +#include "CppUnit/TestRunner.h" +#include "CppUnit/TestSetup.h" +#include "CppUnit/TestSuite.h" +#include "CppUnit/TextTestResult.h" +#include "CppUnit/estring.h" +#endif + +export module CppUnit; + +export namespace CppUnit { + #ifdef ENABLE_CPPUNIT + using CppUnit::CppUnitException; + using CppUnit::Orthodox; + using CppUnit::RepeatedTest; + using CppUnit::Test; + using CppUnit::TestCaller; + using CppUnit::TestCase; + using CppUnit::TestDecorator; + using CppUnit::TestFailure; + using CppUnit::TestResult; + using CppUnit::TestRunner; + using CppUnit::TestSetup; + using CppUnit::TestSuite; + using CppUnit::TextTestResult; + using CppUnit::estring; + #endif +} diff --git a/modules/Poco.cppm b/modules/Poco.cppm new file mode 100644 index 000000000..dbab82ff5 --- /dev/null +++ b/modules/Poco.cppm @@ -0,0 +1,67 @@ +// +// Poco.cppm +// +// C++ module file, re-exporting all other modules +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +export module Poco; + +#ifdef ENABLE_FOUNDATION +export import Poco.Foundation; +#endif +#ifdef ENABLE_ACTIVERECORD +export import Poco.ActiveRecord; +#endif +#ifdef ENABLE_CPPPARSER +export import Poco.CppParser; +#endif +#ifdef ENABLE_CRYPTO +export import Poco.Crypto; +#endif +#ifdef ENABLE_DNSSD +export import Poco.DNSSD; +#endif +#ifdef ENABLE_DATA +export import Poco.Data; +#endif +#ifdef ENABLE_DYNAMIC +export import Poco.Dynamic; +#endif +#ifdef ENABLE_JSON +export import Poco.JSON; +#endif +#ifdef ENABLE_JWT +export import Poco.JWT; +#endif +#ifdef ENABLE_MONGODB +export import Poco.MongoDB; +#endif +#ifdef ENABLE_NET +export import Poco.Net; +#endif +#ifdef ENABLE_PDF +export import Poco.PDF; +#endif +#ifdef ENABLE_PROMETHEUS +export import Poco.Prometheus; +#endif +#ifdef ENABLE_REDIS +export import Poco.Redis; +#endif +#ifdef ENABLE_SEVENZIP +export import Poco.SevenZip; +#endif +#ifdef ENABLE_UTIL +export import Poco.Util; +#endif +#ifdef ENABLE_XML +export import Poco.XML; +#endif +#ifdef ENABLE_ZIP +export import Poco.Zip; +#endif diff --git a/modules/Poco/ActiveRecord.cppm b/modules/Poco/ActiveRecord.cppm new file mode 100644 index 000000000..0be591294 --- /dev/null +++ b/modules/Poco/ActiveRecord.cppm @@ -0,0 +1,37 @@ +// +// ActiveRecord.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_ACTIVERECORD +#include "Poco/ActiveRecord/ActiveRecord.h" +#include "Poco/ActiveRecord/ActiveRecordLib.h" +#include "Poco/ActiveRecord/Context.h" +#include "Poco/ActiveRecord/IDTraits.h" +#include "Poco/ActiveRecord/Query.h" +#include "Poco/ActiveRecord/StatementPlaceholderProvider.h" +#endif + +export module Poco.ActiveRecord; + +export namespace Poco::ActiveRecord { + #ifdef ENABLE_ACTIVERECORD + using Poco::ActiveRecord::ActiveRecord; + using Poco::ActiveRecord::ActiveRecordBase; + using Poco::ActiveRecord::Context; + using Poco::ActiveRecord::DefaultStatementPlaceholderProvider; + using Poco::ActiveRecord::IDTraits; + using Poco::ActiveRecord::KeylessActiveRecord; + using Poco::ActiveRecord::PostgresStatementPlaceholderProvider; + using Poco::ActiveRecord::Query; + using Poco::ActiveRecord::StatementPlaceholderProvider; + #endif +} diff --git a/modules/Poco/CppParser.cppm b/modules/Poco/CppParser.cppm new file mode 100644 index 000000000..ee73ebea6 --- /dev/null +++ b/modules/Poco/CppParser.cppm @@ -0,0 +1,65 @@ +// +// CppParser.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_CPPPARSER +#include "Poco/CppParser/Attributes.h" +#include "Poco/CppParser/BuiltIn.h" +#include "Poco/CppParser/CppParser.h" +#include "Poco/CppParser/CppToken.h" +#include "Poco/CppParser/Decl.h" +#include "Poco/CppParser/Enum.h" +#include "Poco/CppParser/EnumValue.h" +#include "Poco/CppParser/Function.h" +#include "Poco/CppParser/NameSpace.h" +#include "Poco/CppParser/Parameter.h" +#include "Poco/CppParser/Parser.h" +#include "Poco/CppParser/Struct.h" +#include "Poco/CppParser/Symbol.h" +#include "Poco/CppParser/Tokenizer.h" +#include "Poco/CppParser/TypeDef.h" +#include "Poco/CppParser/Utility.h" +#include "Poco/CppParser/Variable.h" +#endif + +export module Poco.CppParser; + +export namespace Poco::CppParser { + #ifdef ENABLE_CPPPARSER + using Poco::CppParser::Attributes; + using Poco::CppParser::AttributesParser; + using Poco::CppParser::BuiltIn; + using Poco::CppParser::CharLiteralToken; + using Poco::CppParser::CommentToken; + using Poco::CppParser::CppToken; + using Poco::CppParser::Decl; + using Poco::CppParser::Enum; + using Poco::CppParser::EnumValue; + using Poco::CppParser::Function; + using Poco::CppParser::IdentifierToken; + using Poco::CppParser::NameSpace; + using Poco::CppParser::NumberLiteralToken; + using Poco::CppParser::OperatorToken; + using Poco::CppParser::Parameter; + using Poco::CppParser::Parser; + using Poco::CppParser::PreprocessorToken; + using Poco::CppParser::StringLiteralToken; + using Poco::CppParser::Struct; + using Poco::CppParser::Symbol; + using Poco::CppParser::Tokenizer; + using Poco::CppParser::TypeDef; + using Poco::CppParser::Utility; + using Poco::CppParser::Variable; + + using Poco::CppParser::replace; + #endif +} diff --git a/modules/Poco/Crypto.cppm b/modules/Poco/Crypto.cppm new file mode 100644 index 000000000..4cd22c9c2 --- /dev/null +++ b/modules/Poco/Crypto.cppm @@ -0,0 +1,84 @@ +// +// Crypto.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_CRYPTO +#include "Poco/Crypto/CipherFactory.h" +#include "Poco/Crypto/Cipher.h" +#include "Poco/Crypto/CipherImpl.h" +#include "Poco/Crypto/CipherKey.h" +#include "Poco/Crypto/CipherKeyImpl.h" +#include "Poco/Crypto/CryptoException.h" +#include "Poco/Crypto/Crypto.h" +#include "Poco/Crypto/CryptoStream.h" +#include "Poco/Crypto/CryptoTransform.h" +#include "Poco/Crypto/DigestEngine.h" +#include "Poco/Crypto/ECDSADigestEngine.h" +#include "Poco/Crypto/ECKey.h" +#include "Poco/Crypto/ECKeyImpl.h" +#include "Poco/Crypto/Envelope.h" +#include "Poco/Crypto/EVPCipherImpl.h" +#include "Poco/Crypto/EVPPKey.h" +#include "Poco/Crypto/KeyPair.h" +#include "Poco/Crypto/KeyPairImpl.h" +#include "Poco/Crypto/OpenSSLInitializer.h" +#include "Poco/Crypto/PKCS12Container.h" +#include "Poco/Crypto/RSACipherImpl.h" +#include "Poco/Crypto/RSADigestEngine.h" +#include "Poco/Crypto/RSAKey.h" +#include "Poco/Crypto/RSAKeyImpl.h" +#include "Poco/Crypto/X509Certificate.h" +#endif + +export module Poco.Crypto; + +export namespace Poco::Crypto { + #ifdef ENABLE_CRYPTO + using Poco::Crypto::Cipher; + using Poco::Crypto::CipherFactory; + using Poco::Crypto::CipherKey; + using Poco::Crypto::CipherKeyImpl; + using Poco::Crypto::CryptoException; + using Poco::Crypto::CryptoIOS; + using Poco::Crypto::CipherImpl; + using Poco::Crypto::CryptoInputStream; + using Poco::Crypto::CryptoOutputStream; + using Poco::Crypto::CryptoStreamBuf; + using Poco::Crypto::CryptoTransform; + using Poco::Crypto::DecryptingInputStream; + using Poco::Crypto::DecryptingOutputStream; + using Poco::Crypto::DigestEngine; + using Poco::Crypto::ECDSADigestEngine; + using Poco::Crypto::ECDSASignature; + using Poco::Crypto::ECKey; + using Poco::Crypto::ECKeyImpl; + using Poco::Crypto::EVPCipherImpl; + using Poco::Crypto::EVPPKey; + using Poco::Crypto::EncryptingInputStream; + using Poco::Crypto::EncryptingOutputStream; + using Poco::Crypto::Envelope; + using Poco::Crypto::KeyPair; + using Poco::Crypto::KeyPairImpl; + using Poco::Crypto::OpenSSLException; + using Poco::Crypto::OpenSSLInitializer; + using Poco::Crypto::PKCS12Container; + using Poco::Crypto::RSACipherImpl; + using Poco::Crypto::RSADigestEngine; + using Poco::Crypto::RSAKey; + using Poco::Crypto::RSAKeyImpl; + using Poco::Crypto::X509Certificate; + + using Poco::Crypto::getError; + using Poco::Crypto::initializeCrypto; + using Poco::Crypto::uninitializeCrypto; + #endif +} diff --git a/modules/Poco/DNSSD.cppm b/modules/Poco/DNSSD.cppm new file mode 100644 index 000000000..b970beb77 --- /dev/null +++ b/modules/Poco/DNSSD.cppm @@ -0,0 +1,53 @@ +// +// DNSSD.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_DNSSD +#include "Poco/DNSSD/DNSSD.h" +#include "Poco/DNSSD/DNSSDBrowser.h" +#include "Poco/DNSSD/DNSSDException.h" +#include "Poco/DNSSD/DNSSDResponder.h" +#include "Poco/DNSSD/DNSSDResponderImpl.h" +#include "Poco/DNSSD/Domain.h" +#include "Poco/DNSSD/Error.h" +#include "Poco/DNSSD/Record.h" +#include "Poco/DNSSD/Service.h" +#endif + +export module Poco.DNSSD; + +#ifdef ENABLE_DNSSD_AVAHI +export import :Avahi; +#endif +#ifdef ENABLE_DNSSD_BONJOUR +export import :Bonjour; +#endif + +export namespace Poco::DNSSD { + #ifdef ENABLE_DNSSD + using Poco::DNSSD::DNSSDBrowser; + using Poco::DNSSD::DNSSDException; + using Poco::DNSSD::DNSSDResponder; + using Poco::DNSSD::DNSSDResponderImpl; + using Poco::DNSSD::DNSSDResponderImplFactory; + using Poco::DNSSD::Domain; + using Poco::DNSSD::Error; + using Poco::DNSSD::HandleType; + using Poco::DNSSD::OpaqueHandle; + using Poco::DNSSD::Record; + using Poco::DNSSD::Service; + + using Poco::DNSSD::BrowserHandle; + using Poco::DNSSD::RecordHandle; + using Poco::DNSSD::ServiceHandle; + #endif +} diff --git a/modules/Poco/DNSSD/Avahi.cppm b/modules/Poco/DNSSD/Avahi.cppm new file mode 100644 index 000000000..ea5dbdee0 --- /dev/null +++ b/modules/Poco/DNSSD/Avahi.cppm @@ -0,0 +1,35 @@ +// +// Avahi.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_DNSSD_AVAHI +#include "Poco/DNSSD/Avahi/Avahi.h" +#include "Poco/DNSSD/Avahi/AvahiBrowserImpl.h" +#include "Poco/DNSSD/Avahi/AvahiResponderImpl.h" +#endif + +export module Poco.DNSSD:Avahi; + +export namespace Poco::DNSSD { + #ifdef ENABLE_DNSSD + using Poco::DNSSD::initializeDNSSD; + using Poco::DNSSD::uninitializeDNSSD; + #endif + + namespace Avahi { + #ifdef ENABLE_DNSSD_AVAHI + using Poco::DNSSD::Avahi::AvahiBrowserImpl; + using Poco::DNSSD::Avahi::AvahiResponderImpl; + using Poco::DNSSD::Avahi::AvahiResponderImplFactory; + #endif + } +} diff --git a/modules/Poco/DNSSD/Bonjour.cppm b/modules/Poco/DNSSD/Bonjour.cppm new file mode 100644 index 000000000..457ad8b18 --- /dev/null +++ b/modules/Poco/DNSSD/Bonjour.cppm @@ -0,0 +1,37 @@ +// +// Bonjour.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_DNSSD_BONJOUR +#include "Poco/DNSSD/Bonjour/Bonjour.h" +#include "Poco/DNSSD/Bonjour/BonjourBrowserImpl.h" +#include "Poco/DNSSD/Bonjour/BonjourResponderImpl.h" +#include "Poco/DNSSD/Bonjour/EventLoop.h" +#endif + +export module Poco.DNSSD:Bonjour; + +export namespace Poco::DNSSD { + #ifdef ENABLE_DNSSD + using Poco::DNSSD::initializeDNSSD; + using Poco::DNSSD::uninitializeDNSSD; + #endif + + namespace Bonjour { + #ifdef ENABLE_DNSSD_BONJOUR + using Poco::DNSSD::Bonjour::BonjourBrowserImpl; + using Poco::DNSSD::Bonjour::BonjourResponderImpl; + using Poco::DNSSD::Bonjour::BonjourResponderImplFactory; + using Poco::DNSSD::Bonjour::EventLoop; + #endif + } +} diff --git a/modules/Poco/Data.cppm b/modules/Poco/Data.cppm new file mode 100644 index 000000000..e9210e8ef --- /dev/null +++ b/modules/Poco/Data.cppm @@ -0,0 +1,214 @@ +// +// Data.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_DATA +#include "Poco/Data/AbstractBinder.h" +#include "Poco/Data/AbstractBinding.h" +#include "Poco/Data/AbstractExtraction.h" +#include "Poco/Data/AbstractExtractor.h" +#include "Poco/Data/AbstractPreparation.h" +#include "Poco/Data/AbstractPreparator.h" +#include "Poco/Data/AbstractSessionImpl.h" +#include "Poco/Data/ArchiveStrategy.h" +#include "Poco/Data/AutoTransaction.h" +#include "Poco/Data/Binding.h" +#include "Poco/Data/BulkBinding.h" +#include "Poco/Data/BulkExtraction.h" +#include "Poco/Data/Bulk.h" +#include "Poco/Data/Column.h" +#include "Poco/Data/Connector.h" +#include "Poco/Data/Constants.h" +#include "Poco/Data/DataException.h" +#include "Poco/Data/Data.h" +#include "Poco/Data/Date.h" +#include "Poco/Data/DynamicDateTime.h" +#include "Poco/Data/DynamicLOB.h" +#include "Poco/Data/Extraction.h" +#include "Poco/Data/JSONRowFormatter.h" +#include "Poco/Data/Limit.h" +#include "Poco/Data/LOB.h" +#include "Poco/Data/LOBStream.h" +#include "Poco/Data/MetaColumn.h" +#include "Poco/Data/PooledSessionHolder.h" +#include "Poco/Data/PooledSessionImpl.h" +#include "Poco/Data/Position.h" +#include "Poco/Data/Preparation.h" +#include "Poco/Data/Range.h" +#include "Poco/Data/RecordSet.h" +#include "Poco/Data/RowFilter.h" +#include "Poco/Data/RowFormatter.h" +#include "Poco/Data/Row.h" +#include "Poco/Data/RowIterator.h" +#include "Poco/Data/SessionFactory.h" +#include "Poco/Data/Session.h" +#include "Poco/Data/SessionImpl.h" +#include "Poco/Data/SessionPoolContainer.h" +#include "Poco/Data/SessionPool.h" +#include "Poco/Data/SimpleRowFormatter.h" +#include "Poco/Data/SQLChannel.h" +#include "Poco/Data/StatementCreator.h" +#include "Poco/Data/Statement.h" +#include "Poco/Data/StatementImpl.h" +#include "Poco/Data/Time.h" +#include "Poco/Data/Transaction.h" +#include "Poco/Data/Transcoder.h" +#include "Poco/Data/TypeHandler.h" +#endif + +export module Poco.Data; + +#ifdef ENABLE_DATA_MYSQL +export import :MySQL; +#endif +#ifdef ENABLE_DATA_ODBC +export import :ODBC; +#endif +#ifdef ENABLE_DATA_POSTGRESQL +export import :PostgreSQL; +#endif +#ifdef ENABLE_DATA_SQLITE +export import :SQLite; +#endif + +export namespace Poco::Data { + #ifdef ENABLE_DATA + using Poco::Data::AbstractBinder; + using Poco::Data::AbstractBinding; + using Poco::Data::AbstractExtraction; + using Poco::Data::AbstractExtractor; + using Poco::Data::AbstractPreparation; + using Poco::Data::AbstractPreparator; + using Poco::Data::AbstractTypeHandler; + using Poco::Data::ArchiveByAgeStrategy; + using Poco::Data::ArchiveStrategy; + using Poco::Data::Binding; + using Poco::Data::BindingException; + using Poco::Data::Bulk; + using Poco::Data::BulkBinding; + using Poco::Data::BulkExtraction; + using Poco::Data::Column; + using Poco::Data::ConnectionFailedException; + using Poco::Data::Connector; + using Poco::Data::CopyBinding; + using Poco::Data::DataException; + using Poco::Data::Date; + using Poco::Data::ExecutionException; + using Poco::Data::ExtractException; + using Poco::Data::Extraction; + using Poco::Data::InternalBulkExtraction; + using Poco::Data::InternalExtraction; + using Poco::Data::JSONRowFormatter; + using Poco::Data::LOB; + using Poco::Data::LOBIOS; + using Poco::Data::LOBInputStream; + using Poco::Data::LOBOutputStream; + using Poco::Data::LOBStreamBuf; + using Poco::Data::LengthExceededException; + using Poco::Data::Limit; + using Poco::Data::LimitException; + using Poco::Data::MetaColumn; + using Poco::Data::NoDataException; + using Poco::Data::NotConnectedException; + using Poco::Data::NotSupportedException; + using Poco::Data::PooledSessionHolder; + using Poco::Data::Position; + using Poco::Data::Preparation; + using Poco::Data::Range; + using Poco::Data::RecordSet; + using Poco::Data::Row; + using Poco::Data::RowDataMissingException; + using Poco::Data::RowFilter; + using Poco::Data::RowFormatter; + using Poco::Data::RowIterator; + using Poco::Data::SQLChannel; + using Poco::Data::Session; + using Poco::Data::SessionFactory; + using Poco::Data::SessionPool; + using Poco::Data::SessionPoolContainer; + using Poco::Data::SessionPoolExhaustedException; + using Poco::Data::SessionPoolExistsException; + using Poco::Data::SessionUnavailableException; + using Poco::Data::SimpleRowFormatter; + using Poco::Data::Statement; + using Poco::Data::StatementCreator; + using Poco::Data::Time; + using Poco::Data::Transaction; + using Poco::Data::Transcoder; + using Poco::Data::TypeHandler; + using Poco::Data::UnknownDataBaseException; + using Poco::Data::UnknownTypeException; + + #ifdef POCO_MODULES_EXPORT_IMPL + using Poco::Data::PooledSessionImpl; + using Poco::Data::SessionImpl; + using Poco::Data::StatementImpl; + #endif + + using Poco::Data::BulkFnType; + using Poco::Data::AbstractBindingDeq; + using Poco::Data::AbstractBindingLst; + using Poco::Data::AbstractBindingVec; + using Poco::Data::AbstractExtractionDeq; + using Poco::Data::AbstractExtractionDeqVec; + using Poco::Data::AbstractExtractionLst; + using Poco::Data::AbstractExtractionLst; + using Poco::Data::AbstractExtractionLstVec; + using Poco::Data::AbstractExtractionVec; + using Poco::Data::AbstractExtractionVecVec; + using Poco::Data::AutoTransaction; + using Poco::Data::BLOB; + using Poco::Data::BLOBInputStream; + using Poco::Data::BLOBOutputStream; + using Poco::Data::CLOB; + using Poco::Data::CLOBInputStream; + using Poco::Data::CLOBOutputStream; + using Poco::Data::JSON; + using Poco::Data::NullData; + + using Poco::Data::POCO_DATA_INVALID_ROW; + + using Poco::Data::operator<<; + using Poco::Data::swap; + using Poco::Data::tupleBind; + using Poco::Data::tupleExtract; + using Poco::Data::tuplePrepare; + + namespace Keywords { + using Poco::Data::Keywords::async; + using Poco::Data::Keywords::bind; + using Poco::Data::Keywords::bulk; + using Poco::Data::Keywords::deque; + using Poco::Data::Keywords::format; + using Poco::Data::Keywords::from; + using Poco::Data::Keywords::in; + using Poco::Data::Keywords::into; + using Poco::Data::Keywords::io; + using Poco::Data::Keywords::limit; + using Poco::Data::Keywords::list; + using Poco::Data::Keywords::lowerLimit; + using Poco::Data::Keywords::now; + using Poco::Data::Keywords::out; + using Poco::Data::Keywords::range; + using Poco::Data::Keywords::reset; + using Poco::Data::Keywords::sync; + using Poco::Data::Keywords::upperLimit; + using Poco::Data::Keywords::use; + using Poco::Data::Keywords::useRef; + using Poco::Data::Keywords::vector; + } + + namespace Test { + // using Poco::Data::Test::SQLExecutor; + } + #endif +} diff --git a/modules/Poco/Data/MySQL.cppm b/modules/Poco/Data/MySQL.cppm new file mode 100644 index 000000000..9977c07ce --- /dev/null +++ b/modules/Poco/Data/MySQL.cppm @@ -0,0 +1,46 @@ +// +// MySQL.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_DATA_MYSQL +#include "Poco/Data/MySQL/Binder.h" +#include "Poco/Data/MySQL/Connector.h" +#include "Poco/Data/MySQL/Extractor.h" +#include "Poco/Data/MySQL/MySQLException.h" +#include "Poco/Data/MySQL/MySQL.h" +#include "Poco/Data/MySQL/MySQLStatementImpl.h" +#include "Poco/Data/MySQL/ResultMetadata.h" +#include "Poco/Data/MySQL/SessionHandle.h" +#include "Poco/Data/MySQL/SessionImpl.h" +#include "Poco/Data/MySQL/StatementExecutor.h" +#include "Poco/Data/MySQL/Utility.h" +#endif + +export module Poco.Data:MySQL; + +export namespace Poco::Data::MySQL { + #ifdef ENABLE_DATA_MYSQL + using Poco::Data::MySQL::Binder; + using Poco::Data::MySQL::ConnectionException; + using Poco::Data::MySQL::Connector; + using Poco::Data::MySQL::Extractor; + using Poco::Data::MySQL::MySQLException; + using Poco::Data::MySQL::MySQLStatementImpl; + using Poco::Data::MySQL::ResultMetadata; + using Poco::Data::MySQL::SessionHandle; + using Poco::Data::MySQL::SessionImpl; + using Poco::Data::MySQL::StatementException; + using Poco::Data::MySQL::StatementExecutor; + using Poco::Data::MySQL::TransactionException; + using Poco::Data::MySQL::Utility; + #endif +} diff --git a/modules/Poco/Data/ODBC.cppm b/modules/Poco/Data/ODBC.cppm new file mode 100644 index 000000000..dea37ff3b --- /dev/null +++ b/modules/Poco/Data/ODBC.cppm @@ -0,0 +1,116 @@ +// +// ODBC.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_DATA_ODBC +#include "Poco/Data/ODBC/Binder.h" +#include "Poco/Data/ODBC/ConnectionHandle.h" +#include "Poco/Data/ODBC/Connector.h" +#include "Poco/Data/ODBC/Diagnostics.h" +#include "Poco/Data/ODBC/EnvironmentHandle.h" +#include "Poco/Data/ODBC/Error.h" +#include "Poco/Data/ODBC/Extractor.h" +#include "Poco/Data/ODBC/Handle.h" +#include "Poco/Data/ODBC/ODBCException.h" +#include "Poco/Data/ODBC/ODBC.h" +#include "Poco/Data/ODBC/ODBCMetaColumn.h" +#include "Poco/Data/ODBC/ODBCStatementImpl.h" +#include "Poco/Data/ODBC/Parameter.h" +#include "Poco/Data/ODBC/Preparator.h" +#include "Poco/Data/ODBC/SessionImpl.h" +#include "Poco/Data/ODBC/TypeInfo.h" +#include "Poco/Data/ODBC/Unicode.h" +#include "Poco/Data/ODBC/Unicode_UNIXODBC.h" +#include "Poco/Data/ODBC/Unicode_WIN32.h" +#include "Poco/Data/ODBC/Utility.h" +#endif + +export module Poco.Data:ODBC; + +export namespace Poco::Data::ODBC { + #ifdef ENABLE_DATA_ODBC + using Poco::Data::ODBC::Binder; + using Poco::Data::ODBC::ConnectionHandle; + using Poco::Data::ODBC::Connector; + using Poco::Data::ODBC::DataTruncatedException; + using Poco::Data::ODBC::Diagnostics; + using Poco::Data::ODBC::EnvironmentHandle; + using Poco::Data::ODBC::Error; + using Poco::Data::ODBC::Extractor; + using Poco::Data::ODBC::Handle; + using Poco::Data::ODBC::HandleException; + using Poco::Data::ODBC::InsufficientStorageException; + using Poco::Data::ODBC::ODBCException; + using Poco::Data::ODBC::ODBCMetaColumn; + using Poco::Data::ODBC::ODBCStatementImpl; + using Poco::Data::ODBC::Parameter; + using Poco::Data::ODBC::Preparator; + using Poco::Data::ODBC::SessionImpl; + using Poco::Data::ODBC::TypeInfo; + using Poco::Data::ODBC::UnknownDataLengthException; + using Poco::Data::ODBC::Utility; + + using Poco::Data::ODBC::Connection; + using Poco::Data::ODBC::ConnectionDiagnostics; + using Poco::Data::ODBC::ConnectionError; + using Poco::Data::ODBC::ConnectionException; + using Poco::Data::ODBC::DescriptorDiagnostics; + using Poco::Data::ODBC::DescriptorError; + using Poco::Data::ODBC::DescriptorException; + using Poco::Data::ODBC::EnvironmentDiagnostics; + using Poco::Data::ODBC::EnvironmentError; + using Poco::Data::ODBC::EnvironmentException; + using Poco::Data::ODBC::StatementDiagnostics; + using Poco::Data::ODBC::StatementError; + using Poco::Data::ODBC::StatementException; + + using Poco::Data::ODBC::SQLBrowseConnect; + using Poco::Data::ODBC::SQLColAttribute; + using Poco::Data::ODBC::SQLColAttributes; + using Poco::Data::ODBC::SQLColumnPrivileges; + using Poco::Data::ODBC::SQLColumns; + using Poco::Data::ODBC::SQLConnect; + using Poco::Data::ODBC::SQLDataSources; + using Poco::Data::ODBC::SQLDescribeCol; + using Poco::Data::ODBC::SQLDriverConnect; + using Poco::Data::ODBC::SQLDrivers; + using Poco::Data::ODBC::SQLError; + using Poco::Data::ODBC::SQLExecDirect; + using Poco::Data::ODBC::SQLForeignKeys; + using Poco::Data::ODBC::SQLGetConnectAttr; + using Poco::Data::ODBC::SQLGetConnectOption; + using Poco::Data::ODBC::SQLGetCursorName; + using Poco::Data::ODBC::SQLGetDescField; + using Poco::Data::ODBC::SQLGetDescRec; + using Poco::Data::ODBC::SQLGetDiagField; + using Poco::Data::ODBC::SQLGetDiagRec; + using Poco::Data::ODBC::SQLGetInfo; + using Poco::Data::ODBC::SQLGetStmtAttr; + using Poco::Data::ODBC::SQLGetTypeInfo; + using Poco::Data::ODBC::SQLNativeSql; + using Poco::Data::ODBC::SQLPrepare; + using Poco::Data::ODBC::SQLPrimaryKeys; + using Poco::Data::ODBC::SQLProcedureColumns; + using Poco::Data::ODBC::SQLProcedures; + using Poco::Data::ODBC::SQLSetConnectAttr; + using Poco::Data::ODBC::SQLSetConnectOption; + using Poco::Data::ODBC::SQLSetCursorName; + using Poco::Data::ODBC::SQLSetDescField; + using Poco::Data::ODBC::SQLSetStmtAttr; + using Poco::Data::ODBC::SQLSpecialColumns; + using Poco::Data::ODBC::SQLStatistics; + using Poco::Data::ODBC::SQLTablePrivileges; + using Poco::Data::ODBC::SQLTables; + using Poco::Data::ODBC::isString; + using Poco::Data::ODBC::stringLength; + #endif +} diff --git a/modules/Poco/Data/PostgreSQL.cppm b/modules/Poco/Data/PostgreSQL.cppm new file mode 100644 index 000000000..76887da3f --- /dev/null +++ b/modules/Poco/Data/PostgreSQL.cppm @@ -0,0 +1,59 @@ +// +// PostgreSQL.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_DATA_POSTGRESQL +#include "Poco/Data/PostgreSQL/BinaryExtractor.h" +#include "Poco/Data/PostgreSQL/Binder.h" +#include "Poco/Data/PostgreSQL/Connector.h" +#include "Poco/Data/PostgreSQL/Extractor.h" +#include "Poco/Data/PostgreSQL/PostgreSQL.h" +#include "Poco/Data/PostgreSQL/PostgreSQLException.h" +#include "Poco/Data/PostgreSQL/PostgreSQLStatementImpl.h" +#include "Poco/Data/PostgreSQL/PostgreSQLTypes.h" +#include "Poco/Data/PostgreSQL/SessionHandle.h" +#include "Poco/Data/PostgreSQL/SessionImpl.h" +#include "Poco/Data/PostgreSQL/StatementExecutor.h" +#include "Poco/Data/PostgreSQL/Utility.h" +#endif + +export module Poco.Data:PostgreSQL; + +export namespace Poco::Data::PostgreSQL { + #ifdef ENABLE_DATA_POSTGRESQL + using Poco::Data::PostgreSQL::BinaryExtractor; + using Poco::Data::PostgreSQL::Binder; + using Poco::Data::PostgreSQL::ConnectionException; + using Poco::Data::PostgreSQL::Connector; + using Poco::Data::PostgreSQL::Extractor; + using Poco::Data::PostgreSQL::InputParameter; + using Poco::Data::PostgreSQL::OutputParameter; + using Poco::Data::PostgreSQL::PGCancelFree; + using Poco::Data::PostgreSQL::PQConnectionInfoOptionsFree; + using Poco::Data::PostgreSQL::PQResultClear; + using Poco::Data::PostgreSQL::PostgreSQLException; + using Poco::Data::PostgreSQL::PostgreSQLStatementImpl; + using Poco::Data::PostgreSQL::SessionHandle; + using Poco::Data::PostgreSQL::SessionImpl; + using Poco::Data::PostgreSQL::SessionParameters; + using Poco::Data::PostgreSQL::StatementException; + using Poco::Data::PostgreSQL::StatementExecutor; + using Poco::Data::PostgreSQL::TransactionException; + using Poco::Data::PostgreSQL::Utility; + + using Poco::Data::PostgreSQL::InputParameterVector; + using Poco::Data::PostgreSQL::OutputParameterVector; + using Poco::Data::PostgreSQL::SessionParametersMap; + + using Poco::Data::PostgreSQL::oidToColumnDataType; + #endif +} diff --git a/modules/Poco/Data/SQLite.cppm b/modules/Poco/Data/SQLite.cppm new file mode 100644 index 000000000..4d962b764 --- /dev/null +++ b/modules/Poco/Data/SQLite.cppm @@ -0,0 +1,65 @@ +// +// SQLite.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_DATA_SQLITE +#include "Poco/Data/SQLite/Binder.h" +#include "Poco/Data/SQLite/Connector.h" +#include "Poco/Data/SQLite/Extractor.h" +#include "Poco/Data/SQLite/Notifier.h" +#include "Poco/Data/SQLite/SessionImpl.h" +#include "Poco/Data/SQLite/SQLiteException.h" +#include "Poco/Data/SQLite/SQLite.h" +#include "Poco/Data/SQLite/SQLiteStatementImpl.h" +#include "Poco/Data/SQLite/Utility.h" +#endif + +export module Poco.Data:SQLite; + +export namespace Poco::Data::SQLite { + #ifdef ENABLE_DATA_SQLITE + using Poco::Data::SQLite::AuthorizationDeniedException; + using Poco::Data::SQLite::Binder; + using Poco::Data::SQLite::CantOpenDBFileException; + using Poco::Data::SQLite::Connector; + using Poco::Data::SQLite::ConstraintViolationException; + using Poco::Data::SQLite::CorruptImageException; + using Poco::Data::SQLite::DBAccessDeniedException; + using Poco::Data::SQLite::DBLockedException; + using Poco::Data::SQLite::DataTypeMismatchException; + using Poco::Data::SQLite::DatabaseFullException; + using Poco::Data::SQLite::ExecutionAbortedException; + using Poco::Data::SQLite::Extractor; + using Poco::Data::SQLite::IOErrorException; + using Poco::Data::SQLite::InternalDBErrorException; + using Poco::Data::SQLite::InterruptException; + using Poco::Data::SQLite::InvalidLibraryUseException; + using Poco::Data::SQLite::InvalidSQLStatementException; + using Poco::Data::SQLite::LockProtocolException; + using Poco::Data::SQLite::NoMemoryException; + using Poco::Data::SQLite::Notifier; + using Poco::Data::SQLite::OSFeaturesMissingException; + using Poco::Data::SQLite::ParameterCountMismatchException; + using Poco::Data::SQLite::ReadOnlyException; + using Poco::Data::SQLite::RowTooBigException; + using Poco::Data::SQLite::SQLiteException; + using Poco::Data::SQLite::SQLiteStatementImpl; + using Poco::Data::SQLite::SchemaDiffersException; + using Poco::Data::SQLite::SessionImpl; + using Poco::Data::SQLite::TableLockedException; + using Poco::Data::SQLite::TableNotFoundException; + using Poco::Data::SQLite::TransactionException; + using Poco::Data::SQLite::Utility; + + using Poco::Data::SQLite::TransactionType; + #endif +} \ No newline at end of file diff --git a/modules/Poco/Dynamic.cppm b/modules/Poco/Dynamic.cppm new file mode 100644 index 000000000..922c72d4a --- /dev/null +++ b/modules/Poco/Dynamic.cppm @@ -0,0 +1,64 @@ +// +// Dynamic.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_FOUNDATION +#include "Poco/Dynamic/Pair.h" +#include "Poco/Dynamic/Struct.h" +#include "Poco/Dynamic/Var.h" +#include "Poco/Dynamic/VarHolder.h" +#include "Poco/Dynamic/VarIterator.h" +#include "Poco/Dynamic/VarVisitor.h" +#endif + +export module Poco.Dynamic; + +export namespace Poco::Dynamic { + #ifdef ENABLE_FOUNDATION + using Poco::Dynamic::Pair; + using Poco::Dynamic::Struct; + using Poco::Dynamic::Var; + using Poco::Dynamic::VarHolder; + using Poco::Dynamic::VarHolderImpl; + using Poco::Dynamic::VarIterator; + using Poco::Dynamic::Visitor; + + using Poco::Dynamic::Array; + using Poco::Dynamic::Deque; + using Poco::Dynamic::List; + using Poco::Dynamic::Vector; + + using Poco::Dynamic::operator!=; + using Poco::Dynamic::operator*; + using Poco::Dynamic::operator*=; + using Poco::Dynamic::operator+; + using Poco::Dynamic::operator+=; + using Poco::Dynamic::operator-; + using Poco::Dynamic::operator-=; + using Poco::Dynamic::operator/; + using Poco::Dynamic::operator/=; + using Poco::Dynamic::operator<; + using Poco::Dynamic::operator<=; + using Poco::Dynamic::operator==; + using Poco::Dynamic::operator>; + using Poco::Dynamic::operator>=; + using Poco::Dynamic::structToString; + + namespace Impl { + using Poco::Dynamic::Impl::appendJSONKey; + using Poco::Dynamic::Impl::appendJSONString; + using Poco::Dynamic::Impl::appendJSONValue; + using Poco::Dynamic::Impl::containerToJSON; + using Poco::Dynamic::Impl::isJSONString; + } + #endif +} diff --git a/modules/Poco/Foundation.cppm b/modules/Poco/Foundation.cppm new file mode 100644 index 000000000..e58e1f4a3 --- /dev/null +++ b/modules/Poco/Foundation.cppm @@ -0,0 +1,872 @@ +// +// Foundation.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_FOUNDATION +#include "Poco/AbstractCache.h" +#include "Poco/AbstractDelegate.h" +#include "Poco/AbstractEvent.h" +#include "Poco/AbstractObserver.h" +#include "Poco/AbstractPriorityDelegate.h" +#include "Poco/AbstractStrategy.h" +#include "Poco/AccessExpirationDecorator.h" +#include "Poco/AccessExpireCache.h" +#include "Poco/AccessExpireLRUCache.h" +#include "Poco/AccessExpireStrategy.h" +#include "Poco/ActiveDispatcher.h" +#include "Poco/ActiveMethod.h" +#include "Poco/ActiveResult.h" +#include "Poco/ActiveRunnable.h" +#include "Poco/ActiveStarter.h" +#include "Poco/ActiveThreadPool.h" +#include "Poco/Activity.h" +#include "Poco/Any.h" +#include "Poco/ArchiveStrategy.h" +#include "Poco/Array.h" +#include "Poco/ASCIIEncoding.h" +#include "Poco/Ascii.h" +#include "Poco/AsyncChannel.h" +#include "Poco/AsyncNotificationCenter.h" +#include "Poco/AsyncObserver.h" +#include "Poco/AtomicCounter.h" +#include "Poco/AtomicFlag.h" +#include "Poco/AutoPtr.h" +#include "Poco/AutoReleasePool.h" +#include "Poco/Base32Decoder.h" +#include "Poco/Base32Encoder.h" +#include "Poco/Base64Decoder.h" +#include "Poco/Base64Encoder.h" +#include "Poco/BasicEvent.h" +#include "Poco/BinaryReader.h" +#include "Poco/BinaryWriter.h" +#include "Poco/BufferAllocator.h" +#include "Poco/BufferedBidirectionalStreamBuf.h" +#include "Poco/BufferedStreamBuf.h" +#include "Poco/Buffer.h" +#include "Poco/Bugcheck.h" +#include "Poco/ByteOrder.h" +#include "Poco/Channel.h" +#include "Poco/Checksum.h" +#include "Poco/ClassLoader.h" +#include "Poco/Clock.h" +#include "Poco/Condition.h" +#include "Poco/Configurable.h" +#include "Poco/ConsoleChannel.h" +#include "Poco/CountingStream.h" +#include "Poco/DataURIStreamFactory.h" +#include "Poco/DataURIStream.h" +#include "Poco/DateTimeFormat.h" +#include "Poco/DateTimeFormatter.h" +#include "Poco/DateTime.h" +#include "Poco/DateTimeParser.h" +#include "Poco/Debugger.h" +#include "Poco/DefaultStrategy.h" +#include "Poco/DeflatingStream.h" +#include "Poco/Delegate.h" +#include "Poco/DigestEngine.h" +#include "Poco/DigestStream.h" +#include "Poco/DirectoryIterator.h" +#include "Poco/DirectoryIteratorStrategy.h" +#include "Poco/DirectoryWatcher.h" +#ifdef ENABLE_ENCODINGS +#include "Poco/DoubleByteEncoding.h" +#endif +#include "Poco/DynamicFactory.h" +#ifdef ENABLE_ENCODINGS +#include "Poco/Encodings.h" +#endif +#include "Poco/Environment.h" +#include "Poco/Error.h" +#include "Poco/ErrorHandler.h" +#include "Poco/EventArgs.h" +#include "Poco/EventChannel.h" +#include "Poco/Event.h" +#ifdef _WIN32 +#include "Poco/EventLogChannel.h" +#endif +#include "Poco/Exception.h" +#include "Poco/ExpirationDecorator.h" +#include "Poco/ExpireCache.h" +#include "Poco/Expire.h" +#include "Poco/ExpireLRUCache.h" +#include "Poco/ExpireStrategy.h" +#include "Poco/FIFOBuffer.h" +#include "Poco/FIFOBufferStream.h" +#include "Poco/FIFOEvent.h" +#include "Poco/FIFOStrategy.h" +#include "Poco/FileChannel.h" +#include "Poco/File.h" +#include "Poco/FileStreamFactory.h" +#include "Poco/FileStream.h" +#include "Poco/FileStreamRWLock.h" +#include "Poco/Format.h" +#include "Poco/Formatter.h" +#include "Poco/FormattingChannel.h" +#include "Poco/Foundation.h" +#include "Poco/FPEnvironment.h" +#include "Poco/FunctionDelegate.h" +#include "Poco/FunctionPriorityDelegate.h" +#include "Poco/Glob.h" +#include "Poco/HashFunction.h" +#include "Poco/Hash.h" +#include "Poco/HashMap.h" +#include "Poco/HashSet.h" +#include "Poco/HashStatistic.h" +#include "Poco/HashTable.h" +#include "Poco/HexBinaryDecoder.h" +#include "Poco/HexBinaryEncoder.h" +#include "Poco/HMACEngine.h" +#include "Poco/InflatingStream.h" +#include "Poco/Instantiator.h" +#ifdef ENABLE_ENCODINGS +#include "Poco/ISO8859_10Encoding.h" +#include "Poco/ISO8859_11Encoding.h" +#include "Poco/ISO8859_13Encoding.h" +#include "Poco/ISO8859_14Encoding.h" +#include "Poco/ISO8859_16Encoding.h" +#include "Poco/ISO8859_3Encoding.h" +#include "Poco/ISO8859_4Encoding.h" +#include "Poco/ISO8859_5Encoding.h" +#include "Poco/ISO8859_6Encoding.h" +#include "Poco/ISO8859_7Encoding.h" +#include "Poco/ISO8859_8Encoding.h" +#include "Poco/ISO8859_9Encoding.h" +#endif +#include "Poco/JSONFormatter.h" +#include "Poco/JSONString.h" +#include "Poco/KeyValueArgs.h" +#include "Poco/Latin1Encoding.h" +#include "Poco/Latin2Encoding.h" +#include "Poco/Latin9Encoding.h" +#include "Poco/LinearHashTable.h" +#include "Poco/LineEndingConverter.h" +#include "Poco/ListMap.h" +#include "Poco/LocalDateTime.h" +#include "Poco/LogFile.h" +#include "Poco/Logger.h" +#include "Poco/LoggingFactory.h" +#include "Poco/LoggingRegistry.h" +#include "Poco/LogStream.h" +#include "Poco/LRUCache.h" +#include "Poco/LRUStrategy.h" +#include "Poco/MacCentralEurRomanEncoding.h" +#include "Poco/MacChineseSimpEncoding.h" +#include "Poco/MacChineseTradEncoding.h" +#include "Poco/MacCyrillicEncoding.h" +#include "Poco/MacJapaneseEncoding.h" +#include "Poco/MacKoreanEncoding.h" +#include "Poco/MacRomanEncoding.h" +#include "Poco/Manifest.h" +#include "Poco/MD4Engine.h" +#include "Poco/MD5Engine.h" +#include "Poco/MemoryPool.h" +#include "Poco/MemoryStream.h" +#include "Poco/Message.h" +#include "Poco/MetaObject.h" +#include "Poco/MetaProgramming.h" +#include "Poco/Mutex.h" +#include "Poco/NamedEvent.h" +#include "Poco/NamedMutex.h" +#include "Poco/NamedTuple.h" +#include "Poco/NestedDiagnosticContext.h" +#include "Poco/NObserver.h" +#include "Poco/NotificationCenter.h" +#include "Poco/Notification.h" +#include "Poco/NotificationQueue.h" +#include "Poco/NotificationStrategy.h" +#include "Poco/Nullable.h" +#include "Poco/NullChannel.h" +#include "Poco/NullStream.h" +#include "Poco/NumberFormatter.h" +#include "Poco/NumberParser.h" +#include "Poco/NumericString.h" +#include "Poco/ObjectPool.h" +#include "Poco/Observer.h" +#include "Poco/Optional.h" +#include "Poco/Path.h" +#include "Poco/PatternFormatter.h" +#include "Poco/PBKDF2Engine.h" +#include "Poco/PIDFile.h" +#include "Poco/Pipe.h" +#include "Poco/PipeStream.h" +#include "Poco/PriorityDelegate.h" +#include "Poco/PriorityEvent.h" +#include "Poco/PriorityExpire.h" +#include "Poco/PriorityNotificationQueue.h" +#include "Poco/PriorityStrategy.h" +#include "Poco/Process.h" +#include "Poco/ProcessOptions.h" +#include "Poco/ProcessRunner.h" +#include "Poco/PurgeStrategy.h" +#include "Poco/Random.h" +#include "Poco/RandomStream.h" +#include "Poco/RecursiveDirectoryIterator.h" +#include "Poco/RecursiveDirectoryIteratorImpl.h" +#include "Poco/RefCountedObject.h" +#include "Poco/RegularExpression.h" +#include "Poco/RotateStrategy.h" +#include "Poco/RunnableAdapter.h" +#include "Poco/Runnable.h" +#include "Poco/RWLock.h" +#include "Poco/ScopedLock.h" +#include "Poco/ScopedUnlock.h" +#include "Poco/Semaphore.h" +#include "Poco/SHA1Engine.h" +#include "Poco/SHA2Engine.h" +#include "Poco/SharedLibrary.h" +#include "Poco/SharedMemory.h" +#include "Poco/SharedPtr.h" +#include "Poco/SignalHandler.h" +#include "Poco/SimpleFileChannel.h" +#include "Poco/SimpleHashTable.h" +#include "Poco/SingletonHolder.h" +#include "Poco/SortedDirectoryIterator.h" +#include "Poco/SplitterChannel.h" +#include "Poco/Stopwatch.h" +#include "Poco/StrategyCollection.h" +#include "Poco/StreamChannel.h" +#include "Poco/StreamConverter.h" +#include "Poco/StreamCopier.h" +#include "Poco/StreamTokenizer.h" +#include "Poco/StreamUtil.h" +#include "Poco/String.h" +#include "Poco/StringTokenizer.h" +#include "Poco/SynchronizedObject.h" +#include "Poco/SyslogChannel.h" +#include "Poco/Task.h" +#include "Poco/TaskManager.h" +#include "Poco/TaskNotification.h" +#include "Poco/TeeStream.h" +#include "Poco/TemporaryFile.h" +#include "Poco/TextBufferIterator.h" +#include "Poco/TextConverter.h" +#include "Poco/TextEncoding.h" +#include "Poco/TextIterator.h" +#include "Poco/Thread.h" +#include "Poco/ThreadLocal.h" +#include "Poco/ThreadPool.h" +#include "Poco/ThreadTarget.h" +#include "Poco/TimedNotificationQueue.h" +#include "Poco/Timer.h" +#include "Poco/Timespan.h" +#include "Poco/Timestamp.h" +#include "Poco/Timezone.h" +#include "Poco/Token.h" +#include "Poco/Tuple.h" +#include "Poco/TypeList.h" +#include "Poco/Types.h" +#include "Poco/UnbufferedStreamBuf.h" +#include "Poco/UnicodeConverter.h" +#include "Poco/Unicode.h" +#include "Poco/UniqueAccessExpireCache.h" +#include "Poco/UniqueAccessExpireLRUCache.h" +#include "Poco/UniqueAccessExpireStrategy.h" +#include "Poco/UniqueExpireCache.h" +#include "Poco/UniqueExpireLRUCache.h" +#include "Poco/UniqueExpireStrategy.h" +#include "Poco/URI.h" +#include "Poco/URIStreamFactory.h" +#include "Poco/URIStreamOpener.h" +#include "Poco/UTF16Encoding.h" +#include "Poco/UTF32Encoding.h" +#include "Poco/UTF8Encoding.h" +#include "Poco/UTF8String.h" +#include "Poco/UTFString.h" +#include "Poco/UUIDGenerator.h" +#include "Poco/UUID.h" +#include "Poco/ValidArgs.h" +#include "Poco/Void.h" +#include "Poco/Windows874Encoding.h" +#include "Poco/Windows932Encoding.h" +#include "Poco/Windows936Encoding.h" +#include "Poco/Windows949Encoding.h" +#include "Poco/Windows950Encoding.h" +#include "Poco/Windows1250Encoding.h" +#include "Poco/Windows1251Encoding.h" +#include "Poco/Windows1252Encoding.h" +#include "Poco/Windows1253Encoding.h" +#include "Poco/Windows1254Encoding.h" +#include "Poco/Windows1255Encoding.h" +#include "Poco/Windows1256Encoding.h" +#include "Poco/Windows1257Encoding.h" +#include "Poco/Windows1258Encoding.h" +#ifdef _WIN32 +#include "Poco/WindowsConsoleChannel.h" +#endif +#endif + +export module Poco.Foundation; + +export namespace Poco { + #ifdef ENABLE_FOUNDATION + using Poco::ASCIIEncoding; + using Poco::AbstractCache; + using Poco::AbstractDelegate; + using Poco::AbstractEvent; + using Poco::AbstractInstantiator; + using Poco::AbstractMetaObject; + using Poco::AbstractObserver; + using Poco::AbstractPriorityDelegate; + using Poco::AbstractStrategy; + using Poco::AbstractTimerCallback; + using Poco::AccessExpirationDecorator; + using Poco::AccessExpireCache; + using Poco::AccessExpireLRUCache; + using Poco::AccessExpireStrategy; + using Poco::ActiveDispatcher; + using Poco::ActiveMethod; + using Poco::ActiveResult; + using Poco::ActiveResultHolder; + using Poco::ActiveRunnable; + using Poco::ActiveRunnableBase; + using Poco::ActiveStarter; + using Poco::ActiveThreadPool; + using Poco::Activity; + using Poco::Any; + using Poco::ApplicationException; + using Poco::ArchiveByNumberStrategy; + using Poco::ArchiveByTimestampStrategy; + using Poco::ArchiveStrategy; + using Poco::Array; + using Poco::Ascii; + using Poco::AssertionViolationException; + using Poco::AsyncChannel; + using Poco::AsyncNotificationCenter; + using Poco::AsyncObserver; + using Poco::AtomicCounter; + using Poco::AtomicFlag; + using Poco::AutoPtr; + using Poco::AutoReleasePool; + using Poco::BadCastException; + using Poco::Base32Decoder; + using Poco::Base32DecoderBuf; + using Poco::Base32DecoderIOS; + using Poco::Base32Encoder; + using Poco::Base32EncoderBuf; + using Poco::Base32EncoderIOS; + using Poco::Base64Decoder; + using Poco::Base64DecoderBuf; + using Poco::Base64DecoderIOS; + using Poco::Base64Encoder; + using Poco::Base64EncoderBuf; + using Poco::Base64EncoderIOS; + using Poco::BasicBufferedBidirectionalStreamBuf; + using Poco::BasicBufferedStreamBuf; + using Poco::BasicEvent; + using Poco::BasicFIFOBuffer; + using Poco::BasicMemoryBinaryReader; + using Poco::BasicMemoryBinaryWriter; + using Poco::BasicMemoryStreamBuf; + using Poco::BasicUnbufferedStreamBuf; + using Poco::BinaryReader; + using Poco::BinaryWriter; + using Poco::Buffer; + using Poco::BufferAllocator; + using Poco::Bugcheck; + using Poco::BugcheckException; + using Poco::ByteOrder; + using Poco::CILess; + using Poco::Channel; + using Poco::Checksum; + using Poco::ChildrenFirstTraverse; + using Poco::CircularReferenceException; + using Poco::ClassLoader; + using Poco::Clock; + using Poco::ColorConsoleChannel; + using Poco::Condition; + using Poco::Configurable; + using Poco::ConsoleChannel; + using Poco::CountingIOS; + using Poco::CountingInputStream; + using Poco::CountingOutputStream; + using Poco::CountingStreamBuf; + using Poco::CreateFileException; + using Poco::DataException; + using Poco::DataFormatException; + using Poco::DataURIStream; + using Poco::DataURIStreamFactory; + using Poco::DataURIStreamIOS; + using Poco::DateTime; + using Poco::DateTimeFormat; + using Poco::DateTimeFormatter; + using Poco::DateTimeParser; + using Poco::Debugger; + using Poco::DefaultStrategy; + using Poco::DeflatingIOS; + using Poco::DeflatingInputStream; + using Poco::DeflatingOutputStream; + using Poco::DeflatingStreamBuf; + using Poco::Delegate; + using Poco::DigestBuf; + using Poco::DigestEngine; + using Poco::DigestIOS; + using Poco::DigestInputStream; + using Poco::DigestOutputStream; + using Poco::DirectoryIterator; + using Poco::DirectoryIteratorImpl; + using Poco::DirectoryNotEmptyException; + using Poco::DirectoryWatcher; + using Poco::DoubleByteEncoding; + using Poco::DynamicFactory; + using Poco::EOFToken; + using Poco::Environment; + // using Poco::EnvironmentImpl; + using Poco::Error; + using Poco::ErrorHandler; + using Poco::Event; + using Poco::EventArgs; + using Poco::EventChannel; + #ifdef _WIN32 + using Poco::EventLogChannel; + #endif + using Poco::Exception; + using Poco::ExecuteFileException; + using Poco::ExistsException; + using Poco::ExpirationDecorator; + using Poco::Expire; + using Poco::ExpireCache; + using Poco::ExpireLRUCache; + using Poco::ExpireStrategy; + using Poco::FIFOBufferStream; + using Poco::FIFOBufferStreamBuf; + using Poco::FIFOEvent; + using Poco::FIFOIOS; + using Poco::FIFOStrategy; + using Poco::FPEnvironment; + using Poco::FastMemoryPool; + using Poco::FastMutex; + using Poco::File; + using Poco::FileAccessDeniedException; + using Poco::FileChannel; + using Poco::FileException; + using Poco::FileExistsException; + using Poco::FileIOS; + using Poco::FileImpl; + using Poco::FileInputStream; + using Poco::FileReadOnlyException; + using Poco::FileStream; + using Poco::FileStreamFactory; + using Poco::FileStreamRWLock; + using Poco::Formatter; + using Poco::FormattingChannel; + using Poco::FunctionDelegate; + using Poco::FunctionPriorityDelegate; + using Poco::Getter; + using Poco::Glob; + using Poco::HMACEngine; + using Poco::Hash; + using Poco::HashFunction; + using Poco::HashMap; + using Poco::HashMapEntry; + using Poco::HashMapEntryHash; + using Poco::HashSet; + using Poco::HashStatistic; + using Poco::HashTable; + using Poco::HexBinaryDecoder; + using Poco::HexBinaryDecoderBuf; + using Poco::HexBinaryDecoderIOS; + using Poco::HexBinaryEncoder; + using Poco::HexBinaryEncoderBuf; + using Poco::HexBinaryEncoderIOS; + using Poco::IOException; + using Poco::ISO8859_3Encoding; + using Poco::ISO8859_4Encoding; + using Poco::ISO8859_5Encoding; + using Poco::ISO8859_6Encoding; + using Poco::ISO8859_7Encoding; + using Poco::ISO8859_8Encoding; + using Poco::ISO8859_9Encoding; + using Poco::ISO8859_10Encoding; + using Poco::ISO8859_11Encoding; + using Poco::ISO8859_13Encoding; + using Poco::ISO8859_14Encoding; + using Poco::ISO8859_16Encoding; + using Poco::IllegalStateException; + using Poco::InflatingIOS; + using Poco::InflatingInputStream; + using Poco::InflatingOutputStream; + using Poco::InflatingStreamBuf; + using Poco::InputLineEndingConverter; + using Poco::InputStreamConverter; + using Poco::Instantiator; + using Poco::InvalidAccessException; + using Poco::InvalidArgumentException; + using Poco::InvalidToken; + using Poco::IsConst; + using Poco::IsReference; + using Poco::JSONFormatter; + using Poco::KeyValueArgs; + using Poco::LRUCache; + using Poco::LRUStrategy; + using Poco::Latin1Encoding; + using Poco::Latin2Encoding; + using Poco::Latin9Encoding; + using Poco::LibraryAlreadyLoadedException; + using Poco::LibraryLoadException; + using Poco::LineEnding; + using Poco::LineEndingConverterIOS; + using Poco::LineEndingConverterStreamBuf; + using Poco::LinearHashTable; + using Poco::ListMap; + using Poco::LocalDateTime; + using Poco::LogFile; + using Poco::LogIOS; + using Poco::LogStream; + using Poco::LogStreamBuf; + using Poco::Logger; + using Poco::LoggingFactory; + using Poco::LoggingRegistry; + using Poco::LogicException; + using Poco::MD4Engine; + using Poco::MD5Engine; + using Poco::MacCentralEurRomanEncoding; + using Poco::MacChineseSimpEncoding; + using Poco::MacChineseTradEncoding; + using Poco::MacCyrillicEncoding; + using Poco::MacJapaneseEncoding; + using Poco::MacKoreanEncoding; + using Poco::MacRomanEncoding; + using Poco::Manifest; + using Poco::ManifestBase; + using Poco::MemoryIOS; + using Poco::MemoryInputStream; + using Poco::MemoryOutputStream; + using Poco::MemoryPool; + using Poco::Message; + using Poco::MetaObject; + using Poco::MetaSingleton; + using Poco::Mutex; + using Poco::NDCScope; + using Poco::NObserver; + using Poco::NamedEvent; + using Poco::NamedEventImpl; + using Poco::NamedMutex; + using Poco::NamedMutexImpl; + using Poco::NamedTuple; + using Poco::NestedDiagnosticContext; + using Poco::NoPermissionException; + using Poco::NoThreadAvailableException; + using Poco::NotFoundException; + using Poco::NotImplementedException; + using Poco::Notification; + using Poco::NotificationCenter; + using Poco::NotificationQueue; + using Poco::NotificationStrategy; + using Poco::NullChannel; + using Poco::NullIOS; + using Poco::NullInputStream; + using Poco::NullMutex; + using Poco::NullOutputStream; + using Poco::NullPointerException; + using Poco::NullPurgeStrategy; + using Poco::NullRotateStrategy; + using Poco::NullStreamBuf; + using Poco::NullTypeList; + using Poco::NullValueException; + using Poco::Nullable; + using Poco::NumberFormatter; + using Poco::NumberParser; + using Poco::ObjectPool; + using Poco::Observer; + using Poco::OpenFileException; + using Poco::Optional; + using Poco::OutOfMemoryException; + using Poco::OutputLineEndingConverter; + using Poco::OutputStreamConverter; + using Poco::PBKDF2Engine; + using Poco::PIDFile; + using Poco::Path; + // using Poco::PathImpl; + using Poco::PathNotFoundException; + using Poco::PathSyntaxException; + using Poco::PatternFormatter; + using Poco::Pipe; + using Poco::PipeIOS; + using Poco::PipeInputStream; + using Poco::PipeOutputStream; + using Poco::PipeStreamBuf; + using Poco::Placeholder; + using Poco::PoolOverflowException; + using Poco::PoolableObjectFactory; + using Poco::PriorityDelegate; + using Poco::PriorityEvent; + using Poco::PriorityExpire; + using Poco::PriorityNotificationQueue; + using Poco::PriorityStrategy; + using Poco::Process; + using Poco::ProcessHandle; + using Poco::ProcessHandleImpl; + using Poco::ProcessImpl; + using Poco::ProcessRunner; + using Poco::PropertyNotSupportedException; + using Poco::ProtocolException; + using Poco::PurgeByAgeStrategy; + using Poco::PurgeByCountStrategy; + using Poco::PurgeStrategy; + using Poco::RWLock; + using Poco::Random; + using Poco::RandomBuf; + using Poco::RandomIOS; + using Poco::RandomInputStream; + using Poco::RangeException; + using Poco::ReadFileException; + using Poco::RecursiveDirectoryIterator; + using Poco::RecursiveDirectoryIteratorImpl; + using Poco::RefCountedObject; + using Poco::ReferenceCounter; + using Poco::RegularExpression; + using Poco::RegularExpressionException; + using Poco::ReleaseArrayPolicy; + using Poco::ReleasePolicy; + using Poco::ResourceLimitException; + using Poco::RotateAtTimeStrategy; + using Poco::RotateByIntervalStrategy;; + using Poco::RotateBySizeStrategy; + using Poco::RotateStrategy; + using Poco::Runnable; + using Poco::RunnableAdapter; + using Poco::RuntimeException; + using Poco::SHA1Engine; + using Poco::SHA2Engine; + using Poco::SHA2Engine224; + using Poco::SHA2Engine256; + using Poco::SHA2Engine384; + using Poco::SHA2Engine512; + using Poco::ScopedFStreamRWLock; + using Poco::ScopedFStreamReadRWLock; + using Poco::ScopedFStreamWriteRWLock; + using Poco::ScopedLock; + using Poco::ScopedLockWithUnlock; + using Poco::ScopedRWLock; + using Poco::ScopedReadRWLock; + using Poco::ScopedUnlock; + using Poco::ScopedWriteRWLock; + using Poco::Semaphore; + using Poco::SharedLibrary; + using Poco::SharedLibraryImpl; + using Poco::SharedMemory; + using Poco::SharedPtr; + using Poco::SiblingsFirstTraverse; + using Poco::SignalException; + using Poco::SignalHandler; + using Poco::SimpleFileChannel; + using Poco::SimpleHashTable; + using Poco::SingletonHolder; + using Poco::SortedDirectoryIterator; + using Poco::SpinlockMutex; + using Poco::SplitterChannel; + using Poco::Stopwatch; + using Poco::StrategyCollection; + using Poco::StreamChannel; + using Poco::StreamConverterBuf; + using Poco::StreamConverterIOS; + using Poco::StreamCopier; + using Poco::StreamTokenizer; + using Poco::StringTokenizer; + using Poco::SynchronizedObject; + using Poco::SyntaxException; + using Poco::SyslogChannel; + using Poco::SystemException; + using Poco::TLSAbstractSlot; + using Poco::TLSSlot; + using Poco::Task; + using Poco::TaskCancelledNotification; + using Poco::TaskCustomNotification; + using Poco::TaskFailedNotification; + using Poco::TaskFinishedNotification; + using Poco::TaskManager; + using Poco::TaskNotification; + using Poco::TaskProgressNotification; + using Poco::TaskStartedNotification; + using Poco::TeeIOS; + using Poco::TeeInputStream; + using Poco::TeeOutputStream; + using Poco::TeeStreamBuf; + using Poco::TemporaryFile; + using Poco::TextBufferIterator; + using Poco::TextConverter; + using Poco::TextEncoding; + using Poco::TextIterator; + using Poco::Thread; + using Poco::ThreadLocal; + using Poco::ThreadLocalStorage; + using Poco::ThreadPool; + using Poco::ThreadTarget; + using Poco::TimedNotificationQueue; + using Poco::TimeoutException; + using Poco::Timer; + using Poco::TimerCallback; + using Poco::Timespan; + using Poco::Timestamp; + using Poco::Timezone; + using Poco::Token; + using Poco::TooManyURIRedirectsException; + using Poco::TraverseBase; + using Poco::Tuple; + using Poco::TypeList; + using Poco::TypeListType; + using Poco::TypeWrapper; + using Poco::URI; + using Poco::URIRedirection; + using Poco::URIStreamFactory; + using Poco::URIStreamOpener; + using Poco::URISyntaxException; + using Poco::UTF8; + using Poco::UTF8Encoding; + using Poco::UTF16CharTraits; + using Poco::UTF16Encoding; + using Poco::UTF32CharTraits; + using Poco::UTF32Encoding; + using Poco::UUID; + using Poco::UUIDGenerator; + using Poco::UnhandledException; + using Poco::Unicode; + using Poco::UnicodeConverter; + using Poco::UniqueAccessExpireCache; + using Poco::UniqueAccessExpireLRUCache; + using Poco::UniqueAccessExpireStrategy; + using Poco::UniqueExpireCache; + using Poco::UniqueExpireLRUCache; + using Poco::UniqueExpireStrategy; + using Poco::UnknownURISchemeException; + using Poco::ValidArgs; + using Poco::Void; + using Poco::WhitespaceToken; + using Poco::Windows874Encoding; + using Poco::Windows932Encoding; + using Poco::Windows936Encoding; + using Poco::Windows949Encoding; + using Poco::Windows950Encoding; + using Poco::Windows1250Encoding; + using Poco::Windows1251Encoding; + using Poco::Windows1252Encoding; + using Poco::Windows1253Encoding; + using Poco::Windows1254Encoding; + using Poco::Windows1256Encoding; + #ifdef _WIN32 + using Poco::WindowsColorConsoleChannel; + using Poco::WindowsConsoleChannel; + #endif + using Poco::WriteFileException; + using Poco::i_char_traits; + + using Poco::FIFOBuffer; + using Poco::FPE; + using Poco::MemoryBinaryReader; + using Poco::MemoryBinaryWriter; + using Poco::MemoryStreamBuf; + using Poco::NDC; + using Poco::SiblingsFirstRecursiveDirectoryIterator; + using Poco::SimpleRecursiveDirectoryIterator; + using Poco::UTF16Char; + using Poco::UTF16String; + using Poco::UTF32Char; + using Poco::UTF32String; + using Poco::istring; + + using Poco::BasicBufferedBidirectionalStreamBuf; + using Poco::BufferedStreamBuf; + using Poco::DynamicAny; + // using Poco::DynamicStruct; + using Poco::Int8; + using Poco::Int16; + using Poco::Int32; + using Poco::Int64; + using Poco::IntPtr; + using Poco::LineNumber; + using Poco::NullType; + // using Poco::OrderedDynamicStruct; + using Poco::UInt8; + using Poco::UInt16; + using Poco::UInt32; + using Poco::UInt64; + using Poco::UIntPtr; + using Poco::UnbufferedStreamBuf; + + using Poco::AnyCast; + using Poco::AnyHoldsNullPtr; + using Poco::RefAnyCast; + using Poco::UnsafeAnyCast; + using Poco::cat; + using Poco::cstrlen; + using Poco::decimalSeparator; + using Poco::delegate; + using Poco::demangle; + using Poco::doubleToFixedStr; + using Poco::doubleToStr; + using Poco::endsWith; + using Poco::floatToFixedStr; + using Poco::floatToStr; + using Poco::format; + using Poco::formatAny; + using Poco::hash; + using Poco::hashCombine; + using Poco::hashRange; + using Poco::icompare; + using Poco::intToStr; + using Poco::isIntOverflow; + using Poco::isNegative; + using Poco::isSafeIntCast; + using Poco::isubstr; + using Poco::makeAuto; + using Poco::makeShared; + using Poco::makeSharedArray; + using Poco::operator!=; + using Poco::operator&; + using Poco::operator&=; + using Poco::operator<; + using Poco::operator<<; + using Poco::operator<=; + using Poco::operator==; + using Poco::operator>; + using Poco::operator>=; + using Poco::operator|; + using Poco::operator|=; + // using Poco::priorityDelegate; + using Poco::registerExtraEncodings; + using Poco::remove; + using Poco::removeInPlace; + using Poco::replace; + using Poco::replaceInPlace; + using Poco::safeIntCast; + using Poco::safeMultiply; + using Poco::secureClear; + using Poco::startsWith; + using Poco::strToDouble; + using Poco::strToFloat; + using Poco::strToInt; + using Poco::swap; + using Poco::thousandSeparator; + using Poco::toJSON; + using Poco::toLower; + using Poco::toLowerInPlace; + using Poco::toUpper; + using Poco::toUpperInPlace; + using Poco::translate; + using Poco::translateInPlace; + using Poco::trim; + using Poco::trimInPlace; + using Poco::trimLeft; + using Poco::trimLeftInPlace; + using Poco::trimRight; + using Poco::trimRightInPlace; + using Poco::uIntToStr; + + namespace Impl { + using Poco::Impl::EnableSigned; + using Poco::Impl::EnableUnsigned; + using Poco::Impl::IsNegativeImpl; + using Poco::Impl::Ptr; + using Poco::Impl::hashCombine; + } + #endif +} diff --git a/modules/Poco/JSON.cppm b/modules/Poco/JSON.cppm new file mode 100644 index 000000000..6cbc241cc --- /dev/null +++ b/modules/Poco/JSON.cppm @@ -0,0 +1,48 @@ +// +// JSON.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_JSON +#include "Poco/JSON/Array.h" +#include "Poco/JSON/Handler.h" +#include "Poco/JSON/JSONException.h" +#include "Poco/JSON/JSON.h" +#include "Poco/JSON/Object.h" +#include "Poco/JSON/ParseHandler.h" +#include "Poco/JSON/Parser.h" +#include "Poco/JSON/ParserImpl.h" +#include "Poco/JSON/PrintHandler.h" +#include "Poco/JSON/Query.h" +#include "Poco/JSON/Stringifier.h" +#include "Poco/JSON/TemplateCache.h" +#include "Poco/JSON/Template.h" +#endif + +export module Poco.JSON; + +export namespace Poco::JSON { + #ifdef ENABLE_JSON + using Poco::JSON::Array; + using Poco::JSON::Handler; + using Poco::JSON::JSONException; + using Poco::JSON::JSONTemplateException; + using Poco::JSON::Object; + using Poco::JSON::ParseHandler; + using Poco::JSON::Parser; + using Poco::JSON::ParserImpl; + using Poco::JSON::PrintHandler; + using Poco::JSON::Query; + using Poco::JSON::Stringifier; + using Poco::JSON::Template; + using Poco::JSON::TemplateCache; + #endif +} diff --git a/modules/Poco/JWT.cppm b/modules/Poco/JWT.cppm new file mode 100644 index 000000000..55cffafe4 --- /dev/null +++ b/modules/Poco/JWT.cppm @@ -0,0 +1,37 @@ +// +// JWT.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_JWT +#include "Poco/JWT/JWTException.h" +#include "Poco/JWT/JWT.h" +#include "Poco/JWT/Serializer.h" +#include "Poco/JWT/Signer.h" +#include "Poco/JWT/Token.h" +#endif + +export module Poco.JWT; + +export namespace Poco::JWT { + #ifdef ENABLE_JWT + using Poco::JWT::JWTException; + using Poco::JWT::ParseException; + using Poco::JWT::Serializer; + using Poco::JWT::SignatureException; + using Poco::JWT::SignatureGenerationException; + using Poco::JWT::SignatureVerificationException; + using Poco::JWT::Signer; + using Poco::JWT::Token; + using Poco::JWT::UnallowedAlgorithmException; + using Poco::JWT::UnsupportedAlgorithmException; + #endif +} diff --git a/modules/Poco/MongoDB.cppm b/modules/Poco/MongoDB.cppm new file mode 100644 index 000000000..0cc7c4f8e --- /dev/null +++ b/modules/Poco/MongoDB.cppm @@ -0,0 +1,82 @@ +// +// MongoDB.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_MONGODB +#include "Poco/MongoDB/Array.h" +#include "Poco/MongoDB/Binary.h" +#include "Poco/MongoDB/BSONReader.h" +#include "Poco/MongoDB/BSONWriter.h" +#include "Poco/MongoDB/Connection.h" +#include "Poco/MongoDB/Cursor.h" +#include "Poco/MongoDB/Database.h" +#include "Poco/MongoDB/DeleteRequest.h" +#include "Poco/MongoDB/Document.h" +#include "Poco/MongoDB/Element.h" +#include "Poco/MongoDB/GetMoreRequest.h" +#include "Poco/MongoDB/InsertRequest.h" +#include "Poco/MongoDB/JavaScriptCode.h" +#include "Poco/MongoDB/KillCursorsRequest.h" +#include "Poco/MongoDB/Message.h" +#include "Poco/MongoDB/MessageHeader.h" +#include "Poco/MongoDB/MongoDB.h" +#include "Poco/MongoDB/ObjectId.h" +#include "Poco/MongoDB/OpMsgCursor.h" +#include "Poco/MongoDB/OpMsgMessage.h" +#include "Poco/MongoDB/PoolableConnectionFactory.h" +#include "Poco/MongoDB/QueryRequest.h" +#include "Poco/MongoDB/RegularExpression.h" +#include "Poco/MongoDB/ReplicaSet.h" +#include "Poco/MongoDB/RequestMessage.h" +#include "Poco/MongoDB/ResponseMessage.h" +#include "Poco/MongoDB/UpdateRequest.h" +#endif + +export module Poco.MongoDB; + +export namespace Poco::MongoDB { + #ifdef ENABLE_MONGODB + using Poco::MongoDB::Array; + using Poco::MongoDB::BSONReader; + using Poco::MongoDB::BSONTimestamp; + using Poco::MongoDB::BSONWriter; + using Poco::MongoDB::Binary; + using Poco::MongoDB::ConcreteElement; + using Poco::MongoDB::Connection; + using Poco::MongoDB::Cursor; + using Poco::MongoDB::Database; + using Poco::MongoDB::DeleteRequest; + using Poco::MongoDB::Document; + using Poco::MongoDB::Element; + using Poco::MongoDB::ElementFindByName; + using Poco::MongoDB::ElementTraits; + using Poco::MongoDB::GetMoreRequest; + using Poco::MongoDB::InsertRequest; + using Poco::MongoDB::JavaScriptCode; + using Poco::MongoDB::KillCursorsRequest; + using Poco::MongoDB::Message; + using Poco::MongoDB::MessageHeader; + using Poco::MongoDB::ObjectId; + using Poco::MongoDB::OpMsgCursor; + using Poco::MongoDB::OpMsgMessage; + using Poco::MongoDB::PooledConnection; + using Poco::MongoDB::QueryRequest; + using Poco::MongoDB::RegularExpression; + using Poco::MongoDB::ReplicaSet; + using Poco::MongoDB::RequestMessage; + using Poco::MongoDB::ResponseMessage; + using Poco::MongoDB::UpdateRequest; + + using Poco::MongoDB::ElementSet; + using Poco::MongoDB::NullValue; + #endif +} diff --git a/modules/Poco/Net.cppm b/modules/Poco/Net.cppm new file mode 100644 index 000000000..470f89b4f --- /dev/null +++ b/modules/Poco/Net.cppm @@ -0,0 +1,481 @@ +// +// Net.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_NET +#include "Poco/Net/AbstractHTTPRequestHandler.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/AcceptCertificateHandler.h" +#ifdef ENABLE_NETSSL_WIN +#include "Poco/Net/AutoSecBufferDesc.h" +#endif +#include "Poco/Net/CertificateHandlerFactory.h" +#include "Poco/Net/CertificateHandlerFactoryMgr.h" +#include "Poco/Net/ConsoleCertificateHandler.h" +#include "Poco/Net/Context.h" +#endif +#include "Poco/Net/DatagramSocket.h" +#include "Poco/Net/DatagramSocketImpl.h" +#include "Poco/Net/DialogSocket.h" +#include "Poco/Net/DNS.h" +#include "Poco/Net/EscapeHTMLStream.h" +#include "Poco/Net/FilePartSource.h" +#include "Poco/Net/FTPClientSession.h" +#ifdef ENABLE_SSL_OPENSSL +#include "Poco/Net/FTPSClientSession.h" +#include "Poco/Net/FTPSStreamFactory.h" +#endif +#include "Poco/Net/FTPStreamFactory.h" +#include "Poco/Net/HostEntry.h" +#include "Poco/Net/HTMLForm.h" +#include "Poco/Net/HTTPAuthenticationParams.h" +#include "Poco/Net/HTTPBasicCredentials.h" +#include "Poco/Net/HTTPBasicStreamBuf.h" +#include "Poco/Net/HTTPBufferAllocator.h" +#include "Poco/Net/HTTPChunkedStream.h" +#include "Poco/Net/HTTPClientSession.h" +#include "Poco/Net/HTTPCookie.h" +#include "Poco/Net/HTTPCredentials.h" +#include "Poco/Net/HTTPDigestCredentials.h" +#include "Poco/Net/HTTPFixedLengthStream.h" +#include "Poco/Net/HTTPHeaderStream.h" +#include "Poco/Net/HTTPIOStream.h" +#include "Poco/Net/HTTPMessage.h" +#include "Poco/Net/HTTPNTLMCredentials.h" +#include "Poco/Net/HTTPRequest.h" +#include "Poco/Net/HTTPRequestHandlerFactory.h" +#include "Poco/Net/HTTPRequestHandler.h" +#include "Poco/Net/HTTPResponse.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/HTTPSClientSession.h" +#endif +#include "Poco/Net/HTTPServerConnectionFactory.h" +#include "Poco/Net/HTTPServerConnection.h" +#include "Poco/Net/HTTPServer.h" +#include "Poco/Net/HTTPServerParams.h" +#include "Poco/Net/HTTPServerRequest.h" +#include "Poco/Net/HTTPServerRequestImpl.h" +#include "Poco/Net/HTTPServerResponse.h" +#include "Poco/Net/HTTPServerResponseImpl.h" +#include "Poco/Net/HTTPServerSession.h" +#include "Poco/Net/HTTPSessionFactory.h" +#include "Poco/Net/HTTPSession.h" +#include "Poco/Net/HTTPSessionInstantiator.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/HTTPSSessionInstantiator.h" +#include "Poco/Net/HTTPSStreamFactory.h" +#endif +#include "Poco/Net/HTTPStreamFactory.h" +#include "Poco/Net/HTTPStream.h" +#include "Poco/Net/ICMPClient.h" +#include "Poco/Net/ICMPEventArgs.h" +#include "Poco/Net/ICMPPacket.h" +#include "Poco/Net/ICMPPacketImpl.h" +#include "Poco/Net/ICMPSocket.h" +#include "Poco/Net/ICMPSocketImpl.h" +#include "Poco/Net/ICMPv4PacketImpl.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/InvalidCertificateHandler.h" +#endif +#include "Poco/Net/IPAddress.h" +#include "Poco/Net/IPAddressImpl.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/KeyConsoleHandler.h" +#include "Poco/Net/KeyFileHandler.h" +#endif +#include "Poco/Net/MailMessage.h" +#include "Poco/Net/MailRecipient.h" +#include "Poco/Net/MailStream.h" +#include "Poco/Net/MediaType.h" +#include "Poco/Net/MessageHeader.h" +#include "Poco/Net/MulticastSocket.h" +#include "Poco/Net/MultipartReader.h" +#include "Poco/Net/MultipartWriter.h" +#include "Poco/Net/MultiSocketPoller.h" +#include "Poco/Net/NameValueCollection.h" +#include "Poco/Net/NetException.h" +#include "Poco/Net/Net.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/NetSSL.h" +#endif +#include "Poco/Net/NetworkInterface.h" +#include "Poco/Net/NTLMCredentials.h" +#include "Poco/Net/NTPClient.h" +#include "Poco/Net/NTPEventArgs.h" +#include "Poco/Net/NTPPacket.h" +#include "Poco/Net/NullPartHandler.h" +#include "Poco/Net/OAuth10Credentials.h" +#include "Poco/Net/OAuth20Credentials.h" +#include "Poco/Net/ParallelSocketAcceptor.h" +#include "Poco/Net/ParallelSocketReactor.h" +#include "Poco/Net/PartHandler.h" +#include "Poco/Net/PartSource.h" +#include "Poco/Net/PartStore.h" +#include "Poco/Net/PollSet.h" +#include "Poco/Net/POP3ClientSession.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/PrivateKeyFactory.h" +#include "Poco/Net/PrivateKeyFactoryMgr.h" +#include "Poco/Net/PrivateKeyPassphraseHandler.h" +#endif +#include "Poco/Net/QuotedPrintableDecoder.h" +#include "Poco/Net/QuotedPrintableEncoder.h" +#include "Poco/Net/RawSocket.h" +#include "Poco/Net/RawSocketImpl.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/RejectCertificateHandler.h" +#endif +#include "Poco/Net/RemoteSyslogChannel.h" +#include "Poco/Net/RemoteSyslogListener.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/SecureServerSocket.h" +#include "Poco/Net/SecureServerSocketImpl.h" +#include "Poco/Net/SecureSMTPClientSession.h" +#include "Poco/Net/SecureSocketImpl.h" +#include "Poco/Net/SecureStreamSocket.h" +#include "Poco/Net/SecureStreamSocketImpl.h" +#endif +#include "Poco/Net/ServerSocket.h" +#include "Poco/Net/ServerSocketImpl.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/Session.h" +#endif +#include "Poco/Net/SingleSocketPoller.h" +#include "Poco/Net/SMTPChannel.h" +#include "Poco/Net/SMTPClientSession.h" +#include "Poco/Net/SocketAcceptor.h" +#include "Poco/Net/SocketAddress.h" +#include "Poco/Net/SocketAddressImpl.h" +#include "Poco/Net/SocketConnector.h" +#include "Poco/Net/SocketDefs.h" +#include "Poco/Net/Socket.h" +#include "Poco/Net/SocketImpl.h" +#include "Poco/Net/SocketNotification.h" +#include "Poco/Net/SocketNotifier.h" +#include "Poco/Net/SocketProactor.h" +#include "Poco/Net/SocketReactor.h" +#include "Poco/Net/SocketStream.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/SSLException.h" +#include "Poco/Net/SSLManager.h" +#endif +#include "Poco/Net/SSPINTLMCredentials.h" +#include "Poco/Net/StreamSocket.h" +#include "Poco/Net/StreamSocketImpl.h" +#include "Poco/Net/StringPartSource.h" +#include "Poco/Net/TCPServerConnectionFactory.h" +#include "Poco/Net/TCPServerConnection.h" +#include "Poco/Net/TCPServerDispatcher.h" +#include "Poco/Net/TCPServer.h" +#include "Poco/Net/TCPServerParams.h" +#include "Poco/Net/UDPClient.h" +#include "Poco/Net/UDPHandler.h" +#include "Poco/Net/UDPServer.h" +#include "Poco/Net/UDPServerParams.h" +#include "Poco/Net/UDPSocketReader.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/Utility.h" +#include "Poco/Net/VerificationErrorArgs.h" +#endif +#include "Poco/Net/WebSocket.h" +#include "Poco/Net/WebSocketImpl.h" +#if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) +#include "Poco/Net/X509Certificate.h" +#endif +#endif + +export module Poco.Net; + +export namespace Poco::Net { + #ifdef ENABLE_NET + using Poco::Net::AbstractHTTPRequestHandler; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::AcceptCertificateHandler; + #endif + using Poco::Net::AddressFamily; + using Poco::Net::AddressFamilyMismatchException; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + #ifdef ENABLE_NETSSL_WIN + using Poco::Net::AutoSecBufferDesc; + #endif + using Poco::Net::CertificateHandlerFactory; + using Poco::Net::CertificateHandlerFactoryImpl; + using Poco::Net::CertificateHandlerFactoryMgr; + using Poco::Net::CertificateHandlerFactoryRegistrar; + using Poco::Net::CertificateValidationException; + #endif + using Poco::Net::ConnectionAbortedException; + using Poco::Net::ConnectionRefusedException; + using Poco::Net::ConnectionResetException; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::ConsoleCertificateHandler; + using Poco::Net::Context; + #endif + using Poco::Net::DNS; + using Poco::Net::DNSException; + using Poco::Net::DatagramSocket; + using Poco::Net::DatagramSocketImpl; + using Poco::Net::DialogSocket; + using Poco::Net::ErrorNotification; + using Poco::Net::EscapeHTMLIOS; + using Poco::Net::EscapeHTMLOutputStream; + using Poco::Net::EscapeHTMLStreamBuf; + using Poco::Net::FTPClientSession; + using Poco::Net::FTPException; + using Poco::Net::FTPPasswordProvider; + #ifdef ENABLE_NETSSL_OPENSSL + using Poco::Net::FTPSClientSession; + using Poco::Net::FTPSStreamFactory; + #endif + using Poco::Net::FTPStreamFactory; + using Poco::Net::FilePartSource; + using Poco::Net::FilePartStore; + using Poco::Net::FilePartStoreFactory; + using Poco::Net::HTMLForm; + using Poco::Net::HTMLFormException; + using Poco::Net::HTTPAuthenticationParams; + using Poco::Net::HTTPBasicCredentials; + using Poco::Net::HTTPBufferAllocator; + using Poco::Net::HTTPChunkedIOS; + using Poco::Net::HTTPChunkedInputStream; + using Poco::Net::HTTPChunkedOutputStream; + using Poco::Net::HTTPChunkedStreamBuf; + using Poco::Net::HTTPClientSession; + using Poco::Net::HTTPCookie; + using Poco::Net::HTTPCredentials; + using Poco::Net::HTTPDigestCredentials; + using Poco::Net::HTTPException; + using Poco::Net::HTTPFixedLengthIOS; + using Poco::Net::HTTPFixedLengthInputStream; + using Poco::Net::HTTPFixedLengthOutputStream; + using Poco::Net::HTTPFixedLengthStreamBuf; + using Poco::Net::HTTPHeaderIOS; + using Poco::Net::HTTPHeaderInputStream; + using Poco::Net::HTTPHeaderOutputStream; + using Poco::Net::HTTPHeaderStreamBuf; + using Poco::Net::HTTPIOS; + using Poco::Net::HTTPInputStream; + using Poco::Net::HTTPMessage; + using Poco::Net::HTTPNTLMCredentials; + using Poco::Net::HTTPOutputStream; + using Poco::Net::HTTPRequest; + using Poco::Net::HTTPRequestHandler; + using Poco::Net::HTTPRequestHandlerFactory; + using Poco::Net::HTTPResponse; + using Poco::Net::HTTPResponseIOS; + using Poco::Net::HTTPResponseStream; + using Poco::Net::HTTPResponseStreamBuf; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::HTTPSClientSession; + using Poco::Net::HTTPSSessionInstantiator; + using Poco::Net::HTTPSStreamFactory; + #endif + using Poco::Net::HTTPServer; + using Poco::Net::HTTPServerConnection; + using Poco::Net::HTTPServerConnectionFactory; + using Poco::Net::HTTPServerParams; + using Poco::Net::HTTPServerRequest; + using Poco::Net::HTTPServerRequestImpl; + using Poco::Net::HTTPServerResponse; + using Poco::Net::HTTPServerResponseImpl; + using Poco::Net::HTTPServerSession; + using Poco::Net::HTTPSession; + using Poco::Net::HTTPSessionFactory; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::HTTPSSessionInstantiator; + #endif + using Poco::Net::HTTPStreamBuf; + using Poco::Net::HTTPStreamFactory; + using Poco::Net::HostEntry; + using Poco::Net::HostNotFoundException; + using Poco::Net::ICMPClient; + using Poco::Net::ICMPEventArgs; + using Poco::Net::ICMPException; + using Poco::Net::ICMPFragmentationException; + using Poco::Net::ICMPPacket; + using Poco::Net::ICMPPacketImpl; + using Poco::Net::ICMPSocket; + using Poco::Net::ICMPSocketImpl; + using Poco::Net::ICMPv4PacketImpl; + using Poco::Net::IPAddress; + using Poco::Net::IdleNotification; + using Poco::Net::InterfaceNotFoundException; + using Poco::Net::InvalidAddressException; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::InvalidCertificateException; + using Poco::Net::InvalidCertificateHandler; + #endif + using Poco::Net::InvalidSocketException; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::KeyConsoleHandler; + using Poco::Net::KeyFileHandler; + #endif + using Poco::Net::MailIOS; + using Poco::Net::MailInputStream; + using Poco::Net::MailMessage; + using Poco::Net::MailOutputStream; + using Poco::Net::MailRecipient; + using Poco::Net::MailStreamBuf; + using Poco::Net::MediaType; + using Poco::Net::MessageException; + using Poco::Net::MessageHeader; + using Poco::Net::MulticastSocket; + using Poco::Net::MultipartException; + using Poco::Net::MultipartIOS; + using Poco::Net::MultipartInputStream; + using Poco::Net::MultipartReader; + using Poco::Net::MultipartSource; + using Poco::Net::MultipartStreamBuf; + using Poco::Net::MultipartWriter; + using Poco::Net::NTLMContext; + using Poco::Net::NTLMCredentials; + using Poco::Net::NTPClient; + using Poco::Net::NTPEventArgs; + using Poco::Net::NTPException; + using Poco::Net::NTPPacket; + using Poco::Net::NameValueCollection; + using Poco::Net::NetException; + using Poco::Net::NetworkInterface; + using Poco::Net::NoAddressFoundException; + using Poco::Net::NoMessageException; + using Poco::Net::NotAuthenticatedException; + using Poco::Net::NullPartHandler; + using Poco::Net::OAuth10Credentials; + using Poco::Net::OAuth20Credentials; + using Poco::Net::POP3ClientSession; + using Poco::Net::POP3Exception; + using Poco::Net::ParallelSocketAcceptor; + using Poco::Net::ParallelSocketReactor; + using Poco::Net::PartHandler; + using Poco::Net::PartSource; + using Poco::Net::PartStore; + using Poco::Net::PartStoreFactory; + using Poco::Net::PollSet; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::PrivateKeyFactory; + using Poco::Net::PrivateKeyFactoryImpl; + using Poco::Net::PrivateKeyFactoryMgr; + using Poco::Net::PrivateKeyFactoryRegistrar; + using Poco::Net::PrivateKeyPassphraseHandler; + #endif + using Poco::Net::QuotedPrintableDecoder; + using Poco::Net::QuotedPrintableDecoderBuf; + using Poco::Net::QuotedPrintableEncoderIOS; + using Poco::Net::QuotedPrintableEncoder; + using Poco::Net::QuotedPrintableEncoderBuf; + using Poco::Net::QuotedPrintableEncoderIOS; + using Poco::Net::RawSocket; + using Poco::Net::RawSocketImpl; + using Poco::Net::ReadableNotification; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::RejectCertificateHandler; + #endif + using Poco::Net::RemoteSyslogChannel; + using Poco::Net::RemoteSyslogListener; + using Poco::Net::SMTPChannel; + using Poco::Net::SMTPClientSession; + using Poco::Net::SMTPException; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::SSLConnectionUnexpectedlyClosedException; + using Poco::Net::SSLContextException; + using Poco::Net::SSLException; + using Poco::Net::SSLManager; + #endif + using Poco::Net::SSPINTLMCredentials; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::SecureSMTPClientSession; + using Poco::Net::SecureServerSocket; + using Poco::Net::SecureServerSocketImpl; + using Poco::Net::SecureStreamSocket; + using Poco::Net::SecureSocketImpl; + #endif + using Poco::Net::ServerSocket; + using Poco::Net::ServerSocketImpl; + using Poco::Net::ServiceNotFoundException; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::Session; + #endif + using Poco::Net::ShutdownNotification; + using Poco::Net::Socket; + using Poco::Net::SocketAcceptor; + using Poco::Net::SocketAddress; + using Poco::Net::SocketConnector; + using Poco::Net::SocketIOS; + using Poco::Net::SocketImpl; + using Poco::Net::SocketInputStream; + using Poco::Net::SocketNotification; + using Poco::Net::SocketNotifier; + using Poco::Net::SocketOutputStream; + using Poco::Net::SocketProactor; + using Poco::Net::SocketReactor; + using Poco::Net::SocketStream; + using Poco::Net::SocketStreamBuf; + using Poco::Net::StreamSocket; + using Poco::Net::StreamSocketImpl; + using Poco::Net::StringPartSource; + using Poco::Net::TCPServer; + using Poco::Net::TCPServerConnection; + using Poco::Net::TCPServerConnectionFactory; + using Poco::Net::TCPServerConnectionFactoryImpl; + using Poco::Net::TCPServerConnectionFilter; + using Poco::Net::TCPServerDispatcher; + using Poco::Net::TCPServerParams; + using Poco::Net::TimeoutNotification; + using Poco::Net::UDPClient; + using Poco::Net::UDPServerParams; + using Poco::Net::UDPSocketReader; + using Poco::Net::UnsupportedFamilyException; + using Poco::Net::UnsupportedRedirectException; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::Utility; + using Poco::Net::VerificationErrorArgs; + #endif + using Poco::Net::WebSocket; + using Poco::Net::WebSocketException; + using Poco::Net::WebSocketImpl; + using Poco::Net::WritableNotification; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::X509Certificate; + #endif + + using Poco::Net::SocketBufVec; + using Poco::Net::UDPMsgSizeT; + + using Poco::Net::HTTPBasicStreamBuf; + using Poco::Net::UDPMultiServer; + using Poco::Net::UDPServer; + + using Poco::Net::SocketBufVecSize; + using Poco::Net::htmlize; + using Poco::Net::initializeNetwork; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::initializeSSL; + #endif + using Poco::Net::operator<<; + using Poco::Net::operator>>; + using Poco::Net::swap; + using Poco::Net::uninitializeNetwork; + #if defined(ENABLE_NETSSL_OPENSSL) || defined(ENABLE_NETSSL_WIN) + using Poco::Net::uninitializeSSL; + #endif + + namespace Impl { + using Poco::Net::Impl::IPAddressImpl; + using Poco::Net::Impl::IPv4AddressImpl; + using Poco::Net::Impl::IPv4SocketAddressImpl; + using Poco::Net::Impl::IPv6AddressImpl; + using Poco::Net::Impl::IPv6SocketAddressImpl; + using Poco::Net::Impl::LocalSocketAddressImpl; + using Poco::Net::Impl::SocketAddressImpl; + } + #endif +} diff --git a/modules/Poco/PDF.cppm b/modules/Poco/PDF.cppm new file mode 100644 index 000000000..b47b88275 --- /dev/null +++ b/modules/Poco/PDF.cppm @@ -0,0 +1,53 @@ +// +// PDF.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_PDF +#include "Poco/PDF/AttributedString.h" +#include "Poco/PDF/Cell.h" +#include "Poco/PDF/Destination.h" +#include "Poco/PDF/Encoder.h" +#include "Poco/PDF/Font.h" +#include "Poco/PDF/Image.h" +#include "Poco/PDF/LinkAnnotation.h" +#include "Poco/PDF/Outline.h" +#include "Poco/PDF/Page.h" +#include "Poco/PDF/PDF.h" +#include "Poco/PDF/PDFException.h" +#include "Poco/PDF/Resource.h" +#include "Poco/PDF/Table.h" +#include "Poco/PDF/TextAnnotation.h" +#include "Poco/PDF/XMLTemplate.h" +#endif + +export module Poco.PDF; + +export namespace Poco::PDF { + #ifdef ENABLE_PDF + using Poco::PDF::AttributedString; + using Poco::PDF::Cell; + using Poco::PDF::Destination; + using Poco::PDF::Document; + using Poco::PDF::Encoder; + using Poco::PDF::Font; + using Poco::PDF::Image; + using Poco::PDF::LinkAnnotation; + using Poco::PDF::Outline; + using Poco::PDF::Page; + using Poco::PDF::PDFCreateException; + using Poco::PDF::PDFException; + using Poco::PDF::Resource; + using Poco::PDF::Table; + using Poco::PDF::TextAnnotation; + using Poco::PDF::XMLTemplate; + #endif +} diff --git a/modules/Poco/Prometheus.cppm b/modules/Poco/Prometheus.cppm new file mode 100644 index 000000000..3b0352a53 --- /dev/null +++ b/modules/Poco/Prometheus.cppm @@ -0,0 +1,68 @@ +// +// Prometheus.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_PROMETHEUS +#include "Poco/Prometheus/AtomicFloat.h" +#include "Poco/Prometheus/CallbackMetric.h" +#include "Poco/Prometheus/Collector.h" +#include "Poco/Prometheus/Counter.h" +#include "Poco/Prometheus/Exporter.h" +#include "Poco/Prometheus/Gauge.h" +#include "Poco/Prometheus/Histogram.h" +#include "Poco/Prometheus/IntCounter.h" +#include "Poco/Prometheus/IntGauge.h" +#include "Poco/Prometheus/LabeledMetric.h" +#include "Poco/Prometheus/LabeledMetricImpl.h" +#include "Poco/Prometheus/Metric.h" +#include "Poco/Prometheus/MetricsRequestHandler.h" +#include "Poco/Prometheus/MetricsServer.h" +#include "Poco/Prometheus/ProcessCollector.h" +#include "Poco/Prometheus/Prometheus.h" +#include "Poco/Prometheus/Registry.h" +#include "Poco/Prometheus/TextExporter.h" +#include "Poco/Prometheus/ThreadPoolCollector.h" +#endif + +export module Poco.Prometheus; + +export namespace Poco::Prometheus { + #ifdef ENABLE_PROMETHEUS + using Poco::Prometheus::AtomicFloat; + using Poco::Prometheus::CallbackMetric; + using Poco::Prometheus::Collector; + using Poco::Prometheus::Counter; + using Poco::Prometheus::CounterSample; + using Poco::Prometheus::Exporter; + using Poco::Prometheus::Gauge; + using Poco::Prometheus::GaugeSample; + using Poco::Prometheus::Histogram; + using Poco::Prometheus::HistogramData; + using Poco::Prometheus::HistogramSample; + using Poco::Prometheus::IntCounter; + using Poco::Prometheus::IntGauge; + using Poco::Prometheus::LabeledMetric; + using Poco::Prometheus::LabeledMetricImpl; + using Poco::Prometheus::Metric; + using Poco::Prometheus::MetricsRequestHandler; + using Poco::Prometheus::MetricsServer; + using Poco::Prometheus::ProcessCollector; + using Poco::Prometheus::Registry; + using Poco::Prometheus::TextExporter; + using Poco::Prometheus::ThreadPoolCollector; + + using Poco::Prometheus::CallbackCounter; + using Poco::Prometheus::CallbackGauge; + using Poco::Prometheus::CallbackIntCounter; + using Poco::Prometheus::CallbackIntGauge; + #endif +} diff --git a/modules/Poco/Redis.cppm b/modules/Poco/Redis.cppm new file mode 100644 index 000000000..5d174770c --- /dev/null +++ b/modules/Poco/Redis.cppm @@ -0,0 +1,50 @@ +// +// Redis.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_REDIS +#include "Poco/Redis/Array.h" +#include "Poco/Redis/AsyncReader.h" +#include "Poco/Redis/Client.h" +#include "Poco/Redis/Command.h" +#include "Poco/Redis/Error.h" +#include "Poco/Redis/Exception.h" +#include "Poco/Redis/PoolableConnectionFactory.h" +#include "Poco/Redis/RedisEventArgs.h" +#include "Poco/Redis/Redis.h" +#include "Poco/Redis/RedisStream.h" +#include "Poco/Redis/Type.h" +#endif + +export module Poco.Redis; + +export namespace Poco::Redis { + #ifdef ENABLE_REDIS + using Poco::Redis::Array; + using Poco::Redis::AsyncReader; + using Poco::Redis::Client; + using Poco::Redis::Command; + using Poco::Redis::Error; + using Poco::Redis::PooledConnection; + using Poco::Redis::RedisEventArgs; + using Poco::Redis::RedisException; + using Poco::Redis::RedisIOS; + using Poco::Redis::RedisInputStream; + using Poco::Redis::RedisOutputStream; + using Poco::Redis::RedisStreamBuf; + using Poco::Redis::RedisType; + using Poco::Redis::RedisTypeTraits; + using Poco::Redis::Type; + + using Poco::Redis::BulkString; + #endif +} diff --git a/modules/Poco/SevenZip.cppm b/modules/Poco/SevenZip.cppm new file mode 100644 index 000000000..c8e3813cc --- /dev/null +++ b/modules/Poco/SevenZip.cppm @@ -0,0 +1,28 @@ +// +// SevenZip.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_SEVENZIP +#include "Poco/SevenZip/Archive.h" +#include "Poco/SevenZip/ArchiveEntry.h" +#include "Poco/SevenZip/SevenZip.h" +#endif + +export module Poco.SevenZip; + +export namespace Poco::SevenZip { + #ifdef ENABLE_SEVENZIP + using Poco::SevenZip::Archive; + using Poco::SevenZip::ArchiveEntry; + using Poco::SevenZip::ArchiveImpl; + #endif +} diff --git a/modules/Poco/Util.cppm b/modules/Poco/Util.cppm new file mode 100644 index 000000000..db4cb544e --- /dev/null +++ b/modules/Poco/Util.cppm @@ -0,0 +1,103 @@ +// +// Util.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_UTIL +#include "Poco/Util/AbstractConfiguration.h" +#include "Poco/Util/Application.h" +#include "Poco/Util/ConfigurationMapper.h" +#include "Poco/Util/ConfigurationView.h" +#include "Poco/Util/FilesystemConfiguration.h" +#include "Poco/Util/HelpFormatter.h" +#include "Poco/Util/IniFileConfiguration.h" +#include "Poco/Util/IntValidator.h" +#include "Poco/Util/JSONConfiguration.h" +#include "Poco/Util/LayeredConfiguration.h" +#include "Poco/Util/LocalConfigurationView.h" +#include "Poco/Util/LoggingConfigurator.h" +#include "Poco/Util/LoggingSubsystem.h" +#include "Poco/Util/MapConfiguration.h" +#include "Poco/Util/OptionCallback.h" +#include "Poco/Util/OptionException.h" +#include "Poco/Util/Option.h" +#include "Poco/Util/OptionProcessor.h" +#include "Poco/Util/OptionSet.h" +#include "Poco/Util/PropertyFileConfiguration.h" +#include "Poco/Util/RegExpValidator.h" +#include "Poco/Util/ServerApplication.h" +#include "Poco/Util/Subsystem.h" +#include "Poco/Util/SystemConfiguration.h" +#include "Poco/Util/Timer.h" +#include "Poco/Util/TimerTaskAdapter.h" +#include "Poco/Util/TimerTask.h" +#include "Poco/Util/Units.h" +#include "Poco/Util/Util.h" +#include "Poco/Util/Validator.h" +#ifdef _WIN32 +#include "Poco/Util/WinRegistryConfiguration.h" +#include "Poco/Util/WinRegistryKey.h" +#include "Poco/Util/WinService.h" +#endif +#include "Poco/Util/XMLConfiguration.h" +#endif + +export module Poco.Util; + +export namespace Poco::Util { + #ifdef ENABLE_UTIL + using Poco::Util::AbstractConfiguration; + using Poco::Util::AbstractOptionCallback; + using Poco::Util::AmbiguousOptionException; + using Poco::Util::Application; + using Poco::Util::ConfigurationMapper; + using Poco::Util::ConfigurationView; + using Poco::Util::DuplicateOptionException; + using Poco::Util::EmptyOptionException; + using Poco::Util::FilesystemConfiguration; + using Poco::Util::HelpFormatter; + using Poco::Util::IncompatibleOptionsException; + using Poco::Util::IniFileConfiguration; + using Poco::Util::IntValidator; + using Poco::Util::InvalidArgumentException; + using Poco::Util::JSONConfiguration; + using Poco::Util::LayeredConfiguration; + using Poco::Util::LocalConfigurationView; + using Poco::Util::LoggingConfigurator; + using Poco::Util::LoggingSubsystem; + using Poco::Util::MapConfiguration; + using Poco::Util::MissingArgumentException; + using Poco::Util::MissingOptionException; + using Poco::Util::Option; + using Poco::Util::OptionCallback; + using Poco::Util::OptionException; + using Poco::Util::OptionProcessor; + using Poco::Util::OptionSet; + using Poco::Util::PropertyFileConfiguration; + using Poco::Util::RegExpValidator; + using Poco::Util::ServerApplication; + using Poco::Util::Subsystem; + using Poco::Util::SystemConfiguration; + using Poco::Util::Timer; + using Poco::Util::TimerFunc; + using Poco::Util::TimerTask; + using Poco::Util::TimerTaskAdapter; + using Poco::Util::UnexpectedArgumentException; + using Poco::Util::UnknownOptionException; + using Poco::Util::Validator; + #ifdef _WIN32 + using Poco::Util::WinRegistryConfiguration; + using Poco::Util::WinRegistryKey; + using Poco::Util::WinService; + #endif + using Poco::Util::XMLConfiguration; + #endif +} diff --git a/modules/Poco/XML.cppm b/modules/Poco/XML.cppm new file mode 100644 index 000000000..1c7cf0990 --- /dev/null +++ b/modules/Poco/XML.cppm @@ -0,0 +1,188 @@ +// +// XML.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_XML +#include "Poco/DOM/AbstractContainerNode.h" +#include "Poco/DOM/AbstractNode.h" +#include "Poco/DOM/Attr.h" +#include "Poco/DOM/AttrMap.h" +#include "Poco/DOM/AutoPtr.h" +#include "Poco/DOM/CDATASection.h" +#include "Poco/DOM/CharacterData.h" +#include "Poco/DOM/ChildNodesList.h" +#include "Poco/DOM/Comment.h" +#include "Poco/DOM/DocumentEvent.h" +#include "Poco/DOM/DocumentFragment.h" +#include "Poco/DOM/Document.h" +#include "Poco/DOM/DocumentType.h" +#include "Poco/DOM/DOMBuilder.h" +#include "Poco/DOM/DOMException.h" +#include "Poco/DOM/DOMImplementation.h" +#include "Poco/DOM/DOMObject.h" +#include "Poco/DOM/DOMParser.h" +#include "Poco/DOM/DOMSerializer.h" +#include "Poco/DOM/DOMWriter.h" +#include "Poco/DOM/DTDMap.h" +#include "Poco/DOM/Element.h" +#include "Poco/DOM/ElementsByTagNameList.h" +#include "Poco/DOM/Entity.h" +#include "Poco/DOM/EntityReference.h" +#include "Poco/DOM/EventDispatcher.h" +#include "Poco/DOM/EventException.h" +#include "Poco/DOM/Event.h" +#include "Poco/DOM/EventListener.h" +#include "Poco/DOM/EventTarget.h" +#include "Poco/DOM/MutationEvent.h" +#include "Poco/DOM/NamedNodeMap.h" +#include "Poco/DOM/NodeAppender.h" +#include "Poco/DOM/NodeFilter.h" +#include "Poco/DOM/Node.h" +#include "Poco/DOM/NodeIterator.h" +#include "Poco/DOM/NodeList.h" +#include "Poco/DOM/Notation.h" +#include "Poco/DOM/ProcessingInstruction.h" +#include "Poco/DOM/Text.h" +#include "Poco/DOM/TreeWalker.h" +#include "Poco/SAX/Attributes.h" +#include "Poco/SAX/AttributesImpl.h" +#include "Poco/SAX/ContentHandler.h" +#include "Poco/SAX/DeclHandler.h" +#include "Poco/SAX/DefaultHandler.h" +#include "Poco/SAX/DTDHandler.h" +#include "Poco/SAX/EntityResolver.h" +#include "Poco/SAX/EntityResolverImpl.h" +#include "Poco/SAX/ErrorHandler.h" +#include "Poco/SAX/InputSource.h" +#include "Poco/SAX/LexicalHandler.h" +#include "Poco/SAX/Locator.h" +#include "Poco/SAX/LocatorImpl.h" +#include "Poco/SAX/NamespaceSupport.h" +#include "Poco/SAX/SAXException.h" +#include "Poco/SAX/SAXParser.h" +#include "Poco/SAX/WhitespaceFilter.h" +#include "Poco/SAX/XMLFilter.h" +#include "Poco/SAX/XMLFilterImpl.h" +#include "Poco/SAX/XMLReader.h" +#include "Poco/XML/Content.h" +#include "Poco/XML/Name.h" +#include "Poco/XML/NamePool.h" +#include "Poco/XML/NamespaceStrategy.h" +#include "Poco/XML/QName.h" +#include "Poco/XML/ValueTraits.h" +#include "Poco/XML/XMLException.h" +#include "Poco/XML/XML.h" +#include "Poco/XML/XMLStream.h" +#include "Poco/XML/XMLStreamParserException.h" +#include "Poco/XML/XMLStreamParser.h" +#include "Poco/XML/XMLString.h" +#include "Poco/XML/XMLWriter.h" +#endif + +export module Poco.XML; + +export namespace Poco::XML { + #ifdef ENABLE_XML + // DOM + using Poco::XML::AbstractContainerNode; + using Poco::XML::AbstractNode; + using Poco::XML::Attr; + using Poco::XML::AttrMap; + using Poco::XML::CDATASection; + using Poco::XML::CharacterData; + using Poco::XML::ChildNodesList; + using Poco::XML::Comment; + using Poco::XML::DOMBuilder; + using Poco::XML::DOMException; + using Poco::XML::DOMImplementation; + using Poco::XML::DOMObject; + using Poco::XML::DOMParser; + using Poco::XML::DOMSerializer; + using Poco::XML::DOMWriter; + using Poco::XML::DTDMap; + using Poco::XML::Document; + using Poco::XML::DocumentEvent; + using Poco::XML::DocumentFragment; + using Poco::XML::DocumentType; + using Poco::XML::Element; + using Poco::XML::ElementsByTagNameList; + using Poco::XML::ElementsByTagNameListNS; + using Poco::XML::Entity; + using Poco::XML::EntityReference; + using Poco::XML::Event; + using Poco::XML::EventDispatcher; + using Poco::XML::EventException; + using Poco::XML::EventListener; + using Poco::XML::EventTarget; + using Poco::XML::MutationEvent; + using Poco::XML::NamedNodeMap; + using Poco::XML::Node; + using Poco::XML::NodeAppender; + using Poco::XML::NodeFilter; + using Poco::XML::NodeIterator; + using Poco::XML::NodeList; + using Poco::XML::Notation; + using Poco::XML::ProcessingInstruction; + using Poco::XML::Text; + using Poco::XML::TreeWalker; + + // SAX + using Poco::XML::Attributes; + using Poco::XML::ContentHandler; + using Poco::XML::DTDHandler; + using Poco::XML::DeclHandler; + using Poco::XML::DefaultHandler; + using Poco::XML::EntityResolver; + using Poco::XML::ErrorHandler; + using Poco::XML::InputSource; + using Poco::XML::LexicalHandler; + using Poco::XML::Locator; + using Poco::XML::NamespaceSupport; + using Poco::XML::SAXException; + using Poco::XML::SAXNotRecognizedException; + using Poco::XML::SAXNotSupportedException; + using Poco::XML::SAXParseException; + using Poco::XML::SAXParser; + using Poco::XML::WhitespaceFilter; + using Poco::XML::XMLFilter; + using Poco::XML::XMLReader; + + using Poco::XML::AttributesImpl; + using Poco::XML::EntityResolverImpl; + using Poco::XML::LocatorImpl; + using Poco::XML::XMLFilterImpl; + + // XML + using Poco::XML::Content; + using Poco::XML::DefaultValueTraits; + using Poco::XML::Name; + using Poco::XML::NamePool; + using Poco::XML::NamespacePrefixesStrategy; + using Poco::XML::NamespaceStrategy; + using Poco::XML::NoNamespacePrefixesStrategy; + using Poco::XML::NoNamespacesStrategy; + using Poco::XML::QName; + using Poco::XML::ValueTraits; + using Poco::XML::XMLException; + using Poco::XML::XMLStreamParser; + using Poco::XML::XMLStreamParserException; + using Poco::XML::XMLWriter; + + using Poco::XML::fromXMLString; + using Poco::XML::operator!=; + using Poco::XML::operator<; + using Poco::XML::operator<<; + using Poco::XML::operator==; + using Poco::XML::swap; + using Poco::XML::toXMLString; + #endif +} diff --git a/modules/Poco/Zip.cppm b/modules/Poco/Zip.cppm new file mode 100644 index 000000000..efbf57461 --- /dev/null +++ b/modules/Poco/Zip.cppm @@ -0,0 +1,78 @@ +// +// Zip.cppm +// +// C++ module file +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +module; + +#ifdef ENABLE_ZIP +#include "Poco/Zip/Add.h" +#include "Poco/Zip/AutoDetectStream.h" +#include "Poco/Zip/Compress.h" +#include "Poco/Zip/Decompress.h" +#include "Poco/Zip/Delete.h" +#include "Poco/Zip/Keep.h" +#include "Poco/Zip/ParseCallback.h" +#include "Poco/Zip/PartialStream.h" +#include "Poco/Zip/Rename.h" +#include "Poco/Zip/Replace.h" +#include "Poco/Zip/SkipCallback.h" +#include "Poco/Zip/ZipArchive.h" +#include "Poco/Zip/ZipArchiveInfo.h" +#include "Poco/Zip/ZipCommon.h" +#include "Poco/Zip/ZipDataInfo.h" +#include "Poco/Zip/ZipException.h" +#include "Poco/Zip/ZipFileInfo.h" +#include "Poco/Zip/Zip.h" +#include "Poco/Zip/ZipLocalFileHeader.h" +#include "Poco/Zip/ZipManipulator.h" +#include "Poco/Zip/ZipOperation.h" +#include "Poco/Zip/ZipStream.h" +#include "Poco/Zip/ZipUtil.h" +#endif + +export module Poco.Zip; + +export namespace Poco::Zip { + #ifdef ENABLE_ZIP + using Poco::Zip::Add; + using Poco::Zip::AutoDetectIOS; + using Poco::Zip::AutoDetectInputStream; + using Poco::Zip::AutoDetectStreamBuf; + using Poco::Zip::Compress; + using Poco::Zip::Decompress; + using Poco::Zip::Delete; + using Poco::Zip::Keep; + using Poco::Zip::ParseCallback; + using Poco::Zip::PartialIOS; + using Poco::Zip::PartialInputStream; + using Poco::Zip::PartialOutputStream; + using Poco::Zip::PartialStreamBuf; + using Poco::Zip::Rename; + using Poco::Zip::Replace; + using Poco::Zip::SkipCallback; + using Poco::Zip::ZipArchive; + using Poco::Zip::ZipArchiveInfo; + using Poco::Zip::ZipArchiveInfo64; + using Poco::Zip::ZipCommon; + using Poco::Zip::ZipDataInfo; + using Poco::Zip::ZipDataInfo64; + using Poco::Zip::ZipException; + using Poco::Zip::ZipFileInfo; + using Poco::Zip::ZipIOS; + using Poco::Zip::ZipInputStream; + using Poco::Zip::ZipLocalFileHeader; + using Poco::Zip::ZipManipulationException; + using Poco::Zip::ZipManipulator; + using Poco::Zip::ZipOperation; + using Poco::Zip::ZipOutputStream; + using Poco::Zip::ZipStreamBuf; + using Poco::Zip::ZipUtil; + #endif +} diff --git a/modules/cmake/PocoModulesConfig.cmake b/modules/cmake/PocoModulesConfig.cmake new file mode 100644 index 000000000..096ac7078 --- /dev/null +++ b/modules/cmake/PocoModulesConfig.cmake @@ -0,0 +1,102 @@ +include(CMakeFindDependencyMacro) + +if(ENABLE_FOUNDATION) + find_dependency(PocoFoundation) + if(ENABLE_ENCODINGS) + find_dependency(PocoEncodings) + endif() +endif() + +if(ENABLE_ACTIVERECORD) + find_dependency(PocoActiveRecord) +endif() + +if(ENABLE_CRYPTO) + find_dependency(PocoCrypto) +endif() + +if(ENABLE_CPPPARSER) + find_dependency(PocoCppParser) +endif() + +if(ENABLE_CPPUNIT) + find_dependency(PocoCppUnit) +endif() + +if(ENABLE_DATA) + find_dependency(PocoData) + + if(ENABLE_DATA_MYSQL) + find_dependency(PocoDataMySQL) + endif() + + if(ENABLE_DATA_ODBC) + find_dependency(PocoDataODBC) + endif() + + if(ENABLE_DATA_POSTGRESQL) + find_dependency(PocoDataPostgreSQL) + endif() + + if(ENABLE_DATA_SQLITE) + find_dependency(PocoDataSQLite) + endif() +endif() + +if(ENABLE_DNSSD) + find_dependency(PocoDNSSD) + + if(ENABLE_DNSSD_AVAHI) + find_dependency(PocoDNSSDAvahi) + endif() + + if(ENABLE_DNSSD_BONJOUR) + find_dependency(PocoDNSSDBonjour) + endif() +endif() + +if(ENABLE_JSON) + find_dependency(PocoJSON) +endif() + +if(ENABLE_JWT) + find_dependency(PocoJWT) +endif() + +if(ENABLE_MONGODB) + find_dependency(PocoMongoDB) +endif() + +if(ENABLE_NET) + find_dependency(PocoNet) +endif() + +if(ENABLE_PDF) + find_dependency(PocoPDF) +endif() + +if(ENABLE_PROMETHEUS) + find_dependency(PocoPrometheus) +endif() + +if(ENABLE_REDIS) + find_dependency(PocoRedis) +endif() + +if(ENABLE_SEVENZIP) + find_dependency(PocoSevenZip) +endif() + +if(ENABLE_UTIL) + find_dependency(PocoUtil) +endif() + +if(ENABLE_XML) + find_dependency(PocoXML) +endif() + +if(ENABLE_ZIP) + find_dependency(PocoZip) +endif() + +include("${CMAKE_CURRENT_LIST_DIR}/PocoModulesTargets.cmake") diff --git a/modules/samples/CMakeLists.txt b/modules/samples/CMakeLists.txt new file mode 100644 index 000000000..c4483b679 --- /dev/null +++ b/modules/samples/CMakeLists.txt @@ -0,0 +1,3 @@ +add_executable(moduletest src/ModuleTest.cpp) +target_compile_definitions(moduletest PUBLIC ENABLE_MODULES) +target_link_libraries(moduletest PUBLIC Poco::Modules Poco::Foundation) diff --git a/modules/samples/src/ModuleTest.cpp b/modules/samples/src/ModuleTest.cpp new file mode 100644 index 000000000..7ab02dd60 --- /dev/null +++ b/modules/samples/src/ModuleTest.cpp @@ -0,0 +1,49 @@ +// ModuleTest.cpp +// +// This sample importing POCO as a C++ module. +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + +#include +#include + +import Poco; + +using Poco::LocalDateTime; +using Poco::DateTime; +using Poco::DateTimeFormat; +using Poco::DateTimeFormatter; +using Poco::DateTimeParser; +using Poco::URI; + +int main(int argc, char** argv) +{ + LocalDateTime now; + + std::string str = DateTimeFormatter::format(now, DateTimeFormat::ISO8601_FORMAT); + DateTime dt; + int tzd; + DateTimeParser::parse(DateTimeFormat::ISO8601_FORMAT, str, dt, tzd); + dt.makeUTC(tzd); + LocalDateTime ldt(tzd, dt); + URI uri1("http://www.appinf.com:81/sample?example-query#somewhere"); + + std::println("Scheme: {}", uri1.getScheme()); + std::println("Authority: {}". uri1.getAuthority()); + std::println("Path: {}", uri1.getPath()); + std::println("Query: {}", uri1.getQuery()); + std::println("Fragment: {}", uri1.getFragment()); + + URI uri2; + uri2.setScheme("https"); + uri2.setAuthority("www.appinf.com"); + uri2.setPath("/another sample"); + + std::println("{}", uri1.toString()); + + return 0; +} diff --git a/modules/testsuite/CMakeLists.txt b/modules/testsuite/CMakeLists.txt new file mode 100644 index 000000000..08f4f7a34 --- /dev/null +++ b/modules/testsuite/CMakeLists.txt @@ -0,0 +1,31 @@ +# Sources +file(GLOB SRCS_G "src/*.cpp") +POCO_SOURCES_AUTO(TEST_SRCS ${SRCS_G}) + +# Headers +file(GLOB_RECURSE HDRS_G "src/*.h") +POCO_HEADERS_AUTO(TEST_SRCS ${HDRS_G}) + +POCO_SOURCES_AUTO_PLAT(TEST_SRCS OFF + src/WinDriver.cpp +) + +add_executable(Modules-testrunner ${TEST_SRCS}) +target_compile_definitions(Modules-testrunner PUBLIC ENABLE_MODULES) +target_link_libraries(Modules-testrunner PUBLIC Poco::Modules Poco::Foundation) + +if(ANDROID) + add_test( + NAME Modules + WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + COMMAND ${CMAKE_COMMAND} -DANDROID_NDK=${ANDROID_NDK} -DLIBRARY_DIR=${CMAKE_BINARY_DIR}/lib -DUNITTEST=${CMAKE_BINARY_DIR}/bin/Modules-testrunner -DTEST_PARAMETER=-all -P ${PROJECT_SOURCE_DIR}/cmake/ExecuteOnAndroid.cmake + ) +else() + add_test( + NAME Modules + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMAND Modules-testrunner -ignore ${PROJECT_SOURCE_DIR}/cppignore.lnx -all + ) + set_tests_properties(Modules PROPERTIES ENVIRONMENT POCO_BASE=${PROJECT_SOURCE_DIR}) +endif() +target_link_libraries(Modules-testrunner PUBLIC Poco::Modules CppUnit) diff --git a/modules/testsuite/Makefile b/modules/testsuite/Makefile new file mode 100644 index 000000000..9b4edccb5 --- /dev/null +++ b/modules/testsuite/Makefile @@ -0,0 +1,15 @@ +# +# Makefile +# +# Makefile for Poco Modules testsuite +# + +include $(POCO_BASE)/build/rules/global + +objects = ModulesTestSuite Driver ModulesTest + +target = testrunner +target_version = 1 +target_libs = PocoModules PocoFoundation CppUnit + +include $(POCO_BASE)/build/rules/exec diff --git a/modules/testsuite/src/Driver.cpp b/modules/testsuite/src/Driver.cpp new file mode 100644 index 000000000..6d951871e --- /dev/null +++ b/modules/testsuite/src/Driver.cpp @@ -0,0 +1,17 @@ +// +// Driver.cpp +// +// Console-based test driver for Poco Modules. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "CppUnit/TestRunner.h" +#include "ModulesTestSuite.h" + + +CppUnitMain(ModulesTestSuite) diff --git a/modules/testsuite/src/ModulesTest.cpp b/modules/testsuite/src/ModulesTest.cpp new file mode 100644 index 000000000..afaac7b02 --- /dev/null +++ b/modules/testsuite/src/ModulesTest.cpp @@ -0,0 +1,61 @@ +// +// ModulesTest.cpp +// +// Copyright (c) 2025, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "ModulesTest.h" +#include "CppUnit/TestCaller.h" +#include "CppUnit/TestSuite.h" + +import Poco; + +ModulesTest::ModulesTest(const std::string& name): CppUnit::TestCase(name) +{ +} + + +ModulesTest::~ModulesTest() +{ +} + + +void ModulesTest::testModule() +{ + Poco::LocalDateTime now; + + std::string str = Poco::DateTimeFormatter::format(now, Poco::DateTimeFormat::ISO8601_FORMAT); + Poco::DateTime dt; + int tzd; + Poco::DateTimeParser::parse(Poco::DateTimeFormat::ISO8601_FORMAT, str, dt, tzd); + dt.makeUTC(tzd); + Poco::LocalDateTime ldt(tzd, dt); + Poco::URI uri1("http://www.appinf.com:81/sample?example-query#somewhere"); + + std::println("Scheme: {}", uri1.getScheme()); + std::println("Authority: {}". uri1.getAuthority()); + std::println("Path: {}", uri1.getPath()); + std::println("Query: {}", uri1.getQuery()); + std::println("Fragment: {}", uri1.getFragment()); + + Poco::URI uri2; + uri2.setScheme("https"); + uri2.setAuthority("www.appinf.com"); + uri2.setPath("/another sample"); + + std::println("{}", uri1.toString()); +} + + +CppUnit::Test* ModulesTest::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("ModulesTest"); + + CppUnit_addTest(pSuite, ModulesTest, testModule); + + return pSuite; +} diff --git a/modules/testsuite/src/ModulesTest.h b/modules/testsuite/src/ModulesTest.h new file mode 100644 index 000000000..2dfbb5e1d --- /dev/null +++ b/modules/testsuite/src/ModulesTest.h @@ -0,0 +1,33 @@ +// +// ModulesTest.h +// +// Definition of the ModulesTest class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef ModulesTest_INCLUDED +#define ModulesTest_INCLUDED + +#include +#include + +#include "CppUnit/TestCase.h" + +class ModulesTest: public CppUnit::TestCase +{ +public: + ModulesTest(const std::string& name); + ~ModulesTest(); + + void testModule(); + + static CppUnit::Test* suite(); +}; + + +#endif // ModulesTest_INCLUDED diff --git a/modules/testsuite/src/ModulesTestSuite.cpp b/modules/testsuite/src/ModulesTestSuite.cpp new file mode 100644 index 000000000..0b6f234d2 --- /dev/null +++ b/modules/testsuite/src/ModulesTestSuite.cpp @@ -0,0 +1,22 @@ +// +// ModulesTestSuite.cpp +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "ModulesTestSuite.h" +#include "ModulesTest.h" + + +CppUnit::Test* ModulesTestSuite::suite() +{ + CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("ModulesTestSuite"); + + pSuite->addTest(ModulesTest::suite()); + + return pSuite; +} diff --git a/modules/testsuite/src/ModulesTestSuite.h b/modules/testsuite/src/ModulesTestSuite.h new file mode 100644 index 000000000..15a0d4534 --- /dev/null +++ b/modules/testsuite/src/ModulesTestSuite.h @@ -0,0 +1,27 @@ +// +// ModulesTestSuite.h +// +// Definition of the ModulesTestSuite class. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#ifndef ModulesTestSuite_INCLUDED +#define ModulesTestSuite_INCLUDED + + +#include "CppUnit/TestSuite.h" + + +class ModulesTestSuite +{ +public: + static CppUnit::Test* suite(); +}; + + +#endif // ModulesTestSuite_INCLUDED diff --git a/modules/testsuite/src/WinDriver.cpp b/modules/testsuite/src/WinDriver.cpp new file mode 100644 index 000000000..ce7270ac3 --- /dev/null +++ b/modules/testsuite/src/WinDriver.cpp @@ -0,0 +1,28 @@ +// +// WinDriver.cpp +// +// Windows test driver for Poco Modules. +// +// Copyright (c) 2006, Applied Informatics Software Engineering GmbH. +// and Contributors. +// +// SPDX-License-Identifier: BSL-1.0 +// + + +#include "WinTestRunner/WinTestRunner.h" +#include "ModulesTestSuite.h" + + +class TestDriver: public CppUnit::WinTestRunnerApp +{ + void TestMain() + { + CppUnit::WinTestRunner runner; + runner.addTest(ModulesTestSuite::suite()); + runner.run(); + } +}; + + +TestDriver theDriver;