Validators.h File
Built-in contract implementations and default registry. More...
Included Headers
#include <memory>
#include <string>
#include <utility>
#include "builder/Node.h"
#include "contracts/Contract.h"
#include "contracts/ContractRegistry.h"
#include "contracts/ValidationReport.h"
Namespaces Index
| namespace | simaai |
| namespace | neat |
| namespace | validators |
Description
Built-in contract implementations and default registry.
Provides the small set of header-only Contract factories that ship with the framework — non-empty pipeline, no-null nodes, sink-last-for-run, RTSP source presence — plus DefaultRegistry(), the recommended starting point for most callers. Library code can compose its own registry by cloning DefaultRegistry() and adding/removing contracts.
- See Also
Contract
- See Also
ContractRegistry
File Listing
The file content with the documentation metadata removed is:
23#include "contracts/Contract.h"
24#include "contracts/ContractRegistry.h"
25#include "contracts/ValidationReport.h"
27namespace simaai::neat {
28namespace validators {
42inline std::shared_ptr<Contract> NonEmptyPipeline() {
52 void validate(std::span<const std::shared_ptr<Node>> nodes, const ValidationContext& ctx,
53 ValidationReport& r) const override {
56 r.add_error(id(), "EMPTY_PIPELINE", "No nodes were added to the pipeline.");
71inline std::shared_ptr<Contract> NoNullNodes() {
81 void validate(std::span<const std::shared_ptr<Node>> nodes, const ValidationContext& ctx,
82 ValidationReport& r) const override {
86 r.add_error(id(), "NULL_NODE", "Null node pointer in pipeline node list.", i);
106inline std::shared_ptr<Contract> SinkLastForRun(std::string sink_kind = "Output") {
109 explicit C(std::string kind) : sink_kind_(std::move(kind)) {}
117 void validate(std::span<const std::shared_ptr<Node>> nodes, const ValidationContext& ctx,
118 ValidationReport& r) const override {
119 if (ctx.mode != ValidationContext::Mode::Run)
130 r.add_error(id(), "SINK_NOT_LAST", "Last node must be " + sink_kind_ + " for run().",
138 r.add_error(id(), "MULTIPLE_SINKS",
162inline std::shared_ptr<Contract> RtspRequiresSource(std::string source_kind = "StillImageInput") {
165 explicit C(std::string k) : src_kind_(std::move(k)) {}
173 void validate(std::span<const std::shared_ptr<Node>> nodes, const ValidationContext& ctx,
174 ValidationReport& r) const override {
175 if (ctx.mode != ValidationContext::Mode::Rtsp)
188 r.add_error(id(), "RTSP_SOURCE_MISSING",
213inline ContractRegistry DefaultRegistry() {
214 ContractRegistry reg;
215 reg.add(NonEmptyPipeline());
216 reg.add(NoNullNodes());
217 reg.add(SinkLastForRun());
218 reg.add(RtspRequiresSource());
Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.8.