LCOV - code coverage report
Current view: top level - future - unordered_set.hpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 0 4 0.0 %
Date: 2017-07-14 10:03:36 Functions: 0 18 0.0 %

          Line data    Source code
       1             : /* src/future/unordered_set.hpp - future unordered_set library features
       2             : 
       3             :    Copyright (C) 1996-2013
       4             :    CACAOVM - Verein zur Foerderung der freien virtuellen Maschine CACAO
       5             : 
       6             :    This file is part of CACAO.
       7             : 
       8             :    This program is free software; you can redistribute it and/or
       9             :    modify it under the terms of the GNU General Public License as
      10             :    published by the Free Software Foundation; either version 2, or (at
      11             :    your option) any later version.
      12             : 
      13             :    This program is distributed in the hope that it will be useful, but
      14             :    WITHOUT ANY WARRANTY; without even the implied warranty of
      15             :    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      16             :    General Public License for more details.
      17             : 
      18             :    You should have received a copy of the GNU General Public License
      19             :    along with this program; if not, write to the Free Software
      20             :    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
      21             :    02110-1301, USA.
      22             : 
      23             : */
      24             : 
      25             : 
      26             : #ifndef FUTURE_UNORDERED_SET_HPP_
      27             : #define FUTURE_UNORDERED_SET_HPP_ 1
      28             : 
      29             : #include "config.h"
      30             : 
      31             : // get unordered_set
      32             : #if HAVE_STD_TR1_UNORDERED_SET
      33             : 
      34             : #include <tr1/unordered_set>
      35             : 
      36             : namespace cacao {
      37             : 
      38             : namespace _future = std::tr1;
      39             : const std::size_t unordered_set_default_bucket_count = 10;
      40             : 
      41             : } // end namespace cacao
      42             : 
      43             : #elif HAVE_BOOST_UNORDERED_SET
      44             : 
      45             : #include <boost/unordered_set.hpp>
      46             : 
      47             : namespace cacao {
      48             : 
      49             : namespace _future = boost;
      50             : const std::size_t unordered_set_default_bucket_count = boost::unordered::detail::default_bucket_count;
      51             : 
      52             : } // end namespace cacao
      53             : 
      54             : #else
      55             : #error "No implementation of unordered_set available"
      56             : #endif
      57             : 
      58             : #include "future/future_hash.hpp"
      59             : 
      60             : namespace cacao {
      61             : 
      62             : #if 0
      63             : // we want this:
      64             : template<
      65             :         class Key,
      66             :         class Hash = cacao::hash<Key>,
      67             :         class KeyEqual = std::equal_to<Key>,
      68             :         class Allocator = std::allocator<Key>
      69             : > using unordered_set = public _future::unordered_set<Key,Hash,KeyEqual,Allocator>;
      70             : #endif
      71             : 
      72             : template<
      73             :         class Key,
      74             :         class Hash = cacao::hash<Key>,
      75             :         class KeyEqual = std::equal_to<Key>,
      76             :         class Allocator = std::allocator<Key>
      77             : >
      78           0 : class unordered_set : public _future::unordered_set<Key,Hash,KeyEqual,Allocator> {
      79             :         typedef _future::unordered_set<Key,Hash,KeyEqual,Allocator> _Base;
      80             : public:
      81             :         typedef typename _Base::key_type key_type;
      82             :         typedef typename _Base::value_type value_type;
      83             :         typedef typename _Base::size_type size_type;
      84             :         typedef typename _Base::difference_type difference_type;
      85             :         typedef typename _Base::hasher hasher;
      86             :         typedef typename _Base::key_equal key_equal;
      87             :         typedef typename _Base::allocator_type allocator_type;
      88             :         typedef typename _Base::reference reference;
      89             :         typedef typename _Base::const_reference const_reference;
      90             :         typedef typename _Base::pointer pointer;
      91             :         typedef typename _Base::const_pointer const_pointer;
      92             :         typedef typename _Base::iterator iterator;
      93             :         typedef typename _Base::const_iterator const_iterator;
      94             :         typedef typename _Base::local_iterator local_iterator;
      95             :         typedef typename _Base::const_local_iterator const_local_iterator;
      96             : 
      97           0 :         explicit unordered_set(
      98             :                 size_type bucket_count = unordered_set_default_bucket_count,
      99             :                 const Hash& hash = Hash(),
     100             :                 const KeyEqual& equal = KeyEqual(),
     101             :                 const Allocator& alloc = Allocator())
     102           0 :                         : _Base(bucket_count, hash, equal, alloc) {}
     103             : 
     104             :         explicit unordered_set(
     105             :                 const Allocator& alloc)
     106             :                         : _Base(alloc) {}
     107             : 
     108             :         template<class InputIt>
     109             :         unordered_set(
     110             :                 InputIt first,
     111             :                 InputIt last,
     112             :                 size_type bucket_count = unordered_set_default_bucket_count,
     113             :                 const Hash& hash = Hash(),
     114             :                 const KeyEqual& equal = KeyEqual(),
     115             :                 const Allocator& alloc = Allocator())
     116             :                         : _Base(first, last, bucket_count, hash, equal, alloc) {}
     117             : 
     118           0 :         unordered_set(const unordered_set& other) : _Base(other) {}
     119             : 
     120             :         unordered_set(const unordered_set& other, const Allocator& alloc) : _Base(other,alloc) {}
     121             : 
     122             : };
     123             : 
     124             : template<
     125             :         class Key,
     126             :         class Hash = cacao::hash<Key>,
     127             :         class KeyEqual = std::equal_to<Key>,
     128             :         class Allocator = std::allocator<Key>
     129             : >
     130             : class unordered_multiset : public _future::unordered_multiset<Key,Hash,KeyEqual,Allocator> {
     131             :         typedef _future::unordered_multiset<Key,Hash,KeyEqual,Allocator> _Base;
     132             : public:
     133             :         typedef typename _Base::key_type key_type;
     134             :         typedef typename _Base::value_type value_type;
     135             :         typedef typename _Base::size_type size_type;
     136             :         typedef typename _Base::difference_type difference_type;
     137             :         typedef typename _Base::hasher hasher;
     138             :         typedef typename _Base::key_equal key_equal;
     139             :         typedef typename _Base::allocator_type allocator_type;
     140             :         typedef typename _Base::reference reference;
     141             :         typedef typename _Base::const_reference const_reference;
     142             :         typedef typename _Base::pointer pointer;
     143             :         typedef typename _Base::const_pointer const_pointer;
     144             :         typedef typename _Base::iterator iterator;
     145             :         typedef typename _Base::const_iterator const_iterator;
     146             :         typedef typename _Base::local_iterator local_iterator;
     147             :         typedef typename _Base::const_local_iterator const_local_iterator;
     148             : 
     149             :         explicit unordered_multiset(
     150             :                 size_type bucket_count = unordered_set_default_bucket_count,
     151             :                 const Hash& hash = Hash(),
     152             :                 const KeyEqual& equal = KeyEqual(),
     153             :                 const Allocator& alloc = Allocator())
     154             :                         : _Base(bucket_count, hash, equal, alloc) {}
     155             : 
     156             :         explicit unordered_multiset(
     157             :                 const Allocator& alloc)
     158             :                         : _Base(alloc) {}
     159             : 
     160             :         template<class InputIt>
     161             :         unordered_multiset(
     162             :                 InputIt first,
     163             :                 InputIt last,
     164             :                 size_type bucket_count = unordered_set_default_bucket_count,
     165             :                 const Hash& hash = Hash(),
     166             :                 const KeyEqual& equal = KeyEqual(),
     167             :                 const Allocator& alloc = Allocator())
     168             :                         : _Base(first, last, bucket_count, hash, equal, alloc) {}
     169             : 
     170             :         unordered_multiset(const unordered_multiset& other) : _Base(other) {}
     171             : 
     172             :         unordered_multiset(const unordered_multiset& other, const Allocator& alloc) : _Base(other,alloc) {}
     173             : 
     174             : };
     175             : 
     176             : } // end namespace cacao
     177             : #endif /* FUTURE_UNORDERED_SET_HPP_ */
     178             : 
     179             : /*
     180             :  * These are local overrides for various environment variables in Emacs.
     181             :  * Please do not remove this and leave it at the end of the file, where
     182             :  * Emacs will automagically detect them.
     183             :  * ---------------------------------------------------------------------
     184             :  * Local variables:
     185             :  * mode: c++
     186             :  * indent-tabs-mode: t
     187             :  * c-basic-offset: 4
     188             :  * tab-width: 4
     189             :  * End:
     190             :  * vim:noexpandtab:sw=4:ts=4:
     191             :  */

Generated by: LCOV version 1.11