From 75ee2fc4e6ede1ad731b9451fd606c61f5892801 Mon Sep 17 00:00:00 2001 From: "D. Shah" Date: Wed, 27 Jan 2021 20:43:01 +0000 Subject: Move RelPtr/RelSlice out of arches into common The bba approach seems widely used enough that it's reasonable for this to become part of common code. Signed-off-by: D. Shah --- ecp5/arch.h | 38 +------------------------------------- 1 file changed, 1 insertion(+), 37 deletions(-) (limited to 'ecp5/arch.h') diff --git a/ecp5/arch.h b/ecp5/arch.h index 458ff935..58373157 100644 --- a/ecp5/arch.h +++ b/ecp5/arch.h @@ -29,43 +29,7 @@ NEXTPNR_NAMESPACE_BEGIN /**** Everything in this section must be kept in sync with chipdb.py ****/ -template struct RelPtr -{ - int32_t offset; - - const T *get() const { return reinterpret_cast(reinterpret_cast(this) + offset); } - - const T &operator[](size_t index) const { return get()[index]; } - - const T &operator*() const { return *(get()); } - - const T *operator->() const { return get(); } - - RelPtr(const RelPtr &) = delete; - RelPtr &operator=(const RelPtr &) = delete; -}; - -NPNR_PACKED_STRUCT(template struct RelSlice { - int32_t offset; - uint32_t length; - - const T *get() const { return reinterpret_cast(reinterpret_cast(this) + offset); } - - const T &operator[](size_t index) const - { - NPNR_ASSERT(index < length); - return get()[index]; - } - - const T *begin() const { return get(); } - const T *end() const { return get() + length; } - - const size_t size() const { return length; } - - const T &operator*() const { return *(get()); } - - const T *operator->() const { return get(); } -}); +#include "relptr.h" NPNR_PACKED_STRUCT(struct BelWirePOD { LocationPOD rel_wire_loc; -- cgit v1.2.3