From ecf940e34b42f78f9651a73e8bcd0c6dc3c75cb5 Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Sat, 15 Oct 2022 14:12:31 -0700 Subject: Depend on external nanosim dependency. --- infra/port.h | 45 --------------------------------------------- 1 file changed, 45 deletions(-) delete mode 100644 infra/port.h (limited to 'infra/port.h') diff --git a/infra/port.h b/infra/port.h deleted file mode 100644 index 06a3aa5..0000000 --- a/infra/port.h +++ /dev/null @@ -1,45 +0,0 @@ -#pragma once - -#include -#include -#include - -#include "infra/sim.h" - -namespace infra { - template struct port : public sim { - std::optional consumer_side; - std::optional producer_side; - - bool can_read() { return consumer_side.has_value(); } - bool can_write() { return !producer_side.has_value(); } - - T read() { - assert(can_read()); - auto x = std::move(*consumer_side); - consumer_side.reset(); - return x; - } - - const T & peek() { - assert(can_read()); - return *consumer_side; - } - - void discard() { - consumer_side.reset(); - } - - void write(T &&x) { - assert(can_write()); - producer_side = std::move(x); - } - - void unclock() { - if (!consumer_side && producer_side) { - consumer_side = std::move(*producer_side); - producer_side.reset(); - } - } - }; -} -- cgit v1.2.3