Skip to content

capability/capability_validator.hpp

Namespaces

Name
sgns
sgns::sgprocessing
Artifact and manifest binary serialization.

Classes

Name
class sgns::sgprocessing::CapabilityValidator

Types

Name
using std::function< void(CanExecuteResult)> CanExecuteCallback
Callback type for async CanExecute (D-03).

Types Documentation

using CanExecuteCallback

using sgns::sgprocessing::CanExecuteCallback = typedef std::function<void( CanExecuteResult )>;

Callback type for async CanExecute (D-03).

Source code

#ifndef SGPROCMGR_CAPABILITY_VALIDATOR_HPP
#define SGPROCMGR_CAPABILITY_VALIDATOR_HPP

#include <capability/capability_types.hpp>
#include <Pass.hpp>
#include <functional>
#include <memory>
#include <unordered_map>

namespace sgns::sgprocessing
{

    // Forward declaration — ProcessingManager provides the factory map.
    class ProcessingProcessor;

    using CanExecuteCallback = std::function<void( CanExecuteResult )>;

    class CapabilityValidator
    {
    public:
        CapabilityValidator();
        ~CapabilityValidator();

        // Non-copyable, non-movable (owns PIMPL)
        CapabilityValidator( const CapabilityValidator & )            = delete;
        CapabilityValidator &operator=( const CapabilityValidator & ) = delete;
        CapabilityValidator( CapabilityValidator && )                 = delete;
        CapabilityValidator &operator=( CapabilityValidator && )      = delete;

        void BuildSnapshot(
            const std::unordered_map<PassType,
                std::function<std::unique_ptr<ProcessingProcessor>()>,
                PassTypeHash> &passFactories,
            size_t             mnnProcessorCount,
            std::function<VkPhysicalDevice()> ensureVulkanDevice );

        const CapabilitySnapshot *GetSnapshot() const;

        void CanExecute( const sgns::Pass &pass, CanExecuteCallback callback );

#ifdef SGPROCMGR_TEST_FRIEND
        void SetSnapshotForTest( CapabilitySnapshot snap );
#endif

    private:
        struct Impl;
        std::unique_ptr<Impl> m_impl;
    };

} // namespace sgns::sgprocessing

#endif // SGPROCMGR_CAPABILITY_VALIDATOR_HPP

Updated on 2026-09-17 at 06:29:15 +0000