Commit cd78bc9f authored by Dominik Charousset's avatar Dominik Charousset

debug code

parent fc579fa3
...@@ -32,7 +32,9 @@ ...@@ -32,7 +32,9 @@
#define DECORATED_TUPLE_HPP #define DECORATED_TUPLE_HPP
#include <vector> #include <vector>
#include <algorithm>
#include "cppa/config.hpp"
#include "cppa/cow_ptr.hpp" #include "cppa/cow_ptr.hpp"
#include "cppa/ref_counted.hpp" #include "cppa/ref_counted.hpp"
#include "cppa/uniform_type_info.hpp" #include "cppa/uniform_type_info.hpp"
...@@ -58,21 +60,26 @@ class decorated_tuple : public abstract_tuple ...@@ -58,21 +60,26 @@ class decorated_tuple : public abstract_tuple
decorated_tuple(ptr_type&& d, vector_type const& v) decorated_tuple(ptr_type&& d, vector_type const& v)
: m_decorated(std::move(d)), m_mappings(v) : m_decorated(std::move(d)), m_mappings(v)
{ {
CPPA_REQUIRE(v.size() == sizeof...(ElementTypes));
CPPA_REQUIRE(std::max_element(v.begin(), v.end()) < m_decorated->size());
} }
decorated_tuple(ptr_type const& d, vector_type const& v) decorated_tuple(ptr_type const& d, vector_type const& v)
: m_decorated(d), m_mappings(v) : m_decorated(d), m_mappings(v)
{ {
CPPA_REQUIRE(v.size() == sizeof...(ElementTypes));
CPPA_REQUIRE(std::max_element(v.begin(), v.end()) < m_decorated->size());
} }
virtual void* mutable_at(size_t pos) virtual void* mutable_at(size_t pos)
{ {
CPPA_REQUIRE(pos < size());
return m_decorated->mutable_at(m_mappings[pos]); return m_decorated->mutable_at(m_mappings[pos]);
} }
virtual size_t size() const virtual size_t size() const
{ {
return m_mappings.size(); return sizeof...(ElementTypes);
} }
virtual decorated_tuple* copy() const virtual decorated_tuple* copy() const
...@@ -82,11 +89,13 @@ class decorated_tuple : public abstract_tuple ...@@ -82,11 +89,13 @@ class decorated_tuple : public abstract_tuple
virtual void const* at(size_t pos) const virtual void const* at(size_t pos) const
{ {
CPPA_REQUIRE(pos < size());
return m_decorated->at(m_mappings[pos]); return m_decorated->at(m_mappings[pos]);
} }
virtual uniform_type_info const* type_at(size_t pos) const virtual uniform_type_info const* type_at(size_t pos) const
{ {
CPPA_REQUIRE(pos < size());
return m_decorated->type_at(m_mappings[pos]); return m_decorated->type_at(m_mappings[pos]);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment