Program Listing for File NopDuct.hpp

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

#pragma once
#ifndef UIT_DUCTS_MOCK_NOPDUCT_HPP_INCLUDE
#define UIT_DUCTS_MOCK_NOPDUCT_HPP_INCLUDE

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

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

namespace uit {

template<typename ImplSpec>
class NopDuct {

  using T = typename ImplSpec::T;

public:

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

  T val{};

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

  bool TryPut(const T&) { return false; }

  bool TryFlush() const { return true; }

  const T& Get() const { return val; }

  T& Get() { return val; }

  size_t TryConsumeGets(size_t) { return 0; }

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

  static constexpr bool CanStep() { return true; }

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

};

} // namespace uit

#endif // #ifndef UIT_DUCTS_MOCK_NOPDUCT_HPP_INCLUDE