From db318046c4ed54fa7822b6aec55bec6d427e1e95 Mon Sep 17 00:00:00 2001 From: couriersud Date: Thu, 17 Oct 2019 10:21:00 +0200 Subject: Netlist: code maintenance and bug fixes. (nw) - solver now uses dynamic allocation on systems larger than 512x512 - fixed osx build - moved nl_lists.h classes to plists.h - fixed netlist makefile clint section - readability and typos --- src/lib/netlist/plib/palloc.h | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) (limited to 'src/lib/netlist/plib/palloc.h') diff --git a/src/lib/netlist/plib/palloc.h b/src/lib/netlist/plib/palloc.h index ad42d14c690..5b7d2f59c2d 100644 --- a/src/lib/netlist/plib/palloc.h +++ b/src/lib/netlist/plib/palloc.h @@ -34,8 +34,10 @@ namespace plib { { //using arena_storage_type = P *; using arena_storage_type = typename std::conditional::type; + template typename std::enable_if::type getref(X *x) { return *x;} + template typename std::enable_if::type::is_stateless, X&>::type getref(X &x, Y y = nullptr) @@ -44,13 +46,18 @@ namespace plib { return x; } - constexpr arena_deleter(arena_storage_type a = arena_storage_type()) noexcept + constexpr arena_deleter(arena_storage_type a = arena_storage_type()) : m_a(a) { } +#if 1 + template::value>::type> + arena_deleter(const arena_deleter &rhs) : m_a(rhs.m_a) { } +#else template::value>::type> - arena_deleter(const arena_deleter &rhs) noexcept : m_a(rhs.m_a) { } - + arena_deleter(const arena_deleter &rhs) : m_a(rhs.m_a) { } +#endif void operator()(T *p) //const { /* call destructor */ @@ -80,11 +87,11 @@ namespace plib { template friend class owned_ptr; - owned_ptr(pointer p, bool owned) noexcept + owned_ptr(pointer p, bool owned) : m_ptr(p), m_deleter(), m_is_owned(owned) { } - owned_ptr(pointer p, bool owned, D deleter) noexcept + owned_ptr(pointer p, bool owned, D deleter) : m_ptr(p), m_deleter(deleter), m_is_owned(owned) { } @@ -93,7 +100,7 @@ namespace plib { owned_ptr & operator =(owned_ptr &r) = delete; template - owned_ptr & operator =(owned_ptr &&r) + owned_ptr & operator =(owned_ptr &&r) noexcept { if (m_is_owned && (m_ptr != nullptr)) //delete m_ptr; @@ -122,7 +129,7 @@ namespace plib { m_deleter(m_ptr); m_is_owned = r.m_is_owned; m_ptr = r.m_ptr; - m_deleter = std::move(r.m_deleter); + m_deleter = r.m_deleter; r.m_is_owned = false; r.m_ptr = nullptr; return *this; @@ -197,18 +204,12 @@ namespace plib { ~arena_allocator() noexcept = default; - arena_allocator(const arena_allocator &rhs) noexcept = default; - arena_allocator& operator=(const arena_allocator&) noexcept = delete; - - arena_allocator(arena_allocator&&) noexcept = default; - arena_allocator& operator=(arena_allocator&&) = delete; - arena_allocator(arena_type & a) noexcept : m_a(a) { } template - arena_allocator(const arena_allocator& rhs) noexcept + arena_allocator(const arena_allocator& rhs) : m_a(rhs.m_a) { } @@ -223,7 +224,7 @@ namespace plib { return reinterpret_cast(m_a.allocate(ALIGN, sizeof(T) * n)); } - void deallocate(T* p, std::size_t n) noexcept + void deallocate(T* p, std::size_t n) { unused_var(n); m_a.deallocate(p); -- cgit v1.2.3-70-g09d2