What
Migrate the remaining legacy headers under utilities/include/ and core/{base,sync}/include/ into the standard layout include/kcenon/thread/{utils,impl,core}/. Add [[deprecated]] forwarding headers at the original paths so dependent code keeps compiling for one release.
Part of #683.
Why
The dual layout forces every contributor and every downstream consumer to keep both header trees in mind. Eight headers still live outside the standard tree:
utilities/include/: formatter.h, formatter_macros.h, convert_string.h, span.h
core/sync/include/: cancellation_token.h, sync_primitives.h, error_handling.h
core/base/include/detail/: thread_impl.h
Until they are moved, the auto-detection branching in CMake cannot be removed (#683 sub-issue B), and downstream verification (#683 sub-issue D) cannot run against the final layout.
How
-
Decide the canonical destination per header by reading existing include/kcenon/thread/ substructure (e.g. utilities → utils/, sync primitives → existing core/ or new core/sync/).
-
git mv each header into its destination. Keep the file content unchanged.
-
Replace the original path with a one-line forwarding header:
#pragma once
// Deprecated: include <kcenon/thread/utils/formatter.h> instead.
// Slated for removal in the next minor release.
#include <kcenon/thread/utils/formatter.h>
Mark each forwarding header with [[deprecated]] via a pragma message so users get a compile-time hint.
-
Update internal includes inside thread_system to point at the new paths.
-
Run a full local build (cmake --preset debug && cmake --build --preset debug) and unit tests; verify no regressions.
Acceptance Criteria
Where
| Path |
Action |
utilities/include/*.h |
Move to include/kcenon/thread/utils/; replace with forwarding |
core/sync/include/*.h |
Move to include/kcenon/thread/core/sync/ (or merge into existing core/) |
core/base/include/detail/thread_impl.h |
Move to include/kcenon/thread/impl/detail/ |
Internal callers under src/, tests/, examples/ |
Update include paths |
No CMake changes in this issue (deferred to sub-issue B).
What
Migrate the remaining legacy headers under
utilities/include/andcore/{base,sync}/include/into the standard layoutinclude/kcenon/thread/{utils,impl,core}/. Add[[deprecated]]forwarding headers at the original paths so dependent code keeps compiling for one release.Part of #683.
Why
The dual layout forces every contributor and every downstream consumer to keep both header trees in mind. Eight headers still live outside the standard tree:
utilities/include/:formatter.h,formatter_macros.h,convert_string.h,span.hcore/sync/include/:cancellation_token.h,sync_primitives.h,error_handling.hcore/base/include/detail/:thread_impl.hUntil they are moved, the auto-detection branching in CMake cannot be removed (#683 sub-issue B), and downstream verification (#683 sub-issue D) cannot run against the final layout.
How
Decide the canonical destination per header by reading existing
include/kcenon/thread/substructure (e.g. utilities →utils/, sync primitives → existingcore/or newcore/sync/).git mveach header into its destination. Keep the file content unchanged.Replace the original path with a one-line forwarding header:
Mark each forwarding header with
[[deprecated]]via a pragma message so users get a compile-time hint.Update internal includes inside
thread_systemto point at the new paths.Run a full local build (
cmake --preset debug && cmake --build --preset debug) and unit tests; verify no regressions.Acceptance Criteria
include/kcenon/thread/#includestatements use the new canonical pathsdebugpreset builds clean with zero warnings (deprecation messages excluded)ctest --output-on-failurepasses on thedebugpresetWhere
utilities/include/*.hinclude/kcenon/thread/utils/; replace with forwardingcore/sync/include/*.hinclude/kcenon/thread/core/sync/(or merge into existingcore/)core/base/include/detail/thread_impl.hinclude/kcenon/thread/impl/detail/src/,tests/,examples/No CMake changes in this issue (deferred to sub-issue B).