Summary
Create C++20 module interface files (.cppm) for common_system as part of Epic #256 Phase 2: Module Conversion. This enables modern C++20 module imports across the kcenon ecosystem.
Parent Issue
Prerequisites (Completed)
Current State
Header Organization (59 headers in 11 modules):
include/kcenon/common/
├── common.h # Public API aggregator
├── fwd.h # Forward declarations
├── adapters/ # Type adapters (3 headers)
├── bootstrap/ # System bootstrapper (1 header)
├── concepts/ # C++20 concepts (9 headers)
├── config/ # Configuration (8 headers)
├── di/ # Dependency injection (3 headers)
├── error/ # Error codes (1 header)
├── interfaces/ # Core interfaces (12 headers)
├── logging/ # Log utilities (2 headers)
├── patterns/ # Result, EventBus (14 headers)
└── utils/ # Utilities (3 headers)
Proposed Module Structure
Primary Module
// src/modules/common.cppm
export module kcenon.common;
export import :result;
export import :interfaces;
export import :concepts;
export import :config;
export import :di;
export import :patterns;
export import :utils;
Module Partitions
Tier 1: Core (No Dependencies)
// :utils partition
export module kcenon.common:utils;
// source_location, circular_buffer, object_pool
// :error partition
export module kcenon.common:error;
// error_codes
Tier 2: Foundation
// :result partition (leverages #255 consolidation)
export module kcenon.common:result;
export import :result.core; // Result<T>, error_info
export import :result.utilities; // Factory functions, macros
// :concepts partition
export module kcenon.common:concepts;
// All C++20 concepts
Tier 3: Infrastructure
// :interfaces partition
export module kcenon.common:interfaces;
export import :interfaces.core; // executor, database, thread_pool
export import :interfaces.monitoring; // metrics, health, alerting
export import :interfaces.transport; // message, session, connection
// :config partition
export module kcenon.common:config;
// feature_flags, config_loader, cli_config_parser
// :di partition
export module kcenon.common:di;
// service_container, bootstrapper
Tier 4: Application
// :patterns partition
export module kcenon.common:patterns;
// event_bus, helpers
// :logging partition
export module kcenon.common:logging;
// log_functions, log_macros
Implementation Plan
Phase 2a: Setup and Core Modules
Phase 2b: Foundation Modules
Phase 2c: Infrastructure Modules
Phase 2d: Application and Integration
CMake Configuration
cmake_minimum_required(VERSION 3.28)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_SCAN_FOR_MODULES ON)
add_library(kcenon_common)
target_sources(kcenon_common
PUBLIC FILE_SET CXX_MODULES
FILES
src/modules/common.cppm
src/modules/utils.cppm
src/modules/error.cppm
src/modules/result/core.cppm
src/modules/result/utilities.cppm
src/modules/result.cppm
src/modules/concepts.cppm
src/modules/interfaces/core.cppm
src/modules/interfaces/monitoring.cppm
src/modules/interfaces/transport.cppm
src/modules/interfaces.cppm
src/modules/config.cppm
src/modules/di.cppm
src/modules/patterns.cppm
src/modules/logging.cppm
)
Acceptance Criteria
Testing Strategy
- Unit tests for each partition
- Integration test importing full module
- Compile time benchmark comparison
- Downstream system compatibility (thread_system, container_system)
Files to Create
| File |
Purpose |
src/modules/common.cppm |
Primary module |
src/modules/utils.cppm |
Utils partition |
src/modules/error.cppm |
Error partition |
src/modules/result.cppm |
Result aggregator |
src/modules/result/core.cppm |
Result core types |
src/modules/result/utilities.cppm |
Result utilities |
src/modules/concepts.cppm |
C++20 concepts |
src/modules/interfaces.cppm |
Interfaces aggregator |
src/modules/interfaces/core.cppm |
Core interfaces |
src/modules/interfaces/monitoring.cppm |
Monitoring interfaces |
src/modules/interfaces/transport.cppm |
Transport interfaces |
src/modules/config.cppm |
Configuration |
src/modules/di.cppm |
Dependency injection |
src/modules/patterns.cppm |
Design patterns |
src/modules/logging.cppm |
Logging utilities |
Related
Summary
Create C++20 module interface files (.cppm) for common_system as part of Epic #256 Phase 2: Module Conversion. This enables modern C++20 module imports across the kcenon ecosystem.
Parent Issue
Prerequisites (Completed)
Current State
Header Organization (59 headers in 11 modules):
Proposed Module Structure
Primary Module
Module Partitions
Tier 1: Core (No Dependencies)
Tier 2: Foundation
Tier 3: Infrastructure
Tier 4: Application
Implementation Plan
Phase 2a: Setup and Core Modules
src/modules/directory structure:utilspartition (simplest, no dependencies):errorpartitionPhase 2b: Foundation Modules
:result.corepartition:result.utilitiespartition:resultaggregator partition:conceptspartitionPhase 2c: Infrastructure Modules
:interfaces.corepartition:interfaces.monitoringpartition:interfaces.transportpartition:interfacesaggregator partition:configpartition:dipartitionPhase 2d: Application and Integration
:patternspartition:loggingpartitionkcenon.commonmoduleCMake Configuration
Acceptance Criteria
import kcenon.common;works as expectedimport kcenon.common:result;)Testing Strategy
Files to Create
src/modules/common.cppmsrc/modules/utils.cppmsrc/modules/error.cppmsrc/modules/result.cppmsrc/modules/result/core.cppmsrc/modules/result/utilities.cppmsrc/modules/concepts.cppmsrc/modules/interfaces.cppmsrc/modules/interfaces/core.cppmsrc/modules/interfaces/monitoring.cppmsrc/modules/interfaces/transport.cppmsrc/modules/config.cppmsrc/modules/di.cppmsrc/modules/patterns.cppmsrc/modules/logging.cppmRelated