Skip to main content

IsCommandBufferLike.ixx File

Concept constraining types usable as command buffers. More...

Included Headers

Namespaces Index

namespacehelios
namespaceengine

Main engine module aggregating core infrastructure and game systems. More...

namespaceruntime

Runtime infrastructure for game execution and lifecycle orchestration. More...

namespaceworld

World state management, resource registry, and per-frame update context. More...

namespacecommon

Shared type definitions, concepts, and tags used across engine subsystems. More...

namespaceconcepts

Compile-time concepts for engine role classification and capability detection. More...

Description

Concept constraining types usable as command buffers.

File Listing

The file content with the documentation metadata removed is:

1/**
2 * @file IsCommandBufferLike.ixx
3 * @brief Concept constraining types usable as command buffers.
4 */
5module;
6
7#include <concepts>
8
9export module helios.engine.common.concepts.IsCommandBufferLike;
10
11import helios.engine.common.concepts.HasTag;
12import helios.engine.common.concepts.HasClear;
13
14import helios.engine.common.tags.CommandBufferRole;
15
16export namespace helios::engine::runtime::world {
17 class UpdateContext;
18 class GameWorld;
19}
20
22
24
25 /**
26 * @brief Constrains types that can serve as concrete command buffers.
27 *
28 * @details Requires `flush(GameWorld&, UpdateContext&) noexcept` and
29 * `clear() noexcept` (via HasClear). Types satisfying this concept
30 * can be wrapped by the type-erased CommandBuffer wrapper.
31 *
32 * @tparam T The type to constrain.
33 *
34 * @see CommandBuffer
35 * @see CommandBufferRole
36 * @see HasClear
37 */
38 template<class T>
39 concept IsCommandBufferLike = requires(T& t, GameWorld& gameWorld, UpdateContext& updateContext) {
40 {t.flush(gameWorld, updateContext) } -> std::same_as<void>;
41 } && HasClear<T>;
42}

Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.15.0.