Merge remote-tracking branch 'origin/development'

This commit is contained in:
John Wellbelove 2016-01-23 12:10:43 +00:00
commit f610298bc0
13 changed files with 783 additions and 592 deletions

View File

@ -42,7 +42,12 @@ SOFTWARE.
#include "nullptr.h"
#include "type_traits.h"
#include "intrusive_forward_list_link.h"
#include "exception.h"
#include "error_handler.h"
#include "intrusive_links.h"
#undef ETL_FILE
#define ETL_FILE "20"
namespace etl
{
@ -107,7 +112,7 @@ namespace etl
///\ingroup intrusive_forward_list
///\note TLink must be a base of TValue.
//***************************************************************************
template <typename TValue, typename TLink = etl::intrusive_forward_list_link<0> >
template <typename TValue, typename TLink = etl::forward_link<0> >
class intrusive_forward_list
{
public:
@ -151,16 +156,16 @@ namespace etl
iterator& operator ++()
{
// Read the appropriate 'ifll_next'.
p_value = static_cast<value_type*>(p_value->link_type::ifll_next);
// Read the appropriate 'etl_next'.
p_value = static_cast<value_type*>(p_value->link_type::etl_next);
return *this;
}
iterator operator ++(int)
{
iterator temp(*this);
// Read the appropriate 'ifll_next'.
p_value = static_cast<value_type*>(p_value->link_type::ifll_next);
// Read the appropriate 'etl_next'.
p_value = static_cast<value_type*>(p_value->link_type::etl_next);
return temp;
}
@ -246,16 +251,16 @@ namespace etl
const_iterator& operator ++()
{
// Read the appropriate 'ifll_next'.
p_value = static_cast<value_type*>(p_value->link_type::ifll_next);
// Read the appropriate 'etl_next'.
p_value = static_cast<value_type*>(p_value->link_type::etl_next);
return *this;
}
const_iterator operator ++(int)
{
const_iterator temp(*this);
// Read the appropriate 'ifll_next'.
p_value = static_cast<value_type*>(p_value->link_type::ifll_next);
// Read the appropriate 'etl_next'.
p_value = static_cast<value_type*>(p_value->link_type::etl_next);
return temp;
}
@ -458,16 +463,16 @@ namespace etl
return;
}
link_type* first = nullptr; // To keep first link
link_type* second = start_link.ifll_next; // To keep second link
link_type* track = start_link.ifll_next; // Track the list
link_type* first = nullptr; // To keep first link
link_type* second = start_link.etl_next; // To keep second link
link_type* track = start_link.etl_next; // Track the list
while (track != NULL)
{
track = track->ifll_next; // Track point to next link;
second->ifll_next = first; // Second link point to first
first = second; // Move first link to next
second = track; // Move second link to next
track = track->etl_next; // Track point to next link;
second->etl_next = first; // Second link point to first
first = second; // Move first link to next
second = track; // Move second link to next
}
join(&start_link, first);
@ -518,7 +523,7 @@ namespace etl
{
link_type* p_first = first.p_value;
link_type* p_last = last.p_value;
link_type* p_next = p_first->ifll_next;
link_type* p_next = p_first->etl_next;
// Join the ends.
join(p_first, p_last);
@ -531,8 +536,8 @@ namespace etl
// One less.
--current_size;
p_next = p_first->ifll_next; // Remember the next link.
p_first = p_next; // Move to the next link.
p_next = p_first->etl_next; // Remember the next link.
p_first = p_next; // Move to the next link.
}
if (p_next == nullptr)
@ -558,7 +563,7 @@ namespace etl
}
link_type* last = &get_head();
link_type* current = last->ifll_next;
link_type* current = last->etl_next;
while (current != nullptr)
{
@ -573,7 +578,7 @@ namespace etl
last = current;
}
current = last->ifll_next;
current = last->etl_next;
}
}
@ -684,7 +689,7 @@ namespace etl
i_tail = i_link;
}
i_tail.p_value->link_type::ifll_next = nullptr;
i_tail.p_value->link_type::etl_next = nullptr;
}
// Now left has stepped `list_size' places along, and right has too.
@ -774,7 +779,7 @@ namespace etl
//*************************************************************************
void join(link_type* left, link_type* right)
{
left->ifll_next = right;
left->etl_next = right;
}
//*************************************************************************
@ -791,7 +796,7 @@ namespace etl
void insert_link_after(link_type& position, link_type& link)
{
// Connect to the intrusive_forward_list.
join(&link, position.ifll_next);
join(&link, position.etl_next);
join(&position, &link);
++current_size;
}
@ -802,12 +807,12 @@ namespace etl
void remove_link_after(link_type& link)
{
// The link to erase.
link_type* p_link = link.ifll_next;
link_type* p_link = link.etl_next;
if (p_link != nullptr)
{
// Disconnect the link from the intrusive_forward_list.
join(&link, p_link->ifll_next);
join(&link, p_link->etl_next);
--current_size;
}
}
@ -817,7 +822,7 @@ namespace etl
//*************************************************************************
link_type& get_head()
{
return *start_link.ifll_next;
return *start_link.etl_next;
}
//*************************************************************************
@ -825,7 +830,7 @@ namespace etl
//*************************************************************************
const link_type& get_head() const
{
return *start_link.ifll_next;
return *start_link.etl_next;
}
//*************************************************************************
@ -833,7 +838,7 @@ namespace etl
//*************************************************************************
void initialise()
{
start_link.ifll_next = nullptr;
start_link.etl_next = nullptr;
current_size = 0;
}
@ -847,4 +852,6 @@ namespace etl
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
#undef ETL_FILE
#endif

View File

@ -39,7 +39,7 @@ namespace etl
//***************************************************************************
/// The link element in the intrusive_forward_list.
//***************************************************************************
template <const size_t ID>
template <const size_t ID = 0>
struct intrusive_forward_list_link
{
intrusive_forward_list_link<ID>* ifll_next;

View File

@ -1,49 +0,0 @@
///\file
/******************************************************************************
The MIT License(MIT)
Embedded Template Library.
https://github.com/ETLCPP/etl
http://www.etlcpp.com
Copyright(c) 2015 jwellbelove
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
******************************************************************************/
#ifndef __ETL_INTRUSIVE_FORWARD_LIST_NODE__
#define __ETL_INTRUSIVE_FORWARD_LIST_NODE__
#include "error_handler.h"
#include "array.h"
namespace etl
{
//***************************************************************************
/// The node element in the intrusive_forward_list.
//***************************************************************************
template <const size_t ID>
struct intrusive_forward_list_node
{
intrusive_list_tag<ID>* ifln_next;
};
}
#endif

122
intrusive_links.h Normal file
View File

@ -0,0 +1,122 @@
///\file
/******************************************************************************
The MIT License(MIT)
Embedded Template Library.
https://github.com/ETLCPP/etl
http://www.etlcpp.com
Copyright(c) 2016 jwellbelove
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
******************************************************************************/
#ifndef __ETL_INTRUSIVE_LINKS__
#define __ETL_INTRUSIVE_LINKS__
#include "nullptr.h"
namespace etl
{
namespace link_option
{
enum
{
NO_AUTO_UNLINK = false,
AUTO_UNLINK = true
};
};
//***************************************************************************
/// A forward link.
//***************************************************************************
template <const size_t ID_ = 0>
struct forward_link
{
enum
{
ID = ID_
};
forward_link* etl_next;
};
//***************************************************************************
/// A bidirectional link.
//***************************************************************************
template <const size_t ID_ = 0, const bool AUTO_UNLINK = etl::link_option::NO_AUTO_UNLINK>
struct bidirectional_link
{
enum
{
ID = ID_,
};
bidirectional_link* etl_previous;
bidirectional_link* etl_next;
};
// Specialisation for auto unlinked option.
// When this link is destroyed it will automatically unlink itself.
template <const size_t ID_>
struct bidirectional_link<ID_, etl::link_option::AUTO_UNLINK>
{
enum
{
ID = ID_
};
~bidirectional_link()
{
// Connect the previous link with the next.
if (etl_previous != nullptr)
{
etl_previous->etl_next = etl_next;
}
// Connect the next link with the previous.
if (etl_next != nullptr)
{
etl_next->etl_previous = etl_previous;
}
}
bidirectional_link* etl_previous;
bidirectional_link* etl_next;
};
//***************************************************************************
/// A tree link.
//***************************************************************************
template <const size_t ID_ = 0>
struct tree_link
{
enum
{
ID = ID_
};
tree_link* etl_parent;
tree_link* etl_left;
tree_link* etl_right;
};
}
#endif

View File

@ -44,7 +44,7 @@ SOFTWARE.
#include "ipool.h"
#include "ivector.h"
#include "error_handler.h"
#include "basic_intrusive_forward_list.h"
#include "intrusive_forward_list.h"
#include "exception.h"
#include "error_handler.h"
@ -103,7 +103,7 @@ namespace etl
public:
unordered_map_iterator(string_type file_name, numeric_type line_number)
: unordered_map_exception("unordered_map:iterator", file_name, line_number)
: unordered_map_exception(ETL_ERROR_TEXT("unordered_map:iterator", ETL_FILE"C"), file_name, line_number)
{
}
};
@ -133,8 +133,10 @@ namespace etl
typedef typename parameter_type<TKey>::type key_value_parameter_t;
typedef etl::forward_link<> link_t; // Default link.
// The nodes that store the elements.
struct node_t : public etl::basic_intrusive_forward_list_node
struct node_t : public link_t
{
node_t(const value_type& key_value_pair)
: key_value_pair(key_value_pair)
@ -146,9 +148,9 @@ namespace etl
private:
typedef etl::basic_intrusive_forward_list bucket_t;
typedef etl::ipool<node_t> pool_t;
typedef etl::ivector<bucket_t> bucket_list_t;
typedef etl::intrusive_forward_list<node_t, link_t> bucket_t;
typedef etl::ipool<node_t> pool_t;
typedef etl::ivector<bucket_t> bucket_list_t;
typedef typename bucket_list_t::iterator bucket_list_iterator;
@ -234,37 +236,37 @@ namespace etl
//*********************************
std::pair<const TKey, T> operator *()
{
return inode.ref_cast<node_t>().key_value_pair;
return inode->key_value_pair;
}
//*********************************
const_reference operator *() const
{
return inode.ref_cast<node_t>().key_value_pair;
return inode->key_value_pair;
}
//*********************************
pointer operator &()
{
return &(inode.ref_cast<node_t>().key_value_pair);
return &(inode->key_value_pair);
}
//*********************************
const_pointer operator &() const
{
return &(inode.ref_cast<node_t>().key_value_pair);
return &(inode->key_value_pair);
}
//*********************************
pointer operator ->()
{
return &(inode.ref_cast<node_t>().key_value_pair);
return &(inode->key_value_pair);
}
//*********************************
const_pointer operator ->() const
{
return &(inode.ref_cast<node_t>().key_value_pair);
return &(inode->key_value_pair);
}
//*********************************
@ -404,19 +406,19 @@ namespace etl
//*********************************
const_reference operator *() const
{
return inode.ref_cast<node_t>().key_value_pair;
return inode->key_value_pair;
}
//*********************************
const_pointer operator &() const
{
return &(inode.ref_cast<node_t>().key_value_pair);
return &(inode->key_value_pair);
}
//*********************************
const_pointer operator ->() const
{
return &(inode.ref_cast<node_t>().key_value_pair);
return &(inode->key_value_pair);
}
//*********************************
@ -635,10 +637,10 @@ namespace etl
while (inode != ibucket->end())
{
// Equal keys?
if (key_equal_function(key, inode.ref_cast<node_t>().key_value_pair.first))
if (key_equal_function(key, inode->key_value_pair.first))
{
// Found a match.
return inode.ref_cast<node_t>().key_value_pair.second;
return inode->key_value_pair.second;
}
else
{
@ -651,7 +653,7 @@ namespace etl
node_t& node = *pnodepool->allocate(node_t(value_type(key, T())));
ibucket->insert_after(ibucket->before_begin(), node);
return ibucket->begin().ref_cast<node_t>().key_value_pair.second;
return ibucket->begin()->key_value_pair.second;
}
//*********************************************************************
@ -672,10 +674,10 @@ namespace etl
while (inode != ibucket->end())
{
// Equal keys?
if (key_equal_function(key, inode.ref_cast<node_t>().key_value_pair.first))
if (key_equal_function(key, inode->key_value_pair.first))
{
// Found a match.
return inode.ref_cast<node_t>().key_value_pair.second;
return inode->key_value_pair.second;
}
else
{
@ -707,10 +709,10 @@ namespace etl
while (inode != ibucket->end())
{
// Equal keys?
if (key_equal_function(key, inode.ref_cast<node_t>().key_value_pair.first))
if (key_equal_function(key, inode->key_value_pair.first))
{
// Found a match.
return inode.ref_cast<node_t>().key_value_pair.second;
return inode->key_value_pair.second;
}
else
{
@ -792,7 +794,7 @@ namespace etl
while (inode != bucket.end())
{
// Do we already have this key?
if (inode.ref_cast<node_t>().key_value_pair.first == key)
if (inode->key_value_pair.first == key)
{
break;
}
@ -861,7 +863,7 @@ namespace etl
local_iterator iprevious = bucket.before_begin();
local_iterator icurrent = bucket.begin();
while ((icurrent != bucket.end()) && (icurrent.ref_cast<node_t>().key_value_pair.first != key))
while ((icurrent != bucket.end()) && (icurrent->key_value_pair.first != key))
{
++iprevious;
++icurrent;
@ -891,7 +893,7 @@ namespace etl
local_iterator iprevious = bucket.before_begin();
// Find the node we're interested in.
while (iprevious->bifln_next != &*icurrent)
while (iprevious->etl_next != &*icurrent)
{
++iprevious;
}
@ -920,7 +922,7 @@ namespace etl
local_iterator iend;
// Find the first node we're interested in.
while (iprevious->bifln_next != &*ifirst)
while (iprevious->etl_next != &*ifirst)
{
++iprevious;
}
@ -999,7 +1001,7 @@ namespace etl
while (inode != iend)
{
// Do we have this one?
if (key_equal_function(key, inode.ref_cast<node_t>().key_value_pair.first))
if (key_equal_function(key, inode->key_value_pair.first))
{
return iterator(pbuckets->end(), ibucket, inode);
}
@ -1033,7 +1035,7 @@ namespace etl
while (inode != iend)
{
// Do we have this one?
if (key_equal_function(key, inode.ref_cast<node_t>().key_value_pair.first))
if (key_equal_function(key, inode->key_value_pair.first))
{
return iterator(pbuckets->end(), ibucket, inode);
}

View File

@ -172,6 +172,8 @@
<Unit filename="../../imap.h" />
<Unit filename="../../instance_count.h" />
<Unit filename="../../integral_limits.h" />
<Unit filename="../../intrusive_forward_list.h" />
<Unit filename="../../intrusive_forward_list_link.h" />
<Unit filename="../../io_port.h" />
<Unit filename="../../iqueue.h" />
<Unit filename="../../iset.h" />
@ -251,6 +253,7 @@
<Unit filename="../test_hash.cpp" />
<Unit filename="../test_instance_count.cpp" />
<Unit filename="../test_integral_limits.cpp" />
<Unit filename="../test_intrusive_forward_list.cpp" />
<Unit filename="../test_io_port.cpp" />
<Unit filename="../test_largest.cpp" />
<Unit filename="../test_list.cpp" />

View File

@ -2829,40 +2829,40 @@
"DeferredTestReporter.h"
<iosfwd>
1449838910 source:d:\users\john\documents\programming\github\etl\crc16.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\crc16.cpp
<stdint.h>
1449838910 source:d:\users\john\documents\programming\github\etl\crc16_ccitt.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\crc16_ccitt.cpp
<stdint.h>
1449838910 source:d:\users\john\documents\programming\github\etl\crc16_kermit.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\crc16_kermit.cpp
<stdint.h>
1449838910 source:d:\users\john\documents\programming\github\etl\crc32.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\crc32.cpp
<stdint.h>
1449838910 source:d:\users\john\documents\programming\github\etl\crc64_ecma.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\crc64_ecma.cpp
<stdint.h>
1449838910 source:d:\users\john\documents\programming\github\etl\crc8_ccitt.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\crc8_ccitt.cpp
<stdint.h>
1449838910 source:d:\users\john\documents\programming\github\etl\error_handler.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\error_handler.cpp
"error_handler.h"
"nullptr.h"
1449838910 d:\users\john\documents\programming\github\etl\error_handler.h
1452796556 d:\users\john\documents\programming\github\etl\error_handler.h
<assert.h>
"exception.h"
"function.h"
1449838910 d:\users\john\documents\programming\github\etl\exception.h
1450265856 d:\users\john\documents\programming\github\etl\exception.h
1449838910 d:\users\john\documents\programming\github\etl\function.h
1452203243 d:\users\john\documents\programming\github\etl\function.h
1449838910 d:\users\john\documents\programming\github\etl\nullptr.h
1450265856 d:\users\john\documents\programming\github\etl\nullptr.h
1449834672 source:d:\users\john\documents\programming\github\etl\test\main.cpp
1450264056 source:d:\users\john\documents\programming\github\etl\test\main.cpp
<UnitTest++/UnitTest++.h>
1414845610 d:\users\john\documents\programming\github\unittest-cpp\unittest++\unittest++.h
@ -2898,7 +2898,7 @@
"CurrentTest.h"
"ReportAssertImpl.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_algorithm.cpp
1452338450 source:d:\users\john\documents\programming\github\etl\test\test_algorithm.cpp
<UnitTest++/UnitTest++.h>
"../algorithm.h"
"../container.h"
@ -2907,7 +2907,7 @@
<functional>
<numeric>
1449838910 d:\users\john\documents\programming\github\etl\algorithm.h
1452796851 d:\users\john\documents\programming\github\etl\algorithm.h
<algorithm>
<iterator>
<utility>
@ -2915,15 +2915,15 @@
<stdint.h>
"type_traits.h"
1449856479 d:\users\john\documents\programming\github\etl\type_traits.h
1452796556 d:\users\john\documents\programming\github\etl\type_traits.h
<stddef.h>
"nullptr.h"
1449838910 d:\users\john\documents\programming\github\etl\container.h
1450265856 d:\users\john\documents\programming\github\etl\container.h
<stddef.h>
<iterator>
1427740329 source:d:\users\john\documents\programming\github\etl\test\test_alignment.cpp
1452796556 source:d:\users\john\documents\programming\github\etl\test\test_alignment.cpp
<UnitTest++/UnitTest++.h>
"../alignment.h"
"../type_traits.h"
@ -2932,14 +2932,14 @@
<string>
<ostream>
1449838910 d:\users\john\documents\programming\github\etl\alignment.h
1450265856 d:\users\john\documents\programming\github\etl\alignment.h
<stdint.h>
"type_traits.h"
"static_assert.h"
1449838910 d:\users\john\documents\programming\github\etl\static_assert.h
1450265856 d:\users\john\documents\programming\github\etl\static_assert.h
1428227985 source:d:\users\john\documents\programming\github\etl\test\test_array.cpp
1452338450 source:d:\users\john\documents\programming\github\etl\test\test_array.cpp
<UnitTest++/UnitTest++.h>
"../array.h"
<array>
@ -2947,7 +2947,7 @@
<iterator>
"../integral_limits.h"
1449838910 d:\users\john\documents\programming\github\etl\array.h
1450265856 d:\users\john\documents\programming\github\etl\array.h
<iterator>
<functional>
<algorithm>
@ -2958,15 +2958,15 @@
"static_assert.h"
"error_handler.h"
1449838910 d:\users\john\documents\programming\github\etl\parameter_type.h
1450265856 d:\users\john\documents\programming\github\etl\parameter_type.h
"type_traits.h"
1449838910 d:\users\john\documents\programming\github\etl\integral_limits.h
1450265856 d:\users\john\documents\programming\github\etl\integral_limits.h
<climits>
<stddef.h>
"type_traits.h"
1449853390 source:d:\users\john\documents\programming\github\etl\test\test_binary.cpp
1452796556 source:d:\users\john\documents\programming\github\etl\test\test_binary.cpp
<UnitTest++/UnitTest++.h>
<cstdint>
<type_traits>
@ -2975,7 +2975,7 @@
"../fnv_1.h"
"../integral_limits.h"
1449842605 d:\users\john\documents\programming\github\etl\binary.h
1450265856 d:\users\john\documents\programming\github\etl\binary.h
"type_traits.h"
"integral_limits.h"
"static_assert.h"
@ -2983,7 +2983,7 @@
"power.h"
"smallest.h"
1449838910 d:\users\john\documents\programming\github\etl\bitset.h
1452796556 d:\users\john\documents\programming\github\etl\bitset.h
<algorithm>
<iterator>
<string.h>
@ -2995,45 +2995,48 @@
"ibitset.h"
"error_handler.h"
1449838910 d:\users\john\documents\programming\github\etl\smallest.h
1450265856 d:\users\john\documents\programming\github\etl\smallest.h
<stdint.h>
"integral_limits.h"
1449838910 d:\users\john\documents\programming\github\etl\log.h
1450265856 d:\users\john\documents\programming\github\etl\log.h
<stddef.h>
1449846756 d:\users\john\documents\programming\github\etl\ibitset.h
1452878867 d:\users\john\documents\programming\github\etl\ibitset.h
<algorithm>
<stdint.h>
<string.h>
"exception.h"
"integral_limits.h"
"binary.h"
"algorithm.h"
1449838910 d:\users\john\documents\programming\github\etl\fnv_1.h
1450265856 d:\users\john\documents\programming\github\etl\fnv_1.h
<stdint.h>
"static_assert.h"
"type_traits.h"
"ihash.h"
1449838910 d:\users\john\documents\programming\github\etl\endian.h
1450265856 d:\users\john\documents\programming\github\etl\endian.h
<stdint.h>
"enum_type.h"
1449838910 d:\users\john\documents\programming\github\etl\enum_type.h
1452796851 d:\users\john\documents\programming\github\etl\enum_type.h
1449838910 d:\users\john\documents\programming\github\etl\ihash.h
1450265856 d:\users\john\documents\programming\github\etl\ihash.h
<stdint.h>
<utility>
"exception.h"
"error_handler.h"
1449756680 source:d:\users\john\documents\programming\github\etl\test\test_bitset.cpp
1452796556 source:d:\users\john\documents\programming\github\etl\test\test_bitset.cpp
<UnitTest++/UnitTest++.h>
<limits>
<type_traits>
<bitset>
"../bitset.h"
1443462794 source:d:\users\john\documents\programming\github\etl\test\test_bloom_filter.cpp
1452796556 source:d:\users\john\documents\programming\github\etl\test\test_bloom_filter.cpp
<UnitTest++/UnitTest++.h>
<stdlib.h>
<vector>
@ -3043,7 +3046,7 @@
"../crc16_ccitt.h"
"../crc32.h"
1449838910 d:\users\john\documents\programming\github\etl\bloom_filter.h
1450265856 d:\users\john\documents\programming\github\etl\bloom_filter.h
"parameter_type.h"
"bitset.h"
"type_traits.h"
@ -3051,26 +3054,26 @@
"log.h"
"power.h"
1449838910 d:\users\john\documents\programming\github\etl\power.h
1450265856 d:\users\john\documents\programming\github\etl\power.h
<stddef.h>
"log.h"
1449838910 d:\users\john\documents\programming\github\etl\crc16.h
1450265856 d:\users\john\documents\programming\github\etl\crc16.h
<stdint.h>
"static_assert.h"
"type_traits.h"
1449838910 d:\users\john\documents\programming\github\etl\crc16_ccitt.h
1450265856 d:\users\john\documents\programming\github\etl\crc16_ccitt.h
<stdint.h>
"static_assert.h"
"type_traits.h"
1449838910 d:\users\john\documents\programming\github\etl\crc32.h
1450265856 d:\users\john\documents\programming\github\etl\crc32.h
<stdint.h>
<iterator>
"static_assert.h"
1443462794 source:d:\users\john\documents\programming\github\etl\test\test_checksum.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_checksum.cpp
<UnitTest++/UnitTest++.h>
<iterator>
<string>
@ -3079,18 +3082,18 @@
"../checksum.h"
"../endian.h"
1449838910 d:\users\john\documents\programming\github\etl\checksum.h
1450265856 d:\users\john\documents\programming\github\etl\checksum.h
<stdint.h>
"static_assert.h"
"type_traits.h"
"ihash.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_container.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_container.cpp
<UnitTest++/UnitTest++.h>
"../container.h"
<list>
1443462794 source:d:\users\john\documents\programming\github\etl\test\test_crc.cpp
1452796556 source:d:\users\john\documents\programming\github\etl\test\test_crc.cpp
<UnitTest++/UnitTest++.h>
<iterator>
<string>
@ -3103,32 +3106,32 @@
"../crc32.h"
"../crc64_ecma.h"
1449838910 d:\users\john\documents\programming\github\etl\crc8_ccitt.h
1450265856 d:\users\john\documents\programming\github\etl\crc8_ccitt.h
<stdint.h>
"static_assert.h"
"type_traits.h"
1449838910 d:\users\john\documents\programming\github\etl\crc16_kermit.h
1450265856 d:\users\john\documents\programming\github\etl\crc16_kermit.h
<stdint.h>
"static_assert.h"
"type_traits.h"
1449838910 d:\users\john\documents\programming\github\etl\crc64_ecma.h
1450265856 d:\users\john\documents\programming\github\etl\crc64_ecma.h
<stdint.h>
"static_assert.h"
"type_traits.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_cyclic_value.cpp
1452796556 source:d:\users\john\documents\programming\github\etl\test\test_cyclic_value.cpp
<UnitTest++/UnitTest++.h>
"../cyclic_value.h"
1449838910 d:\users\john\documents\programming\github\etl\cyclic_value.h
1452794793 d:\users\john\documents\programming\github\etl\cyclic_value.h
<stddef.h>
<algorithm>
"static_assert.h"
"exception.h"
1449675194 source:d:\users\john\documents\programming\github\etl\test\test_deque.cpp
1452878867 source:d:\users\john\documents\programming\github\etl\test\test_deque.cpp
<UnitTest++/UnitTest++.h>
"ExtraCheckMacros.h"
"../deque.h"
@ -3149,7 +3152,7 @@
<UnitTest++/CurrentTest.h>
<UnitTest++/ReportAssertImpl.h>
1449838910 d:\users\john\documents\programming\github\etl\deque.h
1452796556 d:\users\john\documents\programming\github\etl\deque.h
<stddef.h>
<stdint.h>
<iterator>
@ -3159,7 +3162,7 @@
"alignment.h"
"array.h"
1449838910 d:\users\john\documents\programming\github\etl\ideque.h
1453406068 d:\users\john\documents\programming\github\etl\ideque.h
<stddef.h>
<iterator>
"algorithm.h"
@ -3172,30 +3175,33 @@
<stddef.h>
"exception.h"
1443462794 d:\users\john\documents\programming\github\etl\test\data.h
1450265856 d:\users\john\documents\programming\github\etl\test\data.h
<ostream>
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_endian.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_endian.cpp
<UnitTest++/UnitTest++.h>
<string>
"../endian.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_enum_type.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_enum_type.cpp
<UnitTest++/UnitTest++.h>
<string>
"../enum_type.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_error_handler.cpp
1453406068 source:d:\users\john\documents\programming\github\etl\test\test_error_handler.cpp
<UnitTest++/UnitTest++.h>
<Windows.h>
<sstream>
<string>
"../error_handler.h"
"../exception.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_exception.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_exception.cpp
<UnitTest++/UnitTest++.h>
<string>
"../exception.h"
1443462794 source:d:\users\john\documents\programming\github\etl\test\test_flat_map.cpp
1452796556 source:d:\users\john\documents\programming\github\etl\test\test_flat_map.cpp
<UnitTest++/UnitTest++.h>
<map>
<array>
@ -3207,14 +3213,14 @@
"data.h"
"../flat_map.h"
1449838910 d:\users\john\documents\programming\github\etl\flat_map.h
1452796556 d:\users\john\documents\programming\github\etl\flat_map.h
<stddef.h>
<iterator>
<functional>
"iflat_map.h"
"vector.h"
1449838910 d:\users\john\documents\programming\github\etl\iflat_map.h
1452796556 d:\users\john\documents\programming\github\etl\iflat_map.h
<iterator>
<algorithm>
<functional>
@ -3232,7 +3238,7 @@
"ivector.h"
"error_handler.h"
1449848575 d:\users\john\documents\programming\github\etl\ivector.h
1452796556 d:\users\john\documents\programming\github\etl\ivector.h
<iterator>
<algorithm>
<functional>
@ -3248,7 +3254,7 @@
"exception.h"
"error_handler.h"
1449838910 d:\users\john\documents\programming\github\etl\vector.h
1452796556 d:\users\john\documents\programming\github\etl\vector.h
<stddef.h>
<stdint.h>
<iterator>
@ -3257,7 +3263,7 @@
"alignment.h"
"array.h"
1440787191 source:d:\users\john\documents\programming\github\etl\test\test_flat_set.cpp
1452796556 source:d:\users\john\documents\programming\github\etl\test\test_flat_set.cpp
<UnitTest++/UnitTest++.h>
<set>
<array>
@ -3269,14 +3275,14 @@
"data.h"
"../flat_set.h"
1449838910 d:\users\john\documents\programming\github\etl\flat_set.h
1452796556 d:\users\john\documents\programming\github\etl\flat_set.h
<stddef.h>
<iterator>
<functional>
"iflat_set.h"
"vector.h"
1449838910 d:\users\john\documents\programming\github\etl\iflat_set.h
1452796556 d:\users\john\documents\programming\github\etl\iflat_set.h
<iterator>
<algorithm>
<functional>
@ -3294,7 +3300,7 @@
"ivector.h"
"error_handler.h"
1443462794 source:d:\users\john\documents\programming\github\etl\test\test_fnv_1.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_fnv_1.cpp
<UnitTest++/UnitTest++.h>
<iterator>
<string>
@ -3302,7 +3308,7 @@
<stdint.h>
"../fnv_1.h"
1444492600 source:d:\users\john\documents\programming\github\etl\test\test_forward_list.cpp
1453063876 source:d:\users\john\documents\programming\github\etl\test\test_forward_list.cpp
<UnitTest++/UnitTest++.h>
"ExtraCheckMacros.h"
"data.h"
@ -3313,20 +3319,20 @@
<vector>
<string>
1449838910 d:\users\john\documents\programming\github\etl\forward_list.h
1452796556 d:\users\john\documents\programming\github\etl\forward_list.h
<stddef.h>
"pool.h"
"iforward_list.h"
"container.h"
1449838910 d:\users\john\documents\programming\github\etl\pool.h
1452796556 d:\users\john\documents\programming\github\etl\pool.h
"alignment.h"
"array.h"
"bitset.h"
"ipool.h"
<iterator>
1449838910 d:\users\john\documents\programming\github\etl\ipool.h
1452796556 d:\users\john\documents\programming\github\etl\ipool.h
<iterator>
"private/pool_base.h"
"nullptr.h"
@ -3338,7 +3344,7 @@
"exception.h"
"error_handler.h"
1449847744 d:\users\john\documents\programming\github\etl\iforward_list.h
1453063980 d:\users\john\documents\programming\github\etl\iforward_list.h
<iterator>
<algorithm>
<functional>
@ -3353,20 +3359,20 @@
<stddef.h>
"exception.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_function.cpp
1451003290 source:d:\users\john\documents\programming\github\etl\test\test_function.cpp
<UnitTest++/UnitTest++.h>
"../function.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_functional.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_functional.cpp
<UnitTest++/UnitTest++.h>
"../functional.h"
<list>
<vector>
<numeric>
1449838910 d:\users\john\documents\programming\github\etl\functional.h
1450265856 d:\users\john\documents\programming\github\etl\functional.h
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_hash.cpp
1452796556 source:d:\users\john\documents\programming\github\etl\test\test_hash.cpp
<UnitTest++/UnitTest++.h>
<iterator>
<string>
@ -3374,46 +3380,46 @@
<stdint.h>
"../hash.h"
1449838910 d:\users\john\documents\programming\github\etl\hash.h
1450265856 d:\users\john\documents\programming\github\etl\hash.h
<stdint.h>
"fnv_1.h"
"type_traits.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_instance_count.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_instance_count.cpp
<UnitTest++/UnitTest++.h>
"../instance_count.h"
<list>
<vector>
<numeric>
1449838910 d:\users\john\documents\programming\github\etl\instance_count.h
1450265856 d:\users\john\documents\programming\github\etl\instance_count.h
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_integral_limits.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_integral_limits.cpp
<UnitTest++/UnitTest++.h>
<limits>
<type_traits>
<bitset>
"../integral_limits.h"
1449844166 source:d:\users\john\documents\programming\github\etl\test\test_io_port.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_io_port.cpp
<UnitTest++/UnitTest++.h>
"../io_port.h"
<stdint.h>
1449838910 d:\users\john\documents\programming\github\etl\io_port.h
1450265856 d:\users\john\documents\programming\github\etl\io_port.h
<stdint.h>
"nullptr.h"
"parameter_type.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_largest.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_largest.cpp
<UnitTest++/UnitTest++.h>
"../largest.h"
<type_traits>
1449838910 d:\users\john\documents\programming\github\etl\largest.h
1450265856 d:\users\john\documents\programming\github\etl\largest.h
"type_traits.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_list.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_list.cpp
<UnitTest++/UnitTest++.h>
"ExtraCheckMacros.h"
"../list.h"
@ -3423,13 +3429,13 @@
<list>
<vector>
1449838910 d:\users\john\documents\programming\github\etl\list.h
1452337456 d:\users\john\documents\programming\github\etl\list.h
<stddef.h>
"ilist.h"
"container.h"
"pool.h"
1449847976 d:\users\john\documents\programming\github\etl\ilist.h
1452333625 d:\users\john\documents\programming\github\etl\ilist.h
<iterator>
<algorithm>
<functional>
@ -3444,43 +3450,43 @@
<stddef.h>
"exception.h"
1443462794 source:d:\users\john\documents\programming\github\etl\test\test_maths.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_maths.cpp
<UnitTest++/UnitTest++.h>
"../log.h"
"../power.h"
"../fibonacci.h"
"../factorial.h"
1449838910 d:\users\john\documents\programming\github\etl\fibonacci.h
1450265856 d:\users\john\documents\programming\github\etl\fibonacci.h
<stddef.h>
1449838910 d:\users\john\documents\programming\github\etl\factorial.h
1450265856 d:\users\john\documents\programming\github\etl\factorial.h
<stddef.h>
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_numeric.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_numeric.cpp
<UnitTest++/UnitTest++.h>
"../numeric.h"
<algorithm>
<numeric>
1449838910 d:\users\john\documents\programming\github\etl\numeric.h
1450265856 d:\users\john\documents\programming\github\etl\numeric.h
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_observer.cpp
1450468191 source:d:\users\john\documents\programming\github\etl\test\test_observer.cpp
<UnitTest++/UnitTest++.h>
"../observer.h"
1449838910 d:\users\john\documents\programming\github\etl\observer.h
1450959449 d:\users\john\documents\programming\github\etl\observer.h
<algorithm>
"vector.h"
"exception.h"
"error_handler.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_queue.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_queue.cpp
<UnitTest++/UnitTest++.h>
<queue>
"../queue.h"
1449838910 d:\users\john\documents\programming\github\etl\queue.h
1450265856 d:\users\john\documents\programming\github\etl\queue.h
<stddef.h>
<stdint.h>
"iqueue.h"
@ -3488,7 +3494,7 @@
"alignment.h"
"array.h"
1449838910 d:\users\john\documents\programming\github\etl\iqueue.h
1452203243 d:\users\john\documents\programming\github\etl\iqueue.h
<stddef.h>
"private/queue_base.h"
"type_traits.h"
@ -3499,18 +3505,18 @@
<stddef.h>
"exception.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_smallest.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_smallest.cpp
<UnitTest++/UnitTest++.h>
"../smallest.h"
<type_traits>
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_stack.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_stack.cpp
<UnitTest++/UnitTest++.h>
<stack>
"data.h"
"../stack.h"
1449838910 d:\users\john\documents\programming\github\etl\stack.h
1450265856 d:\users\john\documents\programming\github\etl\stack.h
<stddef.h>
<stdint.h>
<algorithm>
@ -3519,7 +3525,7 @@
"alignment.h"
"array.h"
1449838910 d:\users\john\documents\programming\github\etl\istack.h
1452203243 d:\users\john\documents\programming\github\etl\istack.h
<stddef.h>
"private/stack_base.h"
"type_traits.h"
@ -3530,67 +3536,71 @@
<stddef.h>
"exception.h"
1449848286 source:d:\users\john\documents\programming\github\etl\test\test_vector.cpp
1452338102 source:d:\users\john\documents\programming\github\etl\test\test_vector.cpp
<UnitTest++/UnitTest++.h>
<vector>
<array>
<algorithm>
"../vector.h"
1424726109 source:d:\users\john\documents\programming\github\etl\test\test_visitor.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_visitor.cpp
<UnitTest++/UnitTest++.h>
"../visitor.h"
1449838910 d:\users\john\documents\programming\github\etl\visitor.h
1450265856 d:\users\john\documents\programming\github\etl\visitor.h
1449838740 source:d:\users\john\documents\programming\github\etl\test\test_fixed_iterator.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_fixed_iterator.cpp
<UnitTest++/UnitTest++.h>
<vector>
<ostream>
"../fixed_iterator.h"
1449839077 d:\users\john\documents\programming\github\etl\fixed_iterator.h
1450265856 d:\users\john\documents\programming\github\etl\fixed_iterator.h
<iterator>
1414845610 source:d:\users\john\documents\programming\github\unittest-cpp\unittest++\win32\timehelpers.cpp
"TimeHelpers.h"
<windows.h>
1449844020 d:\users\john\documents\programming\github\etl\private\deque_base.h
1450265856 d:\users\john\documents\programming\github\etl\private\deque_base.h
<stddef.h>
"../exception.h"
"../error_handler.h"
1449844216 d:\users\john\documents\programming\github\etl\private\flat_map_base.h
1450265856 d:\users\john\documents\programming\github\etl\private\flat_map_base.h
<stddef.h>
"../exception.h"
"../ivector.h"
"error_handler.h"
"../error_handler.h"
1449844020 d:\users\john\documents\programming\github\etl\private\vector_base.h
1450959449 d:\users\john\documents\programming\github\etl\private\vector_base.h
<stddef.h>
"../exception.h"
"error_handler.h"
"../error_handler.h"
1449844237 d:\users\john\documents\programming\github\etl\private\flat_set_base.h
1450265856 d:\users\john\documents\programming\github\etl\private\flat_set_base.h
<stddef.h>
"../exception.h"
"../ivector.h"
"error_handler.h"
"../error_handler.h"
1449844020 d:\users\john\documents\programming\github\etl\private\pool_base.h
1452796556 d:\users\john\documents\programming\github\etl\private\pool_base.h
<stddef.h>
"../exception.h"
"error_handler.h"
"../error_handler.h"
"../error_handler.h"
1449844020 d:\users\john\documents\programming\github\etl\private\forward_list_base.h
1450959449 d:\users\john\documents\programming\github\etl\private\forward_list_base.h
<stddef.h>
"../exception.h"
"../error_handler.h"
1449844020 d:\users\john\documents\programming\github\etl\private\list_base.h
1450959449 d:\users\john\documents\programming\github\etl\private\list_base.h
<stddef.h>
"../exception.h"
"../error_handler.h"
1435083222 source:d:\users\john\documents\programming\github\etl\test\test_map.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_map.cpp
<UnitTest++/UnitTest++.h>
<map>
<array>
@ -3601,7 +3611,7 @@
<vector>
"../map.h"
1449838910 d:\users\john\documents\programming\github\etl\map.h
1452337350 d:\users\john\documents\programming\github\etl\map.h
<stddef.h>
<iterator>
<functional>
@ -3609,7 +3619,7 @@
"container.h"
"pool.h"
1449844974 d:\users\john\documents\programming\github\etl\imap.h
1452333665 d:\users\john\documents\programming\github\etl\imap.h
<iterator>
<algorithm>
<functional>
@ -3620,11 +3630,12 @@
"parameter_type.h"
"pool.h"
1449845229 d:\users\john\documents\programming\github\etl\private\map_base.h
1450265856 d:\users\john\documents\programming\github\etl\private\map_base.h
<stddef.h>
"../exception.h"
"../error_handler.h"
1443462794 source:d:\users\john\documents\programming\github\etl\test\test_optional.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_optional.cpp
<UnitTest++/UnitTest++.h>
<string>
<ostream>
@ -3632,12 +3643,13 @@
"../vector.h"
"data.h"
1449838910 d:\users\john\documents\programming\github\etl\optional.h
1452796556 d:\users\john\documents\programming\github\etl\optional.h
"alignment.h"
"type_traits.h"
"exception.h"
"error_handler.h"
1449848575 source:d:\users\john\documents\programming\github\etl\test\test_pool.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_pool.cpp
<UnitTest++/UnitTest++.h>
"ExtraCheckMacros.h"
"data.h"
@ -3645,11 +3657,12 @@
<vector>
"../pool.h"
1449844020 d:\users\john\documents\programming\github\etl\private\queue_base.h
1450265856 d:\users\john\documents\programming\github\etl\private\queue_base.h
<stddef.h>
"../exception.h"
"../error_handler.h"
1443462794 source:d:\users\john\documents\programming\github\etl\test\test_set.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_set.cpp
<UnitTest++/UnitTest++.h>
<set>
<array>
@ -3660,7 +3673,7 @@
<vector>
"../set.h"
1449838910 d:\users\john\documents\programming\github\etl\set.h
1452337350 d:\users\john\documents\programming\github\etl\set.h
<stddef.h>
<iterator>
<functional>
@ -3668,7 +3681,7 @@
"container.h"
"pool.h"
1449838910 d:\users\john\documents\programming\github\etl\iset.h
1452333782 d:\users\john\documents\programming\github\etl\iset.h
<iterator>
<algorithm>
<functional>
@ -3679,20 +3692,22 @@
"parameter_type.h"
"pool.h"
1449845257 d:\users\john\documents\programming\github\etl\private\set_base.h
1450265856 d:\users\john\documents\programming\github\etl\private\set_base.h
<stddef.h>
"../exception.h"
"../error_handler.h"
1449844020 d:\users\john\documents\programming\github\etl\private\stack_base.h
1450959449 d:\users\john\documents\programming\github\etl\private\stack_base.h
<stddef.h>
"../exception.h"
"../error_handler.h"
1449845425 source:d:\users\john\documents\programming\github\etl\test\test_type_traits.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_type_traits.cpp
<UnitTest++/UnitTest++.h>
"../type_traits.h"
<type_traits>
1449852797 source:d:\users\john\documents\programming\github\etl\test\test_variant.cpp
1450265856 source:d:\users\john\documents\programming\github\etl\test\test_variant.cpp
<UnitTest++/UnitTest++.h>
"ExtraCheckMacros.h"
"../variant.h"
@ -3700,7 +3715,7 @@
<vector>
<algorithm>
1449848793 d:\users\john\documents\programming\github\etl\variant.h
1450265856 d:\users\john\documents\programming\github\etl\variant.h
<stdint.h>
"array.h"
"largest.h"
@ -4769,3 +4784,28 @@
1452516033 /home/jwellbelove/Programming/etl/visitor.h
1453405766 source:d:\users\john\documents\programming\github\etl\test\test_intrusive_forward_list.cpp
<UnitTest++/UnitTest++.h>
"ExtraCheckMacros.h"
"data.h"
"../intrusive_forward_list.h"
<algorithm>
<array>
<forward_list>
<vector>
<list>
<string>
1453405528 d:\users\john\documents\programming\github\etl\intrusive_forward_list.h
<iterator>
<algorithm>
<functional>
<stddef.h>
"nullptr.h"
"type_traits.h"
"intrusive_forward_list_link.h"
1453324561 d:\users\john\documents\programming\github\etl\intrusive_forward_list_link.h
"error_handler.h"
"array.h"

View File

@ -1,389 +1,314 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<CodeBlocks_layout_file>
<ActiveTarget name="Linux" />
<File name="../../pool.h" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<ActiveTarget name="Windows" />
<File name="..\..\pool.h" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2334" topLine="35" />
</Cursor>
</File>
<File name="../test_map.cpp" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\test_map.cpp" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4405" topLine="112" />
</Cursor>
</File>
<File name="../../ivector.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\test_hash.cpp" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="13993" topLine="329" />
<Cursor1 position="4733" topLine="114" />
</Cursor>
</File>
<File name="../../map.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\private\flat_map_base.h" open="0" top="0" tabpos="23" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5955" topLine="137" />
<Cursor1 position="1579" topLine="0" />
</Cursor>
</File>
<File name="../test_set.cpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\..\unittest-cpp\UnitTest++\ExecuteTest.h" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5885" topLine="199" />
<Cursor1 position="1247" topLine="2" />
</Cursor>
</File>
<File name="../../static_assert.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1356" topLine="10" />
</Cursor>
</File>
<File name="../../optional.h" open="0" top="0" tabpos="22" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2746" topLine="58" />
</Cursor>
</File>
<File name="../test_bitset.cpp" open="0" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="12502" topLine="402" />
</Cursor>
</File>
<File name="../test_maths.cpp" open="1" top="0" tabpos="23" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4690" topLine="145" />
</Cursor>
</File>
<File name="../test_integral_limits.cpp" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1416" topLine="13" />
</Cursor>
</File>
<File name="../test_binary.cpp" open="1" top="1" tabpos="24" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="28553" topLine="805" />
</Cursor>
</File>
<File name="../test_io_port.cpp" open="0" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2724" topLine="58" />
</Cursor>
</File>
<File name="../../../unittest-cpp/UnitTest++/Win32/TimeHelpers.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="245" topLine="0" />
</Cursor>
</File>
<File name="../../vector_base.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2307" topLine="19" />
</Cursor>
</File>
<File name="../../container.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2523" topLine="42" />
</Cursor>
</File>
<File name="../test_algorithm.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1544" topLine="0" />
</Cursor>
</File>
<File name="../../error_handler.h" open="1" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4335" topLine="85" />
</Cursor>
</File>
<File name="../../lookup.h" open="1" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3734" topLine="55" />
</Cursor>
</File>
<File name="../../bloom_filter.h" open="1" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3055" topLine="57" />
</Cursor>
</File>
<File name="../../observer.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="6219" topLine="130" />
</Cursor>
</File>
<File name="../../variant.h" open="0" top="0" tabpos="32" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="28033" topLine="664" />
</Cursor>
</File>
<File name="../../queue.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2984" topLine="48" />
</Cursor>
</File>
<File name="../../io_port.h" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2314" topLine="48" />
</Cursor>
</File>
<File name="../../imap.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\imap.h" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="50514" topLine="1440" />
</Cursor>
</File>
<File name="../../exception.h" open="1" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\test_array.cpp" open="1" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2826" topLine="31" />
<Cursor1 position="1346" topLine="0" />
</Cursor>
</File>
<File name="../../private/multiset_base.h" open="0" top="0" tabpos="27" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\..\unittest-cpp\UnitTest++\TestRunner.h" open="0" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5342" topLine="125" />
<Cursor1 position="692" topLine="0" />
</Cursor>
</File>
<File name="../test_vector.cpp" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5103" topLine="122" />
</Cursor>
</File>
<File name="../../type_traits.h" open="1" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="10003" topLine="241" />
</Cursor>
</File>
<File name="../../../unittest-cpp/UnitTest++/TestRunner.cpp" open="1" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1941" topLine="41" />
</Cursor>
</File>
<File name="../../vector.h" open="0" top="0" tabpos="31" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4075" topLine="67" />
</Cursor>
</File>
<File name="../test_cyclic_value.cpp" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1365" topLine="12" />
</Cursor>
</File>
<File name="../../private/flat_map_base.h" open="0" top="0" tabpos="23" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1579" topLine="0" />
</Cursor>
</File>
<File name="../../../unittest-cpp/UnitTest++/ExecuteTest.h" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1193" topLine="16" />
</Cursor>
</File>
<File name="../../integral_limits.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2272" topLine="36" />
</Cursor>
</File>
<File name="../test_bloom_filter.cpp" open="1" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="6486" topLine="227" />
</Cursor>
</File>
<File name="../../ilist.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="17660" topLine="539" />
</Cursor>
</File>
<File name="../../deque.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4670" topLine="110" />
</Cursor>
</File>
<File name="../test_queue.cpp" open="1" top="0" tabpos="20" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4749" topLine="165" />
</Cursor>
</File>
<File name="../../../unittest-cpp/UnitTest++/Checks.h" open="1" top="0" tabpos="19" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="449" 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="257" topLine="0" />
</Cursor>
</File>
<File name="../main.cpp" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="829" topLine="0" />
</Cursor>
</File>
<File name="../../../unittest-cpp/UnitTest++/Test.cpp" open="1" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="628" topLine="0" />
</Cursor>
</File>
<File name="../../stack.h" open="0" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3203" topLine="57" />
</Cursor>
</File>
<File name="../../binary.h" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="18374" topLine="466" />
</Cursor>
</File>
<File name="../../function.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3693" topLine="67" />
</Cursor>
</File>
<File name="../test_exception.cpp" open="1" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1555" topLine="25" />
</Cursor>
</File>
<File name="../test_crc.cpp" open="1" top="0" tabpos="26" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="10782" topLine="346" />
</Cursor>
</File>
<File name="../../nullptr.h" open="0" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="560" topLine="9" />
</Cursor>
</File>
<File name="../test_array.cpp" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2687" topLine="59" />
</Cursor>
</File>
<File name="../test_observer.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="12567" topLine="397" />
</Cursor>
</File>
<File name="../../alignment.h" open="0" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5607" topLine="134" />
</Cursor>
</File>
<File name="../../../unittest-cpp/UnitTest++/TestRunner.h" open="1" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="772" topLine="2" />
</Cursor>
</File>
<File name="../../private/flat_set_base.h" open="0" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1579" topLine="0" />
</Cursor>
</File>
<File name="../../bitset.h" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4838" topLine="145" />
</Cursor>
</File>
<File name="../test_stack.cpp" open="1" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4455" topLine="170" />
</Cursor>
</File>
<File name="../../cyclic_value.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3578" topLine="85" />
</Cursor>
</File>
<File name="../../private/set_base.h" open="0" top="0" tabpos="29" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5234" topLine="132" />
</Cursor>
</File>
<File name="../test_type_traits.cpp" open="1" top="0" tabpos="17" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="29522" topLine="417" />
</Cursor>
</File>
<File name="../../private/deque_base.h" open="0" top="0" tabpos="20" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="../../Doxyfile" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="56760" topLine="1251" />
</Cursor>
</File>
<File name="../../iset.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="48031" topLine="1364" />
</Cursor>
</File>
<File name="../test_variant.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="11763" topLine="384" />
</Cursor>
</File>
<File name="../test_alignment.cpp" open="1" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2717" topLine="52" />
</Cursor>
</File>
<File name="../test_deque.cpp" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="20639" topLine="642" />
</Cursor>
</File>
<File name="../test_error_handler.cpp" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2668" topLine="89" />
</Cursor>
</File>
<File name="../../../unittest-cpp/UnitTest++/Config.h" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="777" topLine="0" />
</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="../../array.h" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4196" topLine="109" />
</Cursor>
</File>
<File name="../../list.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\map.h" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5955" topLine="137" />
</Cursor>
</File>
<File name="../test_optional.cpp" open="0" top="0" tabpos="23" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\..\unittest-cpp\UnitTest++\Checks.h" open="1" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3050" topLine="59" />
<Cursor1 position="469" topLine="0" />
</Cursor>
</File>
<File name="../../private/map_base.h" open="0" top="0" tabpos="26" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\array.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5149" topLine="121" />
<Cursor1 position="1998" topLine="258" />
</Cursor>
</File>
<File name="../../private/flat_multimap_base.h" open="0" top="0" tabpos="24" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\test_alignment.cpp" open="1" top="0" tabpos="9" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1604" topLine="0" />
<Cursor1 position="1554" topLine="0" />
</Cursor>
</File>
<File name="../test_hash.cpp" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\lookup.h" open="1" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5128" topLine="140" />
<Cursor1 position="3734" topLine="55" />
</Cursor>
</File>
<File name="../test_pool.cpp" open="1" top="0" tabpos="22" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\nullptr.h" open="1" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3188" topLine="66" />
<Cursor1 position="560" topLine="9" />
</Cursor>
</File>
<File name="../../endian.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2235" topLine="37" />
</Cursor>
</File>
<File name="../../ideque.h" open="1" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="25700" topLine="811" />
</Cursor>
</File>
<File name="../../private/vector_base.h" open="0" top="0" tabpos="22" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<File name="..\..\private\vector_base.h" open="0" top="0" tabpos="22" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1551" topLine="0" />
</Cursor>
</File>
<File name="..\..\iset.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="48031" topLine="1364" />
</Cursor>
</File>
<File name="..\test_variant.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="11763" topLine="384" />
</Cursor>
</File>
<File name="..\test_deque.cpp" open="0" top="0" tabpos="10" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="21475" topLine="641" />
</Cursor>
</File>
<File name="..\..\private\set_base.h" open="0" top="0" tabpos="29" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5234" topLine="132" />
</Cursor>
</File>
<File name="..\..\container.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2523" topLine="42" />
</Cursor>
</File>
<File name="..\test_cyclic_value.cpp" open="0" top="0" tabpos="4" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1365" topLine="12" />
</Cursor>
</File>
<File name="..\..\error_handler.h" open="0" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4037" topLine="53" />
</Cursor>
</File>
<File name="..\..\stack.h" open="0" top="0" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3203" topLine="57" />
</Cursor>
</File>
<File name="..\..\endian.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2235" topLine="37" />
</Cursor>
</File>
<File name="..\..\alignment.h" open="0" top="0" tabpos="25" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5607" topLine="134" />
</Cursor>
</File>
<File name="..\..\static_assert.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1356" topLine="10" />
</Cursor>
</File>
<File name="..\test_queue.cpp" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1603" topLine="28" />
</Cursor>
</File>
<File name="..\..\private\flat_multimap_base.h" open="0" top="0" tabpos="24" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1604" topLine="0" />
</Cursor>
</File>
<File name="..\test_binary.cpp" open="1" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1534" topLine="0" />
</Cursor>
</File>
<File name="..\test_forward_list.cpp" open="1" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3881" topLine="77" />
</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_error_handler.cpp" open="1" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2501" topLine="42" />
</Cursor>
</File>
<File name="..\test_algorithm.cpp" open="1" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1524" topLine="0" />
</Cursor>
</File>
<File name="..\..\deque.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4670" topLine="110" />
</Cursor>
</File>
<File name="..\..\private\deque_base.h" open="0" top="0" tabpos="20" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="0" topLine="0" />
</Cursor>
</File>
<File name="..\..\ideque.h" open="1" top="0" tabpos="15" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="29778" topLine="887" />
</Cursor>
</File>
<File name="..\..\integral_limits.h" open="0" top="0" tabpos="6" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2272" topLine="36" />
</Cursor>
</File>
<File name="..\..\queue.h" open="0" top="0" tabpos="11" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2984" topLine="48" />
</Cursor>
</File>
<File name="..\..\list.h" open="1" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4072" topLine="77" />
</Cursor>
</File>
<File name="..\..\..\unittest-cpp\UnitTest++\Test.cpp" open="0" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="662" topLine="0" />
</Cursor>
</File>
<File name="..\..\io_port.h" open="0" top="0" tabpos="14" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2314" topLine="48" />
</Cursor>
</File>
<File name="..\test_integral_limits.cpp" open="0" top="0" tabpos="3" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1416" topLine="13" />
</Cursor>
</File>
<File name="..\..\..\unittest-cpp\UnitTest++\Config.h" open="1" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="773" topLine="0" />
</Cursor>
</File>
<File name="..\..\type_traits.h" open="0" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="11681" topLine="241" />
</Cursor>
</File>
<File name="..\test_exception.cpp" open="1" top="0" tabpos="7" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2419" topLine="15" />
</Cursor>
</File>
<File name="..\..\binary.h" open="0" top="0" tabpos="18" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="18374" topLine="466" />
</Cursor>
</File>
<File name="..\..\optional.h" open="0" top="0" tabpos="22" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2746" topLine="58" />
</Cursor>
</File>
<File name="..\..\Doxyfile" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="56760" topLine="1251" />
</Cursor>
</File>
<File name="..\test_bitset.cpp" open="1" top="0" tabpos="12" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="1601" topLine="0" />
</Cursor>
</File>
<File name="..\test_type_traits.cpp" open="0" top="0" tabpos="30" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="30352" topLine="372" />
</Cursor>
</File>
<File name="..\..\vector.h" open="0" top="0" tabpos="31" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="4075" topLine="67" />
</Cursor>
</File>
<File name="..\..\function.h" open="0" top="0" tabpos="0" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3693" topLine="67" />
</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="257" topLine="0" />
</Cursor>
</File>
<File name="..\test_io_port.cpp" open="0" top="0" tabpos="21" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2724" topLine="58" />
</Cursor>
</File>
<File name="..\test_bloom_filter.cpp" open="1" top="0" tabpos="13" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="6486" topLine="208" />
</Cursor>
</File>
<File name="..\test_set.cpp" open="0" top="0" tabpos="1" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5885" topLine="199" />
</Cursor>
</File>
<File name="..\test_list.cpp" open="1" top="1" tabpos="16" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="29671" topLine="878" />
</Cursor>
</File>
<File name="..\..\ilist.h" open="0" top="0" tabpos="2" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="17660" topLine="539" />
</Cursor>
</File>
<File name="..\..\..\unittest-cpp\UnitTest++\TestRunner.cpp" open="0" top="0" tabpos="8" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="2020" topLine="25" />
</Cursor>
</File>
<File name="..\..\private\multiset_base.h" open="0" top="0" tabpos="27" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="5342" topLine="125" />
</Cursor>
</File>
<File name="..\..\cyclic_value.h" open="0" top="0" tabpos="5" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3578" topLine="85" />
</Cursor>
</File>
<File name="..\test_optional.cpp" open="0" top="0" tabpos="23" split="0" active="1" splitpos="0" zoom_1="0" zoom_2="0">
<Cursor>
<Cursor1 position="3050" topLine="59" />
</Cursor>
</File>
</CodeBlocks_layout_file>

View File

@ -45,8 +45,8 @@ typedef TestDataNDC<std::string> ItemNDC;
namespace
{
typedef etl::intrusive_forward_list_link<0> FirstLink;
typedef etl::intrusive_forward_list_link<1> SecondLink;
typedef etl::forward_link<0> FirstLink;
typedef etl::forward_link<1> SecondLink;
//***************************************************************************
class ItemDCNode : public FirstLink, public SecondLink

View File

@ -0,0 +1,133 @@
/******************************************************************************
The MIT License(MIT)
Embedded Template Library.
https://github.com/ETLCPP/etl
http://www.etlcpp.com
Copyright(c) 2016 jwellbelove
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files(the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
******************************************************************************/
#include <UnitTest++/UnitTest++.h>
#include "ExtraCheckMacros.h"
#include "data.h"
#include "../intrusive_links.h"
namespace
{
//*******************************************************
typedef etl::bidirectional_link<0, etl::link_option::AUTO_UNLINK> FirstLink;
typedef etl::bidirectional_link<1> SecondLink;
struct Data : public FirstLink, public SecondLink
{
Data(int value)
: value(value)
{
}
int value;
};
//*******************************************************
bool operator ==(const Data& lhs, const Data& rhs)
{
return lhs.value == rhs.value;
}
bool operator !=(const Data& lhs, const Data& rhs)
{
return !(lhs == rhs);
}
//*******************************************************
template <typename TLink>
void join(TLink* lhs, TLink* rhs)
{
if ((lhs == nullptr) && (rhs != nullptr))
{
rhs->etl_previous = nullptr;
}
else if ((lhs != nullptr) && (rhs == nullptr))
{
lhs->etl_next = nullptr;
}
else if ((lhs != nullptr) && (rhs != nullptr))
{
lhs->etl_next = rhs;
rhs->etl_previous = lhs;
}
}
SUITE(test_forward_list)
{
//*************************************************************************
TEST(test_bidirectional_link)
{
// FirstLink is auto-unlink, SecondLink is not.
Data* data0 = new Data(0);
Data* data1 = new Data(1);
Data* data2 = new Data(2);
Data* data3 = new Data(3);
join<FirstLink>(nullptr, data0);
join<FirstLink>(data0, data1);
join<FirstLink>(data1, data2);
join<FirstLink>(data2, data3);
join<FirstLink>(data3, nullptr);
join<SecondLink>(nullptr, data0);
join<SecondLink>(data0, data1);
join<SecondLink>(data1, data2);
join<SecondLink>(data2, data3);
join<SecondLink>(data3, nullptr);
delete data1;
CHECK(data0->FirstLink::etl_next == data2);
CHECK(data2->FirstLink::etl_previous == data0);
CHECK(data0->SecondLink::etl_next != data2);
CHECK(data0->SecondLink::etl_next != nullptr);
CHECK(data2->SecondLink::etl_previous != data0);
CHECK(data2->SecondLink::etl_previous != nullptr);
delete data0;
CHECK(data2->FirstLink::etl_next == data3);
CHECK(data2->FirstLink::etl_previous == nullptr);
CHECK(data3->FirstLink::etl_previous == data2);
CHECK(data2->SecondLink::etl_next == data3);
CHECK(data3->SecondLink::etl_previous != nullptr);
delete data3;
CHECK(data2->FirstLink::etl_next == nullptr);
CHECK(data2->FirstLink::etl_previous == nullptr);
CHECK(data2->SecondLink::etl_next != nullptr);
CHECK(data2->SecondLink::etl_previous != nullptr);
delete data2;
}
};
}

View File

@ -205,7 +205,7 @@
<ClInclude Include="..\..\instance_count.h" />
<ClInclude Include="..\..\integral_limits.h" />
<ClInclude Include="..\..\intrusive_forward_list.h" />
<ClInclude Include="..\..\intrusive_forward_list_node.h" />
<ClInclude Include="..\..\intrusive_links.h" />
<ClInclude Include="..\..\io_port.h" />
<ClInclude Include="..\..\ipool.h" />
<ClInclude Include="..\..\ipriority_queue.h" />
@ -337,6 +337,7 @@
<ClCompile Include="..\test_instance_count.cpp" />
<ClCompile Include="..\test_integral_limits.cpp" />
<ClCompile Include="..\test_intrusive_forward_list.cpp" />
<ClCompile Include="..\test_intrusive_links.cpp" />
<ClCompile Include="..\test_io_port.cpp" />
<ClCompile Include="..\test_jenkins.cpp" />
<ClCompile Include="..\test_largest.cpp" />

View File

@ -390,9 +390,6 @@
<ClInclude Include="..\..\intrusive_forward_list.h">
<Filter>ETL\Containers</Filter>
</ClInclude>
<ClInclude Include="..\..\intrusive_forward_list_node.h">
<Filter>ETL\Containers</Filter>
</ClInclude>
<ClInclude Include="..\..\private\deque_base.h">
<Filter>ETL\Private</Filter>
</ClInclude>
@ -465,6 +462,9 @@
<ClInclude Include="..\..\irr_cache.h">
<Filter>ETL\Containers</Filter>
</ClInclude>
<ClInclude Include="..\..\intrusive_links.h">
<Filter>ETL\Containers</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\..\unittest-cpp\UnitTest++\AssertException.cpp">
@ -710,6 +710,9 @@
<ClCompile Include="..\test_unordered_map.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\test_intrusive_links.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<None Include="..\..\Doxyfile">

View File

@ -39,7 +39,7 @@ SOFTWARE.
#include "container.h"
#include "pool.h"
#include "vector.h"
#include "basic_intrusive_forward_list.h"
#include "intrusive_forward_list.h"
#include "hash.h"
//*****************************************************************************
@ -56,6 +56,10 @@ namespace etl
template <typename TKey, typename TValue, const size_t MAX_SIZE_, typename THash = etl::hash<TKey>, typename TKeyEqual = std::equal_to<TKey> >
class unordered_map : public iunordered_map<TKey, TValue, THash, TKeyEqual>
{
private:
typedef iunordered_map<TKey, TValue, THash, TKeyEqual> base;
public:
static const size_t MAX_SIZE = MAX_SIZE_;
@ -64,18 +68,18 @@ namespace etl
/// Default constructor.
//*************************************************************************
unordered_map()
: iunordered_map<TKey, TValue, THash, TKeyEqual>(node_pool, buckets)
: base(node_pool, buckets)
{
iunordered_map<TKey, TValue, THash, TKeyEqual>::initialise();
base::initialise();
}
//*************************************************************************
/// Copy constructor.
//*************************************************************************
unordered_map(const unordered_map& other)
: iunordered_map<TKey, TValue, THash, TKeyEqual>(node_pool, buckets)
: base(node_pool, buckets)
{
iunordered_map<TKey, TValue, THash, TKeyEqual>::assign(other.cbegin(), other.cend());
base::assign(other.cbegin(), other.cend());
}
//*************************************************************************
@ -86,9 +90,9 @@ namespace etl
//*************************************************************************
template <typename TIterator>
unordered_map(TIterator first, TIterator last)
: iunordered_map<TKey, TValue, THash, TKeyEqual>(node_pool, buckets)
: base(node_pool, buckets)
{
iunordered_map<TKey, TValue, THash, TKeyEqual>::assign(first, last);
base::assign(first, last);
}
//*************************************************************************
@ -99,7 +103,7 @@ namespace etl
// Skip if doing self assignment
if (this != &rhs)
{
iunordered_map<TKey, TValue, THash, TKeyEqual>::assign(rhs.cbegin(), rhs.cend());
base::assign(rhs.cbegin(), rhs.cend());
}
return *this;
@ -108,10 +112,10 @@ namespace etl
private:
/// The pool of nodes used for the unordered_map.
etl::pool<typename iunordered_map<TKey, TValue, THash, TKeyEqual>::node_t, MAX_SIZE> node_pool;
etl::pool<typename base::node_t, MAX_SIZE> node_pool;
/// The buckets of node lists.
etl::vector<etl::basic_intrusive_forward_list, MAX_SIZE> buckets;
etl::vector<etl::intrusive_forward_list<typename base::node_t>, MAX_SIZE> buckets;
};
}