mirror of
https://github.com/ETLCPP/etl.git
synced 2026-04-30 19:09:10 +08:00
Added repair functions to allow certain containers to copied with low level functions such as memcpy.
This commit is contained in:
parent
d89e244fac
commit
97ead6fc27
@ -1890,6 +1890,13 @@ namespace etl
|
||||
return *this;
|
||||
}
|
||||
|
||||
#ifdef ETL_ISTRING_REPAIR_ENABLE
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
virtual void repair() = 0;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
|
||||
//*********************************************************************
|
||||
@ -1910,6 +1917,14 @@ namespace etl
|
||||
p_buffer[0] = 0;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
void repair(T* p_buffer_)
|
||||
{
|
||||
p_buffer = p_buffer_;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
//*************************************************************************
|
||||
|
||||
@ -73,7 +73,6 @@ namespace etl
|
||||
string(const etl::string<MAX_SIZE_>& other)
|
||||
: istring(reinterpret_cast<value_type*>(&buffer), MAX_SIZE)
|
||||
{
|
||||
istring::initialise();
|
||||
istring::assign(other.begin(), other.end());
|
||||
}
|
||||
|
||||
@ -91,7 +90,6 @@ namespace etl
|
||||
// Set the length to the exact amount.
|
||||
length = (length > MAX_SIZE_) ? MAX_SIZE_ : length;
|
||||
|
||||
istring::initialise();
|
||||
istring::assign(other.begin() + position, other.begin() + position + length);
|
||||
}
|
||||
|
||||
@ -102,7 +100,6 @@ namespace etl
|
||||
string(const value_type* text)
|
||||
: istring(reinterpret_cast<value_type*>(&buffer), MAX_SIZE)
|
||||
{
|
||||
istring::initialise();
|
||||
istring::assign(text, text + etl::char_traits<value_type>::length(text));
|
||||
}
|
||||
|
||||
@ -114,7 +111,6 @@ namespace etl
|
||||
string(const value_type* text, size_t count)
|
||||
: istring(reinterpret_cast<value_type*>(&buffer), MAX_SIZE)
|
||||
{
|
||||
istring::initialise();
|
||||
istring::assign(text, text + count);
|
||||
}
|
||||
|
||||
@ -177,6 +173,14 @@ namespace etl
|
||||
return *this;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
void repair()
|
||||
{
|
||||
etl::istring::repair(buffer);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
value_type buffer[MAX_SIZE + 1];
|
||||
|
||||
46
src/deque.h
46
src/deque.h
@ -113,6 +113,20 @@ namespace etl
|
||||
}
|
||||
};
|
||||
|
||||
//***************************************************************************
|
||||
///\ingroup vector
|
||||
/// Deque incompatible type exception.
|
||||
//***************************************************************************
|
||||
class deque_incompatible_type : public deque_exception
|
||||
{
|
||||
public:
|
||||
|
||||
deque_incompatible_type(string_type file_name, numeric_type line_number)
|
||||
: deque_exception(ETL_ERROR_TEXT("deque:type", ETL_FILE"D"), file_name, line_number)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
//***************************************************************************
|
||||
/// The base class for all templated deque types.
|
||||
///\ingroup deque
|
||||
@ -1358,6 +1372,13 @@ namespace etl
|
||||
return *this;
|
||||
}
|
||||
|
||||
#ifdef ETL_IDEQUE_REPAIR_ENABLE
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
virtual void repair() = 0;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
|
||||
//*************************************************************************
|
||||
@ -1380,7 +1401,18 @@ namespace etl
|
||||
}
|
||||
|
||||
_begin = iterator(0, *this, p_buffer);
|
||||
_end = iterator(0, *this, p_buffer);
|
||||
_end = iterator(0, *this, p_buffer);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
void repair(pointer p_buffer_)
|
||||
{
|
||||
p_buffer = p_buffer_;
|
||||
|
||||
_begin = iterator(_begin.index, *this, p_buffer);
|
||||
_end = iterator(_end.index, *this, p_buffer);
|
||||
}
|
||||
|
||||
iterator _begin; ///Iterator to the _begin item in the deque.
|
||||
@ -1613,6 +1645,18 @@ namespace etl
|
||||
return *this;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
void repair()
|
||||
{
|
||||
#ifdef ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED
|
||||
ETL_ASSERT(std::is_trivially_copyable<T>::value, ETL_ERROR(etl::deque_incompatible_type));
|
||||
#endif
|
||||
|
||||
etl::ideque<T>::repair(reinterpret_cast<T*>(&buffer[0]));
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
/// The uninitialised buffer of T used in the deque.
|
||||
|
||||
@ -89,6 +89,11 @@ SOFTWARE.
|
||||
#define ETL_C11_TYPE_TRAITS_SUPPORTED
|
||||
#endif
|
||||
|
||||
#if (defined(ETL_COMPILER_MICROSOFT) && (_MSC_VER >= 1600)) || \
|
||||
(defined(ETL_COMPILER_GCC) && (__cplusplus >= 201402L))
|
||||
#define ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED
|
||||
#endif
|
||||
|
||||
// Some targets do not support 8bit types.
|
||||
#define ETL_8BIT_SUPPORT (CHAR_BIT == 8)
|
||||
|
||||
|
||||
@ -569,7 +569,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
void fixup(void** p_buffer_)
|
||||
void repair(void** p_buffer_)
|
||||
{
|
||||
uintptr_t length = p_end - p_buffer;
|
||||
|
||||
|
||||
@ -101,6 +101,20 @@ namespace etl
|
||||
}
|
||||
};
|
||||
|
||||
//***************************************************************************
|
||||
///\ingroup vector
|
||||
/// Vector incompatible type exception.
|
||||
//***************************************************************************
|
||||
class vector_incompatible_type : public vector_exception
|
||||
{
|
||||
public:
|
||||
|
||||
vector_incompatible_type(string_type file_name, numeric_type line_number)
|
||||
: vector_exception(ETL_ERROR_TEXT("vector:type", ETL_FILE"D"), file_name, line_number)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
//***************************************************************************
|
||||
///\ingroup vector
|
||||
/// The base class for all templated vector types.
|
||||
|
||||
@ -177,6 +177,14 @@ namespace etl
|
||||
return *this;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
void repair()
|
||||
{
|
||||
etl::iu16string::repair(buffer);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
value_type buffer[MAX_SIZE + 1];
|
||||
|
||||
@ -177,6 +177,14 @@ namespace etl
|
||||
return *this;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
void repair()
|
||||
{
|
||||
etl::iu32string::repair(buffer);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
value_type buffer[MAX_SIZE + 1];
|
||||
|
||||
39
src/vector.h
39
src/vector.h
@ -224,7 +224,7 @@ namespace etl
|
||||
///\param value The value to fill new elements with. Default = default constructed value.
|
||||
//*********************************************************************
|
||||
template <typename U = T>
|
||||
typename etl::enable_if<etl::has_trivial_constructor<U>::value, void>::type
|
||||
typename etl::enable_if<etl::is_trivially_constructible<U>::value, void>::type
|
||||
resize(size_t new_size, T value)
|
||||
{
|
||||
ETL_ASSERT(new_size <= MAX_SIZE, ETL_ERROR(vector_full));
|
||||
@ -258,7 +258,7 @@ namespace etl
|
||||
///\param value The value to fill new elements with. Default = default constructed value.
|
||||
//*********************************************************************
|
||||
template <typename U = T>
|
||||
typename etl::enable_if<!etl::has_trivial_constructor<U>::value, void>::type
|
||||
typename etl::enable_if<!etl::is_trivially_constructible<U>::value, void>::type
|
||||
resize(size_t new_size, T value)
|
||||
{
|
||||
ETL_ASSERT(new_size <= MAX_SIZE, ETL_ERROR(vector_full));
|
||||
@ -399,6 +399,8 @@ namespace etl
|
||||
template <typename TIterator>
|
||||
void assign(TIterator first, TIterator last)
|
||||
{
|
||||
STATIC_ASSERT((etl::is_same<typename etl::remove_cv<T>::type, typename etl::remove_cv<typename std::iterator_traits<TIterator>::value_type>::type>::value), "Iterator type does not match container type");
|
||||
|
||||
#if defined(ETL_DEBUG)
|
||||
difference_type count = std::distance(first, last);
|
||||
ETL_ASSERT(static_cast<size_t>(count) <= MAX_SIZE, ETL_ERROR(vector_full));
|
||||
@ -510,7 +512,7 @@ namespace etl
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
template <typename U = T>
|
||||
typename etl::enable_if<etl::has_trivial_constructor<U>::value, void>::type
|
||||
typename etl::enable_if<etl::is_trivially_constructible<U>::value, void>::type
|
||||
insert(iterator position, size_t n, parameter_t value)
|
||||
{
|
||||
ETL_ASSERT((size() + n) <= MAX_SIZE, ETL_ERROR(vector_full));
|
||||
@ -530,7 +532,7 @@ namespace etl
|
||||
///\param value The value to insert.
|
||||
//*********************************************************************
|
||||
template <typename U = T>
|
||||
typename etl::enable_if<!etl::has_trivial_constructor<U>::value, void>::type
|
||||
typename etl::enable_if<!etl::is_trivially_constructible<U>::value, void>::type
|
||||
insert(iterator position, size_t n, parameter_t value)
|
||||
{
|
||||
ETL_ASSERT((size() + n) <= MAX_SIZE, ETL_ERROR(vector_full));
|
||||
@ -598,7 +600,7 @@ namespace etl
|
||||
///\param last The last + 1 element to add.
|
||||
//*********************************************************************
|
||||
template <class TIterator, typename U = T>
|
||||
typename etl::enable_if<etl::has_trivial_constructor<U>::value, void>::type
|
||||
typename etl::enable_if<etl::is_trivially_constructible<U>::value, void>::type
|
||||
insert(iterator position, TIterator first, TIterator last)
|
||||
{
|
||||
size_t count = std::distance(first, last);
|
||||
@ -628,7 +630,7 @@ namespace etl
|
||||
///\param last The last + 1 element to add.
|
||||
//*********************************************************************
|
||||
template <class TIterator, typename U = T>
|
||||
typename etl::enable_if<!etl::has_trivial_constructor<U>::value, void>::type
|
||||
typename etl::enable_if<!etl::is_trivially_constructible<U>::value, void>::type
|
||||
insert(iterator position, TIterator first, TIterator last)
|
||||
{
|
||||
size_t count = std::distance(first, last);
|
||||
@ -711,7 +713,7 @@ namespace etl
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
template <typename U = T>
|
||||
typename etl::enable_if<etl::has_trivial_constructor<U>::value, iterator>::type
|
||||
typename etl::enable_if<etl::is_trivially_constructible<U>::value, iterator>::type
|
||||
erase(iterator first, iterator last)
|
||||
{
|
||||
if (first == begin() && last == end())
|
||||
@ -738,7 +740,7 @@ namespace etl
|
||||
///\return An iterator pointing to the element that followed the erased element.
|
||||
//*********************************************************************
|
||||
template <typename U = T>
|
||||
typename etl::enable_if<!etl::has_trivial_constructor<U>::value, iterator>::type
|
||||
typename etl::enable_if<!etl::is_trivially_constructible<U>::value, iterator>::type
|
||||
erase(iterator first, iterator last)
|
||||
{
|
||||
if (first == begin() && last == end())
|
||||
@ -811,6 +813,13 @@ namespace etl
|
||||
return max_size() - size();
|
||||
}
|
||||
|
||||
#ifdef ETL_IVECTOR_REPAIR_ENABLE
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
virtual void repair() = 0;
|
||||
#endif
|
||||
|
||||
protected:
|
||||
|
||||
//*********************************************************************
|
||||
@ -840,7 +849,7 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
void fixup(T* p_buffer_)
|
||||
void repair(T* p_buffer_)
|
||||
{
|
||||
uintptr_t length = p_end - p_buffer;
|
||||
p_buffer = p_buffer_;
|
||||
@ -1065,13 +1074,13 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
void fixup()
|
||||
void repair()
|
||||
{
|
||||
#ifdef ETL_C11_TYPE_TRAITS_SUPPORTED
|
||||
ETL_STATIC_ASSERT(std::is_trivially_copyable<T>::value, "The stored type is not compatible with a low level copy");
|
||||
#ifdef ETL_C11_TYPE_TRAITS_IS_TRIVIAL_SUPPORTED
|
||||
ETL_ASSERT(std::is_trivially_copyable<T>::value, ETL_ERROR(etl::vector_incompatible_type));
|
||||
#endif
|
||||
|
||||
etl::ivector<T>::fixup(buffer);
|
||||
etl::ivector<T>::repair(buffer);
|
||||
}
|
||||
|
||||
private:
|
||||
@ -1162,9 +1171,9 @@ namespace etl
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
void fixup()
|
||||
void repair()
|
||||
{
|
||||
etl::ivector<T*>::fixup(buffer);
|
||||
etl::ivector<T*>::repair(buffer);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
@ -178,6 +178,14 @@ namespace etl
|
||||
return *this;
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
/// Fix the internal pointers after a low level memory copy.
|
||||
//*************************************************************************
|
||||
void repair()
|
||||
{
|
||||
etl::iwstring::repair(buffer);
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
value_type buffer[MAX_SIZE + 1];
|
||||
|
||||
@ -3289,7 +3289,7 @@
|
||||
"CurrentTest.h"
|
||||
"ReportAssertImpl.h"
|
||||
|
||||
1494283539 source:d:\users\john\documents\programming\github\etl\test\test_algorithm.cpp
|
||||
1497706369 source:d:\users\john\documents\programming\github\etl\test\test_algorithm.cpp
|
||||
"UnitTest++.h"
|
||||
"algorithm.h"
|
||||
"container.h"
|
||||
@ -3315,7 +3315,7 @@
|
||||
<stddef.h>
|
||||
<iterator>
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_alignment.cpp
|
||||
1496992773 source:d:\users\john\documents\programming\github\etl\test\test_alignment.cpp
|
||||
"UnitTest++.h"
|
||||
"alignment.h"
|
||||
"type_traits.h"
|
||||
@ -3423,7 +3423,7 @@
|
||||
"exception.h"
|
||||
"error_handler.h"
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_bitset.cpp
|
||||
1497690249 source:d:\users\john\documents\programming\github\etl\test\test_bitset.cpp
|
||||
"UnitTest++.h"
|
||||
<limits>
|
||||
<type_traits>
|
||||
@ -3538,7 +3538,7 @@
|
||||
"static_assert.h"
|
||||
"exception.h"
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_deque.cpp
|
||||
1497708284 source:d:\users\john\documents\programming\github\etl\test\test_deque.cpp
|
||||
"UnitTest++.h"
|
||||
"ExtraCheckMacros.h"
|
||||
"deque.h"
|
||||
@ -3548,6 +3548,7 @@
|
||||
<algorithm>
|
||||
<iostream>
|
||||
<numeric>
|
||||
<cstring>
|
||||
|
||||
1494277861 d:\users\john\documents\programming\github\etl\test\extracheckmacros.h
|
||||
"../unittest-cpp/UnitTest++/HelperMacros.h"
|
||||
@ -3582,7 +3583,7 @@
|
||||
<stddef.h>
|
||||
"exception.h"
|
||||
|
||||
1488104217 d:\users\john\documents\programming\github\etl\test\data.h
|
||||
1497685058 d:\users\john\documents\programming\github\etl\test\data.h
|
||||
<ostream>
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_endian.cpp
|
||||
@ -3612,7 +3613,7 @@
|
||||
<string>
|
||||
"exception.h"
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_flat_map.cpp
|
||||
1497306512 source:d:\users\john\documents\programming\github\etl\test\test_flat_map.cpp
|
||||
"UnitTest++.h"
|
||||
<map>
|
||||
<array>
|
||||
@ -3726,7 +3727,7 @@
|
||||
|
||||
1482623723 v_1.h"
|
||||
|
||||
1494283539 source:d:\users\john\documents\programming\github\etl\test\test_forward_list.cpp
|
||||
1497685058 source:d:\users\john\documents\programming\github\etl\test\test_forward_list.cpp
|
||||
"UnitTest++.h"
|
||||
"ExtraCheckMacros.h"
|
||||
"data.h"
|
||||
@ -3783,7 +3784,7 @@
|
||||
|
||||
1479511692 nction.h"
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_functional.cpp
|
||||
1497685058 source:d:\users\john\documents\programming\github\etl\test\test_functional.cpp
|
||||
"UnitTest++.h"
|
||||
"functional.h"
|
||||
<list>
|
||||
@ -3843,7 +3844,7 @@
|
||||
1450265856 d:\users\john\documents\programming\github\etl\largest.h
|
||||
"type_traits.h"
|
||||
|
||||
1494283539 source:d:\users\john\documents\programming\github\etl\test\test_list.cpp
|
||||
1497685059 source:d:\users\john\documents\programming\github\etl\test\test_list.cpp
|
||||
"UnitTest++.h"
|
||||
"ExtraCheckMacros.h"
|
||||
"list.h"
|
||||
@ -3968,11 +3969,12 @@
|
||||
<stddef.h>
|
||||
"exception.h"
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_vector.cpp
|
||||
1497712887 source:d:\users\john\documents\programming\github\etl\test\test_vector.cpp
|
||||
"UnitTest++.h"
|
||||
<vector>
|
||||
<array>
|
||||
<algorithm>
|
||||
<cstring>
|
||||
"vector.h"
|
||||
|
||||
1479511692 ctor.h"
|
||||
@ -5230,7 +5232,7 @@
|
||||
|
||||
1452516033 /home/jwellbelove/Programming/etl/visitor.h
|
||||
|
||||
1494283539 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_forward_list.cpp
|
||||
1497685059 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_forward_list.cpp
|
||||
"UnitTest++.h"
|
||||
"ExtraCheckMacros.h"
|
||||
"data.h"
|
||||
@ -5309,7 +5311,7 @@
|
||||
"iterator.h"
|
||||
"type_traits.h"
|
||||
|
||||
1494277861 d:\users\john\documents\programming\github\etl\src\type_traits.h
|
||||
1497689716 d:\users\john\documents\programming\github\etl\src\type_traits.h
|
||||
<stddef.h>
|
||||
"platform.h"
|
||||
"nullptr.h"
|
||||
@ -5318,7 +5320,7 @@
|
||||
<stddef.h>
|
||||
<iterator>
|
||||
|
||||
1492164295 d:\users\john\documents\programming\github\etl\src\alignment.h
|
||||
1496993010 d:\users\john\documents\programming\github\etl\src\alignment.h
|
||||
<stdint.h>
|
||||
"type_traits.h"
|
||||
"static_assert.h"
|
||||
@ -5326,7 +5328,7 @@
|
||||
1482948766 d:\users\john\documents\programming\github\etl\src\static_assert.h
|
||||
"platform.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\array.h
|
||||
1497306512 d:\users\john\documents\programming\github\etl\src\array.h
|
||||
<iterator>
|
||||
<functional>
|
||||
<algorithm>
|
||||
@ -5370,7 +5372,7 @@
|
||||
<stdint.h>
|
||||
"integral_limits.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\bitset.h
|
||||
1497685058 d:\users\john\documents\programming\github\etl\src\bitset.h
|
||||
<algorithm>
|
||||
<iterator>
|
||||
<string.h>
|
||||
@ -5480,7 +5482,7 @@
|
||||
"static_assert.h"
|
||||
"exception.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\deque.h
|
||||
1497708272 d:\users\john\documents\programming\github\etl\src\deque.h
|
||||
<stddef.h>
|
||||
<stdint.h>
|
||||
<iterator>
|
||||
@ -5512,22 +5514,9 @@
|
||||
1482948766 d:\users\john\documents\programming\github\etl\src\fixed_iterator.h
|
||||
<iterator>
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\flat_map.h
|
||||
<stddef.h>
|
||||
<iterator>
|
||||
<functional>
|
||||
<algorithm>
|
||||
<functional>
|
||||
<utility>
|
||||
"platform.h"
|
||||
"vector.h"
|
||||
1497712590 d:\users\john\documents\programming\github\etl\src\flat_map.h
|
||||
"reference_flat_map.h"
|
||||
"pool.h"
|
||||
"exception.h"
|
||||
"vector.h"
|
||||
"error_handler.h"
|
||||
"debug_count.h"
|
||||
"type_traits.h"
|
||||
"parameter_type.h"
|
||||
|
||||
1482748252 d:\users\john\documents\programming\github\etl\src\iflat_map.h
|
||||
<iterator>
|
||||
@ -5562,13 +5551,14 @@
|
||||
|
||||
1482748239 vectorpointer.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\private\vector_base.h
|
||||
1497705958 d:\users\john\documents\programming\github\etl\src\private\vector_base.h
|
||||
<stddef.h>
|
||||
"../exception.h"
|
||||
"../error_handler.h"
|
||||
"../debug_count.h"
|
||||
|
||||
1494277861 d:\users\john\documents\programming\github\etl\src\vector.h
|
||||
1497712492 d:\users\john\documents\programming\github\etl\src\vector.h
|
||||
<type_traits>
|
||||
<stddef.h>
|
||||
<stdint.h>
|
||||
<iterator>
|
||||
@ -5624,7 +5614,7 @@
|
||||
"../ivector.h"
|
||||
"../error_handler.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\forward_list.h
|
||||
1497685058 d:\users\john\documents\programming\github\etl\src\forward_list.h
|
||||
<iterator>
|
||||
<algorithm>
|
||||
<functional>
|
||||
@ -5680,7 +5670,7 @@
|
||||
"../exception.h"
|
||||
"../error_handler.h"
|
||||
|
||||
1479515290 d:\users\john\documents\programming\github\etl\src\functional.h
|
||||
1494763312 d:\users\john\documents\programming\github\etl\src\functional.h
|
||||
|
||||
1482948766 d:\users\john\documents\programming\github\etl\src\hash.h
|
||||
<stdint.h>
|
||||
@ -5691,7 +5681,7 @@
|
||||
|
||||
1479515290 d:\users\john\documents\programming\github\etl\src\instance_count.h
|
||||
|
||||
1488104217 d:\users\john\documents\programming\github\etl\src\intrusive_forward_list.h
|
||||
1497685058 d:\users\john\documents\programming\github\etl\src\intrusive_forward_list.h
|
||||
"platform.h"
|
||||
<iterator>
|
||||
<algorithm>
|
||||
@ -5715,7 +5705,7 @@
|
||||
"exception.h"
|
||||
"error_handler.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\io_port.h
|
||||
1497308571 d:\users\john\documents\programming\github\etl\src\io_port.h
|
||||
<stdint.h>
|
||||
<iterator>
|
||||
"nullptr.h"
|
||||
@ -5724,7 +5714,7 @@
|
||||
1485905321 d:\users\john\documents\programming\github\etl\src\largest.h
|
||||
"type_traits.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\list.h
|
||||
1497685058 d:\users\john\documents\programming\github\etl\src\list.h
|
||||
<iterator>
|
||||
<algorithm>
|
||||
<functional>
|
||||
@ -5757,7 +5747,7 @@
|
||||
"../exception.h"
|
||||
"../error_handler.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\map.h
|
||||
1497306512 d:\users\john\documents\programming\github\etl\src\map.h
|
||||
<stddef.h>
|
||||
<iterator>
|
||||
<functional>
|
||||
@ -5835,7 +5825,7 @@
|
||||
"../exception.h"
|
||||
"../error_handler.h"
|
||||
|
||||
1494277861 d:\users\john\documents\programming\github\etl\src\set.h
|
||||
1497685058 d:\users\john\documents\programming\github\etl\src\set.h
|
||||
<stddef.h>
|
||||
<iterator>
|
||||
<functional>
|
||||
@ -5908,7 +5898,7 @@
|
||||
|
||||
1482624915 ordered_map.h"
|
||||
|
||||
1494277861 d:\users\john\documents\programming\github\etl\src\unordered_map.h
|
||||
1497306512 d:\users\john\documents\programming\github\etl\src\unordered_map.h
|
||||
<stddef.h>
|
||||
<iterator>
|
||||
<functional>
|
||||
@ -5961,7 +5951,7 @@
|
||||
|
||||
1479515291 d:\users\john\documents\programming\github\etl\src\visitor.h
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\platform.h
|
||||
1497712972 d:\users\john\documents\programming\github\etl\src\platform.h
|
||||
<stdint.h>
|
||||
<limits.h>
|
||||
|
||||
@ -5997,7 +5987,7 @@
|
||||
|
||||
1479511691 at_multimap.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\flat_multimap.h
|
||||
1497306512 d:\users\john\documents\programming\github\etl\src\flat_multimap.h
|
||||
<stddef.h>
|
||||
<iterator>
|
||||
<algorithm>
|
||||
@ -6087,7 +6077,7 @@
|
||||
|
||||
1482358550 trusive_links.h"
|
||||
|
||||
1494283539 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_list.cpp
|
||||
1497685059 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_list.cpp
|
||||
"UnitTest++.h"
|
||||
"ExtraCheckMacros.h"
|
||||
"data.h"
|
||||
@ -6098,7 +6088,7 @@
|
||||
<vector>
|
||||
<string>
|
||||
|
||||
1488104217 d:\users\john\documents\programming\github\etl\src\intrusive_list.h
|
||||
1497685058 d:\users\john\documents\programming\github\etl\src\intrusive_list.h
|
||||
"platform.h"
|
||||
<iterator>
|
||||
<algorithm>
|
||||
@ -6144,7 +6134,7 @@
|
||||
|
||||
1479511692 ltimap.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\multimap.h
|
||||
1497306512 d:\users\john\documents\programming\github\etl\src\multimap.h
|
||||
<stddef.h>
|
||||
<iterator>
|
||||
<functional>
|
||||
@ -6189,7 +6179,7 @@
|
||||
|
||||
1479511692 ltiset.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\multiset.h
|
||||
1497306512 d:\users\john\documents\programming\github\etl\src\multiset.h
|
||||
<stddef.h>
|
||||
<iterator>
|
||||
<functional>
|
||||
@ -6301,7 +6291,7 @@
|
||||
|
||||
1482625301 ordered_multimap.h"
|
||||
|
||||
1494277861 d:\users\john\documents\programming\github\etl\src\unordered_multimap.h
|
||||
1497306512 d:\users\john\documents\programming\github\etl\src\unordered_multimap.h
|
||||
<stddef.h>
|
||||
<iterator>
|
||||
<functional>
|
||||
@ -6354,7 +6344,7 @@
|
||||
"unordered_multiset.h"
|
||||
"checksum.h"
|
||||
|
||||
1494277861 d:\users\john\documents\programming\github\etl\src\unordered_multiset.h
|
||||
1497306512 d:\users\john\documents\programming\github\etl\src\unordered_multiset.h
|
||||
<stddef.h>
|
||||
<iterator>
|
||||
<functional>
|
||||
@ -6404,7 +6394,7 @@
|
||||
"unordered_set.h"
|
||||
"checksum.h"
|
||||
|
||||
1494277861 d:\users\john\documents\programming\github\etl\src\unordered_set.h
|
||||
1497306512 d:\users\john\documents\programming\github\etl\src\unordered_set.h
|
||||
<stddef.h>
|
||||
<iterator>
|
||||
<functional>
|
||||
@ -6480,7 +6470,7 @@
|
||||
|
||||
1482079098 or.h"
|
||||
|
||||
1494277861 d:\users\john\documents\programming\github\etl\src\private\pvoidvector.h
|
||||
1497685165 d:\users\john\documents\programming\github\etl\src\private\pvoidvector.h
|
||||
<iterator>
|
||||
<algorithm>
|
||||
<functional>
|
||||
@ -6530,7 +6520,7 @@
|
||||
"error_handler.h"
|
||||
"intrusive_links.h"
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_string_char.cpp
|
||||
1497705758 source:d:\users\john\documents\programming\github\etl\test\test_string_char.cpp
|
||||
"UnitTest++.h"
|
||||
<string>
|
||||
<array>
|
||||
@ -6539,12 +6529,12 @@
|
||||
|
||||
1482181573 tring.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\cstring.h
|
||||
1497690092 d:\users\john\documents\programming\github\etl\src\cstring.h
|
||||
"platform.h"
|
||||
"basic_string.h"
|
||||
"hash.h"
|
||||
|
||||
1494277860 d:\users\john\documents\programming\github\etl\src\basic_string.h
|
||||
1497702020 d:\users\john\documents\programming\github\etl\src\basic_string.h
|
||||
<stddef.h>
|
||||
<stdint.h>
|
||||
<iterator>
|
||||
@ -6583,7 +6573,7 @@
|
||||
"../exception.h"
|
||||
"../error_handler.h"
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_string_u16.cpp
|
||||
1497705758 source:d:\users\john\documents\programming\github\etl\test\test_string_u16.cpp
|
||||
"UnitTest++.h"
|
||||
<string>
|
||||
<array>
|
||||
@ -6592,12 +6582,12 @@
|
||||
|
||||
1482099557 6string.h"
|
||||
|
||||
1482948766 d:\users\john\documents\programming\github\etl\src\u16string.h
|
||||
1497690510 d:\users\john\documents\programming\github\etl\src\u16string.h
|
||||
"platform.h"
|
||||
"basic_string.h"
|
||||
"hash.h"
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_string_u32.cpp
|
||||
1497705758 source:d:\users\john\documents\programming\github\etl\test\test_string_u32.cpp
|
||||
"UnitTest++.h"
|
||||
<string>
|
||||
<array>
|
||||
@ -6606,19 +6596,19 @@
|
||||
|
||||
1482099666 2string.h"
|
||||
|
||||
1482948766 d:\users\john\documents\programming\github\etl\src\u32string.h
|
||||
1497690510 d:\users\john\documents\programming\github\etl\src\u32string.h
|
||||
"platform.h"
|
||||
"basic_string.h"
|
||||
"hash.h"
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_string_wchar_t.cpp
|
||||
1497705758 source:d:\users\john\documents\programming\github\etl\test\test_string_wchar_t.cpp
|
||||
"UnitTest++.h"
|
||||
<string>
|
||||
<array>
|
||||
<algorithm>
|
||||
"wstring.h"
|
||||
|
||||
1482948766 d:\users\john\documents\programming\github\etl\src\wstring.h
|
||||
1497690510 d:\users\john\documents\programming\github\etl\src\wstring.h
|
||||
"platform.h"
|
||||
"basic_string.h"
|
||||
"hash.h"
|
||||
@ -6641,11 +6631,12 @@
|
||||
1482948766 d:\users\john\documents\programming\github\etl\src\utility.h
|
||||
"type_traits.h"
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_vector_pointer.cpp
|
||||
1497712935 source:d:\users\john\documents\programming\github\etl\test\test_vector_pointer.cpp
|
||||
"UnitTest++.h"
|
||||
<vector>
|
||||
<array>
|
||||
<algorithm>
|
||||
<cstring>
|
||||
"vector.h"
|
||||
|
||||
1482076051 source:/mnt/hgfs/Programming/GitHub/unittest-cpp/UnitTest++/RequiredCheckException.cpp
|
||||
@ -7862,7 +7853,7 @@
|
||||
<iterator>
|
||||
"type_traits.h"
|
||||
|
||||
1488104217 d:\users\john\documents\programming\github\etl\src\memory.h
|
||||
1497689774 d:\users\john\documents\programming\github\etl\src\memory.h
|
||||
<iterator>
|
||||
<algorithm>
|
||||
"type_traits.h"
|
||||
@ -7981,7 +7972,7 @@
|
||||
<stdint.h>
|
||||
<vector>
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_random.cpp
|
||||
1497684591 source:d:\users\john\documents\programming\github\etl\test\test_random.cpp
|
||||
"UnitTest++.h"
|
||||
<stdint.h>
|
||||
"random.h"
|
||||
@ -7989,7 +7980,7 @@
|
||||
<algorithm>
|
||||
<fstream>
|
||||
|
||||
1494277861 source:d:\users\john\documents\programming\github\etl\test\test_vector_non_trivial.cpp
|
||||
1497685854 source:d:\users\john\documents\programming\github\etl\test\test_vector_non_trivial.cpp
|
||||
"UnitTest++.h"
|
||||
<vector>
|
||||
<array>
|
||||
@ -8173,7 +8164,7 @@
|
||||
"HelperMacros.h"
|
||||
<csetjmp>
|
||||
|
||||
1494362778 source:d:\users\john\documents\programming\github\etl\test\test_reference_flat_map.cpp
|
||||
1497308006 source:d:\users\john\documents\programming\github\etl\test\test_reference_flat_map.cpp
|
||||
"UnitTest++.h"
|
||||
<map>
|
||||
<array>
|
||||
@ -8186,13 +8177,18 @@
|
||||
"data.h"
|
||||
"reference_flat_map.h"
|
||||
|
||||
1494362778 d:\users\john\documents\programming\github\etl\src\reference_flat_map.h
|
||||
1497308006 d:\users\john\documents\programming\github\etl\src\reference_flat_map.h
|
||||
<stddef.h>
|
||||
"exception.h"
|
||||
"platform.h"
|
||||
"vector.h"
|
||||
"error_handler.h"
|
||||
"debug_count.h"
|
||||
"type_traits.h"
|
||||
"parameter_type.h"
|
||||
"exception.h"
|
||||
"static_assert.h"
|
||||
|
||||
1494362778 source:d:\users\john\documents\programming\github\etl\test\test_reference_flat_multimap.cpp
|
||||
1494363271 source:d:\users\john\documents\programming\github\etl\test\test_reference_flat_multimap.cpp
|
||||
"UnitTest++.h"
|
||||
<map>
|
||||
<array>
|
||||
@ -8204,14 +8200,14 @@
|
||||
"data.h"
|
||||
"reference_flat_multimap.h"
|
||||
|
||||
1494362778 d:\users\john\documents\programming\github\etl\src\reference_flat_multimap.h
|
||||
1497685058 d:\users\john\documents\programming\github\etl\src\reference_flat_multimap.h
|
||||
<stddef.h>
|
||||
"exception.h"
|
||||
"error_handler.h"
|
||||
"debug_count.h"
|
||||
"vector.h"
|
||||
|
||||
1494362778 source:d:\users\john\documents\programming\github\etl\test\test_reference_flat_multiset.cpp
|
||||
1494363271 source:d:\users\john\documents\programming\github\etl\test\test_reference_flat_multiset.cpp
|
||||
"UnitTest++.h"
|
||||
<set>
|
||||
<array>
|
||||
@ -8223,7 +8219,7 @@
|
||||
"data.h"
|
||||
"reference_flat_multiset.h"
|
||||
|
||||
1494362778 d:\users\john\documents\programming\github\etl\src\reference_flat_multiset.h
|
||||
1494363271 d:\users\john\documents\programming\github\etl\src\reference_flat_multiset.h
|
||||
<iterator>
|
||||
<algorithm>
|
||||
<functional>
|
||||
@ -8236,7 +8232,7 @@
|
||||
"error_handler.h"
|
||||
"exception.h"
|
||||
|
||||
1494362778 source:d:\users\john\documents\programming\github\etl\test\test_reference_flat_set.cpp
|
||||
1494363271 source:d:\users\john\documents\programming\github\etl\test\test_reference_flat_set.cpp
|
||||
"UnitTest++.h"
|
||||
<set>
|
||||
<array>
|
||||
@ -8248,7 +8244,7 @@
|
||||
"data.h"
|
||||
"reference_flat_set.h"
|
||||
|
||||
1494362778 d:\users\john\documents\programming\github\etl\src\reference_flat_set.h
|
||||
1494363271 d:\users\john\documents\programming\github\etl\src\reference_flat_set.h
|
||||
<iterator>
|
||||
<algorithm>
|
||||
<functional>
|
||||
|
||||
@ -2,19 +2,94 @@
|
||||
<CodeBlocks_layout_file>
|
||||
<FileVersion major="1" minor="0" />
|
||||
<ActiveTarget name="Windows" />
|
||||
<File name="..\test_intrusive_forward_list.cpp" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="29068" topLine="722" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\algorithm.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\variant.h" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="36839" topLine="839" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\Test.cpp" open="0" top="0" tabpos="19" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="699" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\CurrentTest.cpp" open="0" top="0" tabpos="26" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="368" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\intrusive_flat_multimap.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3269" topLine="248" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\binary.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="14624" topLine="373" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_flat_multiset.cpp" open="0" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3011" topLine="58" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_flat_set.cpp" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="11541" topLine="359" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\TestMacros.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1865" topLine="28" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_flat_map.cpp" open="0" top="0" tabpos="20" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="18781" topLine="559" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\iterator.h" open="0" top="0" tabpos="17" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1557" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\intrusive_flat_multiset.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7605" topLine="248" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_flat_multimap.cpp" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3425" topLine="85" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_iterator.cpp" open="0" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="..\..\src\unordered_set.h" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6722" topLine="118" />
|
||||
<Cursor1 position="22041" topLine="620" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\TestRunner.h" open="0" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="..\..\src\list.h" open="0" top="0" tabpos="22" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="156" topLine="0" />
|
||||
<Cursor1 position="35098" topLine="1063" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\vector.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="23033" topLine="564" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\private\pvoidvector.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="18115" topLine="443" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\intrusive_flat_map.h" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -22,9 +97,89 @@
|
||||
<Cursor1 position="4065" topLine="242" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\CurrentTest.cpp" open="0" top="0" tabpos="26" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="..\test_list.cpp" open="0" top="0" tabpos="27" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="368" topLine="0" />
|
||||
<Cursor1 position="17914" topLine="493" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\TestResults.cpp" open="0" top="0" tabpos="24" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="537" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_forward_list.cpp" open="1" top="1" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="30054" topLine="812" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\TestReporterStdout.cpp" open="0" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="883" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_map.cpp" open="0" top="0" tabpos="19" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6368" topLine="164" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_iterator.cpp" open="0" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6722" topLine="118" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_algorithm.cpp" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="11590" topLine="274" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\ExecuteTest.h" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="426" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_memory.cpp" open="0" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="15446" topLine="391" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\forward_list.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="31509" topLine="979" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\TestRunner.cpp" open="0" top="0" tabpos="20" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2279" topLine="25" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\intrusive_flat_set.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7487" topLine="243" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\unordered_multimap.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="22871" topLine="625" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\integral_limits.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7252" topLine="152" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\unordered_multiset.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="22451" topLine="619" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\Checks.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="469" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\Win32\TimeHelpers.cpp" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="103" topLine="6" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\Config.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -37,64 +192,14 @@
|
||||
<Cursor1 position="27580" topLine="735" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_flat_set.cpp" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="..\test_io_port.cpp" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="11541" topLine="359" />
|
||||
<Cursor1 position="1452" topLine="3" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\ExecuteTest.h" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\TestRunner.h" open="0" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="426" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\intrusive_flat_set.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7487" topLine="243" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\TestResults.cpp" open="0" top="0" tabpos="24" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="537" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\intrusive_flat_multimap.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3269" topLine="248" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_flat_map.cpp" open="0" top="0" tabpos="20" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="18781" topLine="559" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\binary.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="14624" topLine="373" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\list.h" open="0" top="0" tabpos="22" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="35098" topLine="1063" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_memory.cpp" open="0" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="15446" topLine="391" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\TestReporterStdout.cpp" open="0" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="883" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_list.cpp" open="0" top="0" tabpos="27" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="17914" topLine="493" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_flat_multiset.cpp" open="0" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="3011" topLine="58" />
|
||||
<Cursor1 position="156" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\main.cpp" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
@ -102,74 +207,4 @@
|
||||
<Cursor1 position="141" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\Win32\TimeHelpers.cpp" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="103" topLine="6" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_io_port.cpp" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1452" topLine="3" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\integral_limits.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7252" topLine="152" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_intrusive_forward_list.cpp" open="0" top="0" tabpos="26" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="27667" topLine="693" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\TestMacros.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1865" topLine="28" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_map.cpp" open="0" top="0" tabpos="19" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="6368" topLine="164" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\TestRunner.cpp" open="0" top="0" tabpos="20" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="2279" topLine="25" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\Test.cpp" open="0" top="0" tabpos="19" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="699" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_algorithm.cpp" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="11590" topLine="274" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\..\unittest-cpp\UnitTest++\Checks.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="469" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\iterator.h" open="0" top="0" tabpos="17" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="1557" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\algorithm.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="0" topLine="0" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\..\src\intrusive_flat_multiset.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="7605" topLine="248" />
|
||||
</Cursor>
|
||||
</File>
|
||||
<File name="..\test_forward_list.cpp" open="0" top="0" tabpos="23" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
|
||||
<Cursor>
|
||||
<Cursor1 position="8440" topLine="209" />
|
||||
</Cursor>
|
||||
</File>
|
||||
</CodeBlocks_layout_file>
|
||||
|
||||
@ -38,6 +38,7 @@ SOFTWARE.
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <numeric>
|
||||
#include <cstring>
|
||||
|
||||
namespace
|
||||
{
|
||||
@ -48,6 +49,8 @@ namespace
|
||||
typedef TestDataDC<std::string> DC;
|
||||
typedef TestDataNDC<std::string> NDC;
|
||||
|
||||
typedef etl::deque<int, SIZE> DataInt;
|
||||
typedef etl::ideque<int> IDataInt;
|
||||
typedef etl::deque<DC, SIZE> DataDC;
|
||||
typedef etl::deque<NDC, SIZE> DataNDC;
|
||||
typedef etl::ideque<NDC> IDataNDC;
|
||||
@ -82,6 +85,9 @@ namespace
|
||||
std::vector<NDC> initial_data_small = { N0, N1, N2, N3, N4, N5, N6, N7, N8, N9 };
|
||||
std::vector<NDC> insert_data = { N10, N11, N12, N13, N14 };
|
||||
std::vector<DC> initial_data_dc = { DC("0"), DC("1"), DC("2"), DC("3"), DC("4"), DC("5"), DC("6"), DC("7"), DC("8"), DC("9"), DC("10"), DC("11"), DC("12"), DC("13") };
|
||||
std::vector<int> int_data1 = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 };
|
||||
std::vector<int> int_data2 = { 15, 16, 17, 18 };
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_constructor)
|
||||
@ -1514,5 +1520,81 @@ namespace
|
||||
CHECK(data.rbegin() == data.rend());
|
||||
CHECK(data.crbegin() == data.crend());
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_memcpy_repair)
|
||||
{
|
||||
DataInt data(int_data1.begin(), int_data1.end());
|
||||
data.pop_front();
|
||||
data.pop_front();
|
||||
data.pop_front();
|
||||
data.pop_front();
|
||||
data.insert(data.end(), int_data2.begin(), int_data2.end());
|
||||
|
||||
char buffer[sizeof(DataInt)];
|
||||
|
||||
memcpy(&buffer, &data, sizeof(data));
|
||||
|
||||
DataInt& rdata(*reinterpret_cast<DataInt*>(buffer));
|
||||
rdata.repair();
|
||||
|
||||
// Check that the memcpy'd vector is the same.
|
||||
CHECK_EQUAL(data.size(), rdata.size());
|
||||
CHECK(!rdata.empty());
|
||||
CHECK(rdata.full());
|
||||
|
||||
bool is_equal = std::equal(rdata.begin(),
|
||||
rdata.end(),
|
||||
data.begin());
|
||||
|
||||
CHECK(is_equal);
|
||||
|
||||
// Modify the original and check that the memcpy'd vector is not the same.
|
||||
std::reverse(data.begin(), data.end());
|
||||
|
||||
is_equal = std::equal(rdata.begin(),
|
||||
rdata.end(),
|
||||
data.begin());
|
||||
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_memcpy_repair_virtual)
|
||||
{
|
||||
DataInt data(int_data1.begin(), int_data1.end());
|
||||
data.pop_front();
|
||||
data.pop_front();
|
||||
data.pop_front();
|
||||
data.pop_front();
|
||||
data.insert(data.end(), int_data2.begin(), int_data2.end());
|
||||
|
||||
char buffer[sizeof(DataInt)];
|
||||
|
||||
memcpy(&buffer, &data, sizeof(data));
|
||||
|
||||
IDataInt& idata(*reinterpret_cast<DataInt*>(buffer));
|
||||
idata.repair();
|
||||
|
||||
// Check that the memcpy'd vector is the same.
|
||||
CHECK_EQUAL(data.size(), idata.size());
|
||||
CHECK(!idata.empty());
|
||||
CHECK(idata.full());
|
||||
|
||||
bool is_equal = std::equal(idata.begin(),
|
||||
idata.end(),
|
||||
data.begin());
|
||||
|
||||
CHECK(is_equal);
|
||||
|
||||
// Modify the original and check that the memcpy'd vector is not the same.
|
||||
std::reverse(data.begin(), data.end());
|
||||
|
||||
is_equal = std::equal(idata.begin(),
|
||||
idata.end(),
|
||||
data.begin());
|
||||
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -3019,7 +3019,7 @@ namespace
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_memcpy)
|
||||
TEST_FIXTURE(SetupFixture, test_memcpy_repair)
|
||||
{
|
||||
Text text;
|
||||
|
||||
@ -3029,14 +3029,42 @@ namespace
|
||||
|
||||
memcpy(&buffer, &text, sizeof(text));
|
||||
|
||||
Text& text2(*reinterpret_cast<Text*>(buffer));
|
||||
text2.repair();
|
||||
Text& rtext(*reinterpret_cast<Text*>(buffer));
|
||||
rtext.repair();
|
||||
|
||||
bool is_equal = Equal(text, text2);
|
||||
CHECK(!rtext.empty());
|
||||
CHECK(!rtext.full());
|
||||
|
||||
bool is_equal = Equal(text, rtext);
|
||||
CHECK(is_equal);
|
||||
|
||||
text = "GHIJKL";
|
||||
is_equal = Equal(text, text2);
|
||||
text = STR("GHIJKL");
|
||||
is_equal = Equal(text, rtext);
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_memcpy_repair_virtual)
|
||||
{
|
||||
Text text;
|
||||
|
||||
text.assign(STR("ABCDEF"));
|
||||
|
||||
char buffer[sizeof(Text)];
|
||||
|
||||
memcpy(&buffer, &text, sizeof(text));
|
||||
|
||||
IText& itext(*reinterpret_cast<IText*>(buffer));
|
||||
itext.repair();
|
||||
|
||||
CHECK(!itext.empty());
|
||||
CHECK(!itext.full());
|
||||
|
||||
bool is_equal = Equal(text, itext);
|
||||
CHECK(is_equal);
|
||||
|
||||
text = STR("GHIJKL");
|
||||
is_equal = Equal(text, itext);
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
};
|
||||
|
||||
@ -3017,5 +3017,55 @@ namespace
|
||||
|
||||
CHECK_EQUAL(position1, position2);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_memcpy_repair)
|
||||
{
|
||||
Text text;
|
||||
|
||||
text.assign(STR("ABCDEF"));
|
||||
|
||||
char buffer[sizeof(Text)];
|
||||
|
||||
memcpy(&buffer, &text, sizeof(text));
|
||||
|
||||
Text& rtext(*reinterpret_cast<Text*>(buffer));
|
||||
rtext.repair();
|
||||
|
||||
CHECK(!rtext.empty());
|
||||
CHECK(!rtext.full());
|
||||
|
||||
bool is_equal = Equal(text, rtext);
|
||||
CHECK(is_equal);
|
||||
|
||||
text = STR("GHIJKL");
|
||||
is_equal = Equal(text, rtext);
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_memcpy_repair_virtual)
|
||||
{
|
||||
Text text;
|
||||
|
||||
text.assign(STR("ABCDEF"));
|
||||
|
||||
char buffer[sizeof(Text)];
|
||||
|
||||
memcpy(&buffer, &text, sizeof(text));
|
||||
|
||||
IText& itext(*reinterpret_cast<IText*>(buffer));
|
||||
itext.repair();
|
||||
|
||||
CHECK(!itext.empty());
|
||||
CHECK(!itext.full());
|
||||
|
||||
bool is_equal = Equal(text, itext);
|
||||
CHECK(is_equal);
|
||||
|
||||
text = STR("GHIJKL");
|
||||
is_equal = Equal(text, itext);
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -3017,5 +3017,55 @@ namespace
|
||||
|
||||
CHECK_EQUAL(position1, position2);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_memcpy_repair)
|
||||
{
|
||||
Text text;
|
||||
|
||||
text.assign(STR("ABCDEF"));
|
||||
|
||||
char buffer[sizeof(Text)];
|
||||
|
||||
memcpy(&buffer, &text, sizeof(text));
|
||||
|
||||
Text& rtext(*reinterpret_cast<Text*>(buffer));
|
||||
rtext.repair();
|
||||
|
||||
CHECK(!rtext.empty());
|
||||
CHECK(!rtext.full());
|
||||
|
||||
bool is_equal = Equal(text, rtext);
|
||||
CHECK(is_equal);
|
||||
|
||||
text = STR("GHIJKL");
|
||||
is_equal = Equal(text, rtext);
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_memcpy_repair_virtual)
|
||||
{
|
||||
Text text;
|
||||
|
||||
text.assign(STR("ABCDEF"));
|
||||
|
||||
char buffer[sizeof(Text)];
|
||||
|
||||
memcpy(&buffer, &text, sizeof(text));
|
||||
|
||||
IText& itext(*reinterpret_cast<IText*>(buffer));
|
||||
itext.repair();
|
||||
|
||||
CHECK(!itext.empty());
|
||||
CHECK(!itext.full());
|
||||
|
||||
bool is_equal = Equal(text, itext);
|
||||
CHECK(is_equal);
|
||||
|
||||
text = STR("GHIJKL");
|
||||
is_equal = Equal(text, itext);
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -3017,6 +3017,56 @@ namespace
|
||||
|
||||
CHECK_EQUAL(position1, position2);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_memcpy_repair)
|
||||
{
|
||||
Text text;
|
||||
|
||||
text.assign(STR("ABCDEF"));
|
||||
|
||||
char buffer[sizeof(Text)];
|
||||
|
||||
memcpy(&buffer, &text, sizeof(text));
|
||||
|
||||
Text& rtext(*reinterpret_cast<Text*>(buffer));
|
||||
rtext.repair();
|
||||
|
||||
CHECK(!rtext.empty());
|
||||
CHECK(!rtext.full());
|
||||
|
||||
bool is_equal = Equal(text, rtext);
|
||||
CHECK(is_equal);
|
||||
|
||||
text = STR("GHIJKL");
|
||||
is_equal = Equal(text, rtext);
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_memcpy_repair_virtual)
|
||||
{
|
||||
Text text;
|
||||
|
||||
text.assign(STR("ABCDEF"));
|
||||
|
||||
char buffer[sizeof(Text)];
|
||||
|
||||
memcpy(&buffer, &text, sizeof(text));
|
||||
|
||||
IText& itext(*reinterpret_cast<IText*>(buffer));
|
||||
itext.repair();
|
||||
|
||||
CHECK(!itext.empty());
|
||||
CHECK(!itext.full());
|
||||
|
||||
bool is_equal = Equal(text, itext);
|
||||
CHECK(is_equal);
|
||||
|
||||
text = STR("GHIJKL");
|
||||
is_equal = Equal(text, itext);
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@ -31,11 +31,12 @@ SOFTWARE.
|
||||
#include <vector>
|
||||
#include <array>
|
||||
#include <algorithm>
|
||||
#include <cstring>
|
||||
|
||||
#include "vector.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
{
|
||||
SUITE(test_vector)
|
||||
{
|
||||
static const size_t SIZE = 10;
|
||||
@ -146,7 +147,7 @@ namespace
|
||||
Data data(initial_data.begin(), initial_data.end());
|
||||
Data data2(data);
|
||||
CHECK(data2 == data);
|
||||
|
||||
|
||||
data2[2] = -1;
|
||||
CHECK(data2 != data);
|
||||
}
|
||||
@ -624,7 +625,7 @@ namespace
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INSERT_SIZE = 3;
|
||||
const int INITIAL_VALUE = 11;
|
||||
|
||||
|
||||
for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset)
|
||||
{
|
||||
Compare_Data compare_data;
|
||||
@ -718,7 +719,7 @@ namespace
|
||||
offset = 4;
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full);
|
||||
|
||||
|
||||
offset = data.size();
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full);
|
||||
@ -762,7 +763,7 @@ namespace
|
||||
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_clear)
|
||||
{
|
||||
@ -955,5 +956,71 @@ namespace
|
||||
const Data initial2(initial_data.begin(), initial_data.end());
|
||||
CHECK((initial >= initial2) == (initial_data >= initial_data));
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_memcpy_repair)
|
||||
{
|
||||
Data data(initial_data.begin(), initial_data.end());
|
||||
|
||||
char buffer[sizeof(Data)];
|
||||
|
||||
memcpy(&buffer, &data, sizeof(data));
|
||||
|
||||
Data& rdata(*reinterpret_cast<Data*>(buffer));
|
||||
rdata.repair();
|
||||
|
||||
// Check that the memcpy'd vector is the same.
|
||||
CHECK_EQUAL(data.size(), rdata.size());
|
||||
CHECK(!rdata.empty());
|
||||
CHECK(rdata.full());
|
||||
|
||||
bool is_equal = std::equal(rdata.begin(),
|
||||
rdata.end(),
|
||||
data.begin());
|
||||
|
||||
CHECK(is_equal);
|
||||
|
||||
// Modify the original and check that the memcpy'd vector is not the same.
|
||||
std::reverse(data.begin(), data.end());
|
||||
|
||||
is_equal = std::equal(rdata.begin(),
|
||||
rdata.end(),
|
||||
data.begin());
|
||||
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_memcpy_repair_virtual)
|
||||
{
|
||||
Data data(initial_data.begin(), initial_data.end());
|
||||
|
||||
char buffer[sizeof(Data)];
|
||||
|
||||
memcpy(&buffer, &data, sizeof(data));
|
||||
|
||||
IData& idata(*reinterpret_cast<Data*>(buffer));
|
||||
idata.repair();
|
||||
|
||||
// Check that the memcpy'd vector is the same.
|
||||
CHECK_EQUAL(data.size(), idata.size());
|
||||
CHECK(!idata.empty());
|
||||
CHECK(idata.full());
|
||||
|
||||
bool is_equal = std::equal(idata.begin(),
|
||||
idata.end(),
|
||||
data.begin());
|
||||
|
||||
CHECK(is_equal);
|
||||
|
||||
// Modify the original and check that the memcpy'd vector is not the same.
|
||||
std::reverse(data.begin(), data.end());
|
||||
|
||||
is_equal = std::equal(idata.begin(),
|
||||
idata.end(),
|
||||
data.begin());
|
||||
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -31,11 +31,12 @@ SOFTWARE.
|
||||
#include <vector>
|
||||
#include <array>
|
||||
#include <algorithm>
|
||||
#include <cstring>
|
||||
|
||||
#include "vector.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
{
|
||||
SUITE(test_vector_pointer)
|
||||
{
|
||||
static const size_t SIZE = 10;
|
||||
@ -159,7 +160,7 @@ namespace
|
||||
Data data(initial_data.begin(), initial_data.end());
|
||||
Data data2(data);
|
||||
CHECK(data2 == data);
|
||||
|
||||
|
||||
data2[2] = nullptr;
|
||||
CHECK(data2 != data);
|
||||
}
|
||||
@ -612,7 +613,7 @@ namespace
|
||||
const size_t INITIAL_SIZE = 5;
|
||||
const size_t INSERT_SIZE = 3;
|
||||
int INITIAL_VALUE = 11;
|
||||
|
||||
|
||||
for (size_t offset = 0; offset <= INITIAL_SIZE; ++offset)
|
||||
{
|
||||
Compare_Data compare_data;
|
||||
@ -700,7 +701,7 @@ namespace
|
||||
offset = 4;
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full);
|
||||
|
||||
|
||||
offset = data.size();
|
||||
|
||||
CHECK_THROW(data.insert(data.begin() + offset, initial_data.begin(), initial_data.end()), etl::vector_full);
|
||||
@ -740,7 +741,7 @@ namespace
|
||||
|
||||
CHECK(is_equal);
|
||||
}
|
||||
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_clear)
|
||||
{
|
||||
@ -933,5 +934,38 @@ namespace
|
||||
const Data initial2(initial_data.begin(), initial_data.end());
|
||||
CHECK((initial >= initial2) == (initial_data >= initial_data));
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST_FIXTURE(SetupFixture, test_memcpy_repair)
|
||||
{
|
||||
Data data(initial_data.begin(), initial_data.end());
|
||||
|
||||
char buffer[sizeof(Data)];
|
||||
|
||||
memcpy(&buffer, &data, sizeof(data));
|
||||
|
||||
Data& rdata(*reinterpret_cast<Data*>(buffer));
|
||||
rdata.repair();
|
||||
|
||||
// Check that the memcpy'd vector is the same.
|
||||
CHECK_EQUAL(data.size(), rdata.size());
|
||||
CHECK(!rdata.empty());
|
||||
CHECK(rdata.full());
|
||||
|
||||
bool is_equal = std::equal(rdata.begin(),
|
||||
rdata.end(),
|
||||
data.begin());
|
||||
|
||||
CHECK(is_equal);
|
||||
|
||||
// Modify the original and check that the memcpy'd vector is not the same.
|
||||
std::reverse(data.begin(), data.end());
|
||||
|
||||
is_equal = std::equal(rdata.begin(),
|
||||
rdata.end(),
|
||||
data.begin());
|
||||
|
||||
CHECK(!is_equal);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@ -72,7 +72,7 @@
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_THROW_EXCEPTIONS;ETL_VERBOSE_ERRORS;ETL_CHECK_PUSH_POP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_IVECTOR_REPAIR_ENABLE;ETL_ISTRING_REPAIR_ENABLE;ETL_IDEQUE_REPAIR_ENABLE;ETL_IN_UNIT_TEST;ETL_THROW_EXCEPTIONS;ETL_VERBOSE_ERRORS;ETL_CHECK_PUSH_POP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../unittest-cpp/UnitTest++/;../../src</AdditionalIncludeDirectories>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
@ -91,7 +91,7 @@
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_THROW_EXCEPTIONS;ETL_VERBOSE_ERRORS;ETL_CHECK_PUSH_POP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;_LIB;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;ETL_IN_UNIT_TEST;ETL_THROW_EXCEPTIONS;ETL_VERBOSE_ERRORS;ETL_CHECK_PUSH_POP;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<AdditionalIncludeDirectories>../../unittest-cpp/UnitTest++/;../../src</AdditionalIncludeDirectories>
|
||||
<UndefinePreprocessorDefinitions>
|
||||
</UndefinePreprocessorDefinitions>
|
||||
|
||||
@ -37,6 +37,9 @@
|
||||
<Filter Include="ETL\Private">
|
||||
<UniqueIdentifier>{7028012c-30c4-4993-b2d9-3b1521a610ae}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="ETL\Frameworks">
|
||||
<UniqueIdentifier>{5de50c3d-4679-4eb3-9b76-e43e1aad6a66}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\src\doxygen.h">
|
||||
@ -336,12 +339,6 @@
|
||||
<ClInclude Include="..\..\src\memory.h">
|
||||
<Filter>ETL\Utilities</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\message_processor.h">
|
||||
<Filter>ETL\Patterns</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\message_processor_generator.h">
|
||||
<Filter>ETL\Patterns</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\reference_flat_map.h">
|
||||
<Filter>ETL\Containers</Filter>
|
||||
</ClInclude>
|
||||
@ -441,6 +438,12 @@
|
||||
<ClInclude Include="..\..\unittest-cpp\UnitTest++\XmlTestReporter.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\message_processor.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\src\message_processor_generator.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\main.cpp">
|
||||
@ -773,7 +776,7 @@
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="..\..\src\CreateMessageProcessor.bat">
|
||||
<Filter>ETL\Patterns</Filter>
|
||||
<Filter>Source Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user