24 #ifndef PPL_DB_Row_defs_hh
25 #define PPL_DB_Row_defs_hh 1
33 #ifndef PPL_DB_ROW_EXTRA_DEBUG
34 #ifdef PPL_ABI_BREAKING_EXTRA_DEBUG
35 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
42 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
43 #define PPL_DB_ROW_EXTRA_DEBUG 1
44 #else // !defined(PPL_ABI_BREAKING_EXTRA_DEBUG)
45 #define PPL_DB_ROW_EXTRA_DEBUG 0
46 #endif // !defined(PPL_ABI_BREAKING_EXTRA_DEBUG)
47 #endif // !defined(PPL_DB_ROW_EXTRA_DEBUG)
50 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
56 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
71 #if PPL_DB_ROW_EXTRA_DEBUG
74 #endif // PPL_DB_ROW_EXTRA_DEBUG
84 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
118 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
119 template <
typename T>
159 template <
typename U>
264 const_iterator
begin()
const;
267 const_iterator
end()
const;
302 #if PPL_DB_ROW_EXTRA_DEBUG
305 #endif // PPL_DB_ROW_EXTRA_DEBUG
310 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
313 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
314 template <
typename T>
317 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
320 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
321 template <
typename T>
322 void iter_swap(
typename std::vector<
DB_Row<T> >::iterator x,
323 typename std::vector<
DB_Row<T> >::iterator y);
325 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
328 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
330 template <
typename T>
334 template <
typename T>
336 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
338 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
343 #ifdef PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS
350 #endif // defined(PPL_DOXYGEN_INCLUDE_IMPLEMENTATION_DETAILS)
351 template <
typename T>
362 static void*
operator new(
size_t fixed_size,
dimension_type capacity);
365 static void operator delete(
void* p);
397 void copy_construct_coefficients(
const Impl& y);
403 template <
typename U>
404 void construct_upward_approximation(
const U& y);
450 #if PPL_CXX_SUPPORTS_ZERO_LENGTH_ARRAYS
464 void copy_construct(
const Impl& y);
470 #endif // !defined(PPL_DB_Row_defs_hh)
void assign(DB_Row &y)
Assigns the implementation of y to *this.
bool operator!=(const Box< ITV > &x, const Box< ITV > &y)
DB_Row_Impl_Handler & operator=(const DB_Row_Impl_Handler &)
Private and unimplemented: copy assignment is not allowed.
void swap(CO_Tree &x, CO_Tree &y)
void m_swap(DB_Row &y)
Swaps *this with y.
size_t dimension_type
An unsigned integral type for representing space dimensions.
A class to define STL const and non-const iterators from pointer types.
memory_size_type total_memory_in_bytes() const
Returns a lower bound to the total size in bytes of the memory occupied by *this. ...
DB_Row & operator=(const DB_Row &y)
Assignment operator.
void expand_within_capacity(dimension_type new_size)
Expands the row to size new_size.
T & operator[](dimension_type k)
Returns a reference to the element of the row indexed by k.
void allocate(dimension_type capacity)
Allocates memory for a default constructed DB_Row object, allowing for capacity coefficients at most...
The base class for the single rows of matrices.
Implementation::Ptr_Iterator< T * > iterator
A (non const) random access iterator to access the row's elements.
Implementation::Ptr_Iterator< const T * > const_iterator
A const random access iterator to access the row's elements.
Enable_If< Is_Native< T >::value, memory_size_type >::type external_memory_in_bytes(const T &)
For native types, returns the size in bytes of the memory managed by the type of the (unused) paramet...
~DB_Row_Impl_Handler()
Destructor.
dimension_type size_
The number of coefficients in the row.
The real implementation of a DB_Row object.
bool OK(dimension_type row_size, dimension_type row_capacity) const
Checks if all the invariants are satisfied.
void shrink(dimension_type new_size)
Shrinks the row by erasing elements at the end.
iterator end()
Returns the past-the-end iterator.
The entire library is confined to this namespace.
void construct_upward_approximation(const DB_Row< U > &y, dimension_type capacity)
Constructs properly a conservative approximation of y.
iterator begin()
Returns the const iterator pointing to the first element, if *this is not empty; otherwise, returns the past-the-end const iterator.
dimension_type size() const
Gives the number of coefficients currently in use.
DB_Row()
Pre-constructs a row: construction must be completed by construct().
bool operator==(const Box< ITV > &x, const Box< ITV > &y)
static dimension_type max_size()
Returns the size() of the largest possible DB_Row.
size_t memory_size_type
An unsigned integral type for representing memory size in bytes.
memory_size_type external_memory_in_bytes() const
Returns a lower bound to the size in bytes of the memory managed by *this.
DB_Row_Impl_Handler()
Default constructor.
Enable_If< Is_Native< T >::value, memory_size_type >::type total_memory_in_bytes(const T &)
For native types, returns the total size in bytes of the memory occupied by the type of the (unused) ...
The handler of the actual DB_Row implementation.
void copy_construct_coefficients(const DB_Row &y)
Exception-safe copy construction mechanism for coefficients.
void construct(dimension_type sz)
Constructs properly a default-constructed element.
Impl * impl
A pointer to the actual implementation.