Program Listing for File EmpAssertDuct.hpp

Return to documentation for file (include/uit/ducts/mock/EmpAssertDuct.hpp)

#pragma once
#ifndef UIT_DUCTS_MOCK_EMPASSERTDUCT_HPP_INCLUDE
#define UIT_DUCTS_MOCK_EMPASSERTDUCT_HPP_INCLUDE

#include <stddef.h>
#include <string>

#include "../../../../third-party/Empirical/source/base/assert.h"

#include "../proc/impl/backend/MockBackEnd.hpp"

namespace uit {

template<typename ImplSpec>
class EmpAssertDuct {

  using T = typename ImplSpec::T;

public:

  using InletImpl = EmpAssertDuct<ImplSpec>;
  using OutletImpl = EmpAssertDuct<ImplSpec>;
  using BackEndImpl = uit::MockBackEnd<ImplSpec>;

  template <typename... Args>
  EmpAssertDuct(Args&&... args) { ; }

  [[noreturn]] bool TryPut(const T&) const {
    emp_assert(false, "TryPut called on EmpAssertDuct");
  }

  [[noreturn]] bool TryFlush() const {
    emp_assert(false, "Flush called on EmpAssertDuct");
  }

  [[noreturn]] const T& Get() const {
    emp_assert(false, "Get called on EmpAssertDuct");
  }

  [[noreturn]] T& Get() {
    emp_assert(false, "Get called on EmpAssertDuct");
  }

  [[noreturn]] size_t TryConsumeGets(size_t) const {
    emp_assert(false, "ConsumeGets called on EmpAssertDuct");
  }

  static std::string GetName() { return "EmpAssertDuct"; }

  static constexpr bool CanStep() { return false; }

  std::string ToString() const { return std::string{}; }

};

} // namespace uit

#endif // #ifndef UIT_DUCTS_MOCK_EMPASSERTDUCT_HPP_INCLUDE