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 <cassert>
#include <stddef.h>
#include <string>

#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>;

  T val{};

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

  bool TryPut(const T&) const {
    assert(false && "TryPut called on EmpAssertDuct");
    return false;
  }

  bool TryFlush() const {
    assert(false && "Flush called on EmpAssertDuct");
    return true;
  }

  const T& Get() const {
    assert(false && "Get called on EmpAssertDuct");
    return val;
  }

  T& Get() {
    assert(false && "Get called on EmpAssertDuct");
    return val;
  }

  size_t TryConsumeGets(size_t) const {
    assert(false && "ConsumeGets called on EmpAssertDuct");
    return 0;
  }

  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