Program Listing for File BasicValidator.h

Return to documentation for file (include/lanelet2_validation/BasicValidator.h)

#pragma once
#include <lanelet2_core/Forward.h>
#include <lanelet2_traffic_rules/TrafficRules.h>

#include <memory>

#include "lanelet2_validation/Issue.h"

namespace lanelet {
namespace routing {
class RoutingGraph;
}  // namespace routing

namespace validation {

class MapValidator {  // NOLINT
 public:
  virtual ~MapValidator() = default;
  constexpr static const char* name() { return ""; }
  virtual Issues operator()(const LaneletMap& map) = 0;
};
using MapValidatorUPtr = std::unique_ptr<MapValidator>;
using MapValidatorUPtrs = std::vector<MapValidatorUPtr>;

class TrafficRuleValidator {  // NOLINT
 public:
  constexpr static const char* name() { return ""; }
  virtual Issues operator()(const LaneletMap& map, const std::vector<traffic_rules::TrafficRulesUPtr>& rules) = 0;
  virtual ~TrafficRuleValidator() = default;
};
using TrafficRuleValidatorUPtr = std::unique_ptr<TrafficRuleValidator>;
using TrafficRuleValidatorUPtrs = std::vector<TrafficRuleValidatorUPtr>;

class RoutingGraphValidator {  // NOLINTs
 public:
  constexpr static const char* name() { return ""; }
  virtual Issues operator()(const routing::RoutingGraph& graph, const traffic_rules::TrafficRules& rules) = 0;
  virtual ~RoutingGraphValidator() = default;
};
using RoutingGraphValidatorUPtr = std::unique_ptr<RoutingGraphValidator>;
using RoutingGraphValidatorUPtrs = std::vector<RoutingGraphValidatorUPtr>;

}  // namespace validation
}  // namespace lanelet