| Index: gcc/libstdc++-v3/testsuite/util/testsuite_common_types.h
|
| diff --git a/gcc/libstdc++-v3/testsuite/util/testsuite_common_types.h b/gcc/libstdc++-v3/testsuite/util/testsuite_common_types.h
|
| deleted file mode 100644
|
| index ba8a967feb3c7986424956db7ba9746576e77172..0000000000000000000000000000000000000000
|
| --- a/gcc/libstdc++-v3/testsuite/util/testsuite_common_types.h
|
| +++ /dev/null
|
| @@ -1,688 +0,0 @@
|
| -// -*- C++ -*-
|
| -// typelist for the C++ library testsuite.
|
| -//
|
| -// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
|
| -//
|
| -// This file is part of the GNU ISO C++ Library. This library is free
|
| -// software; you can redistribute it and/or modify it under the
|
| -// terms of the GNU General Public License as published by the
|
| -// Free Software Foundation; either version 3, or (at your option)
|
| -// any later version.
|
| -//
|
| -// This library is distributed in the hope that it will be useful,
|
| -// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
| -// GNU General Public License for more details.
|
| -//
|
| -// You should have received a copy of the GNU General Public License along
|
| -// with this library; see the file COPYING3. If not see
|
| -// <http://www.gnu.org/licenses/>.
|
| -//
|
| -
|
| -#ifndef _TESTSUITE_COMMON_TYPES_H
|
| -#define _TESTSUITE_COMMON_TYPES_H 1
|
| -
|
| -#include <ext/typelist.h>
|
| -
|
| -#include <ext/new_allocator.h>
|
| -#include <ext/malloc_allocator.h>
|
| -#include <ext/mt_allocator.h>
|
| -#include <ext/bitmap_allocator.h>
|
| -#include <ext/pool_allocator.h>
|
| -
|
| -#include <algorithm>
|
| -
|
| -#include <vector>
|
| -#include <list>
|
| -#include <deque>
|
| -#include <string>
|
| -
|
| -#include <map>
|
| -#include <set>
|
| -#include <tr1/functional>
|
| -#include <tr1/unordered_map>
|
| -#include <tr1/unordered_set>
|
| -
|
| -#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
| -#include <cstdatomic>
|
| -#include <type_traits>
|
| -#endif
|
| -
|
| -namespace __gnu_test
|
| -{
|
| - using __gnu_cxx::typelist::node;
|
| - using __gnu_cxx::typelist::transform;
|
| - using __gnu_cxx::typelist::append;
|
| -
|
| - // All the allocators to test.
|
| - template<typename Tp, bool Thread>
|
| - struct allocator_policies
|
| - {
|
| - typedef Tp value_type;
|
| - typedef __gnu_cxx::new_allocator<Tp> a1;
|
| - typedef __gnu_cxx::malloc_allocator<Tp> a2;
|
| - typedef __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool, Thread> pool_policy;
|
| - typedef __gnu_cxx::__mt_alloc<Tp, pool_policy> a3;
|
| - typedef __gnu_cxx::bitmap_allocator<Tp> a4;
|
| - typedef __gnu_cxx::__pool_alloc<Tp> a5;
|
| - typedef node<_GLIBCXX_TYPELIST_CHAIN5(a1, a2, a3, a4, a5)> type;
|
| - };
|
| -
|
| - // Typelists for vector, string, list, deque.
|
| - // XXX should just use template templates
|
| - template<typename Tp, bool Thread>
|
| - struct vectors
|
| - {
|
| - typedef Tp value_type;
|
| -
|
| - template<typename Tl>
|
| - struct vector_shell
|
| - {
|
| - typedef Tl allocator_type;
|
| - typedef std::vector<value_type, allocator_type> type;
|
| - };
|
| -
|
| - typedef allocator_policies<value_type, Thread> allocator_types;
|
| - typedef typename allocator_types::type allocator_typelist;
|
| - typedef typename transform<allocator_typelist, vector_shell>::type type;
|
| - };
|
| -
|
| - template<typename Tp, bool Thread>
|
| - struct lists
|
| - {
|
| - typedef Tp value_type;
|
| -
|
| - template<typename Tl>
|
| - struct list_shell
|
| - {
|
| - typedef Tl allocator_type;
|
| - typedef std::list<value_type, allocator_type> type;
|
| - };
|
| -
|
| - typedef allocator_policies<value_type, Thread> allocator_types;
|
| - typedef typename allocator_types::type allocator_typelist;
|
| - typedef typename transform<allocator_typelist, list_shell>::type type;
|
| - };
|
| -
|
| - template<typename Tp, bool Thread>
|
| - struct deques
|
| - {
|
| - typedef Tp value_type;
|
| -
|
| - template<typename Tl>
|
| - struct deque_shell
|
| - {
|
| - typedef Tl allocator_type;
|
| - typedef std::deque<value_type, allocator_type> type;
|
| - };
|
| -
|
| - typedef allocator_policies<value_type, Thread> allocator_types;
|
| - typedef typename allocator_types::type allocator_typelist;
|
| - typedef typename transform<allocator_typelist, deque_shell>::type type;
|
| - };
|
| -
|
| - template<typename Tp, bool Thread>
|
| - struct strings
|
| - {
|
| - typedef Tp value_type;
|
| -
|
| - template<typename Tl>
|
| - struct string_shell
|
| - {
|
| - typedef Tl allocator_type;
|
| - typedef std::char_traits<value_type> traits_type;
|
| - typedef std::basic_string<value_type, traits_type, allocator_type> type;
|
| - };
|
| -
|
| - typedef allocator_policies<value_type, Thread> allocator_types;
|
| - typedef typename allocator_types::type allocator_typelist;
|
| - typedef typename transform<allocator_typelist, string_shell>::type type;
|
| - };
|
| -
|
| - // A typelist of vector, list, deque, and string all instantiated
|
| - // with each of the allocator policies.
|
| - template<typename Tp, bool Thread>
|
| - struct sequence_containers
|
| - {
|
| - typedef Tp value_type;
|
| -
|
| - typedef typename vectors<value_type, Thread>::type vector_typelist;
|
| - typedef typename lists<value_type, Thread>::type list_typelist;
|
| - typedef typename deques<value_type, Thread>::type deque_typelist;
|
| - typedef typename strings<value_type, Thread>::type string_typelist;
|
| -
|
| - typedef typename append<vector_typelist, list_typelist>::type a1;
|
| - typedef typename append<deque_typelist, string_typelist>::type a2;
|
| - typedef typename append<a1, a2>::type type;
|
| - };
|
| -
|
| - // Typelists for map, set, unordered_set, unordered_map.
|
| - template<typename Tp, bool Thread>
|
| - struct maps
|
| - {
|
| - typedef Tp value_type;
|
| - typedef Tp key_type;
|
| - typedef std::pair<const key_type, value_type> pair_type;
|
| - typedef std::less<key_type> compare_function;
|
| -
|
| - template<typename Tl>
|
| - struct container
|
| - {
|
| - typedef Tl allocator_type;
|
| - typedef std::map<key_type, value_type, compare_function, allocator_type> type;
|
| - };
|
| -
|
| - typedef allocator_policies<pair_type, Thread> allocator_types;
|
| - typedef typename allocator_types::type allocator_typelist;
|
| - typedef typename transform<allocator_typelist, container>::type type;
|
| - };
|
| -
|
| - template<typename Tp, bool Thread>
|
| - struct unordered_maps
|
| - {
|
| - typedef Tp value_type;
|
| - typedef Tp key_type;
|
| - typedef std::pair<const key_type, value_type> pair_type;
|
| - typedef std::tr1::hash<key_type> hash_function;
|
| - typedef std::equal_to<key_type> equality_function;
|
| -
|
| - template<typename Tl>
|
| - struct container
|
| - {
|
| - typedef Tl allocator_type;
|
| - typedef std::tr1::unordered_map<key_type, value_type, hash_function, equality_function, allocator_type> type;
|
| - };
|
| -
|
| - typedef allocator_policies<pair_type, Thread> allocator_types;
|
| - typedef typename allocator_types::type allocator_typelist;
|
| - typedef typename transform<allocator_typelist, container>::type type;
|
| - };
|
| -
|
| - template<typename Tp, bool Thread>
|
| - struct sets
|
| - {
|
| - typedef Tp value_type;
|
| - typedef Tp key_type;
|
| - typedef std::less<key_type> compare_function;
|
| -
|
| - template<typename Tl>
|
| - struct container
|
| - {
|
| - typedef Tl allocator_type;
|
| - typedef std::set<key_type, compare_function, allocator_type> type;
|
| - };
|
| -
|
| - typedef allocator_policies<key_type, Thread> allocator_types;
|
| - typedef typename allocator_types::type allocator_typelist;
|
| - typedef typename transform<allocator_typelist, container>::type type;
|
| - };
|
| -
|
| - template<typename Tp, bool Thread>
|
| - struct unordered_sets
|
| - {
|
| - typedef Tp value_type;
|
| - typedef Tp key_type;
|
| - typedef std::tr1::hash<key_type> hash_function;
|
| - typedef std::equal_to<key_type> equality_function;
|
| -
|
| - template<typename Tl>
|
| - struct container
|
| - {
|
| - typedef Tl allocator_type;
|
| - typedef std::tr1::unordered_set<key_type, hash_function, equality_function, allocator_type> type;
|
| - };
|
| -
|
| - typedef allocator_policies<key_type, Thread> allocator_types;
|
| - typedef typename allocator_types::type allocator_typelist;
|
| - typedef typename transform<allocator_typelist, container>::type type;
|
| - };
|
| -
|
| -
|
| - // A typelist of all associated container types, with each of the
|
| - // allocator policies.
|
| - template<typename Tp, bool Thread>
|
| - struct associative_containers
|
| - {
|
| - typedef Tp value_type;
|
| -
|
| - typedef typename maps<value_type, Thread>::type map_typelist;
|
| - typedef typename sets<value_type, Thread>::type set_typelist;
|
| - typedef typename unordered_maps<value_type, Thread>::type unordered_map_typelist;
|
| - typedef typename unordered_sets<value_type, Thread>::type unordered_set_typelist;
|
| -
|
| - typedef typename append<map_typelist, unordered_map_typelist>::type a1;
|
| - typedef typename append<set_typelist, unordered_set_typelist>::type a2;
|
| - typedef typename append<a1, a2>::type type;
|
| - };
|
| -
|
| - // A typelist of all integral types.
|
| - struct integral_types
|
| - {
|
| - typedef bool a1;
|
| - typedef char a2;
|
| - typedef signed char a3;
|
| - typedef unsigned char a4;
|
| - typedef short a5;
|
| - typedef unsigned short a6;
|
| - typedef int a7;
|
| - typedef unsigned int a8;
|
| - typedef long a9;
|
| - typedef unsigned long a10;
|
| - typedef long long a11;
|
| - typedef unsigned long long a12;
|
| - typedef wchar_t a13;
|
| -#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
| - typedef char16_t a14;
|
| - typedef char32_t a15;
|
| -
|
| - typedef node<_GLIBCXX_TYPELIST_CHAIN15(a1, a2, a3, a4, a5, a6, a7, a8, a9,
|
| - a10, a11, a12, a13, a14, a15)> type;
|
| -#else
|
| - typedef node<_GLIBCXX_TYPELIST_CHAIN13(a1, a2, a3, a4, a5, a6, a7, a8, a9,
|
| - a10, a11, a12, a13)> type;
|
| -#endif
|
| - };
|
| -
|
| -#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
| - struct atomic_integrals_no_bool
|
| - {
|
| - typedef std::atomic_char a2;
|
| - typedef std::atomic_schar a3;
|
| - typedef std::atomic_uchar a4;
|
| - typedef std::atomic_short a5;
|
| - typedef std::atomic_ushort a6;
|
| - typedef std::atomic_int a7;
|
| - typedef std::atomic_uint a8;
|
| - typedef std::atomic_long a9;
|
| - typedef std::atomic_ulong a10;
|
| - typedef std::atomic_llong a11;
|
| - typedef std::atomic_ullong a12;
|
| - typedef std::atomic_wchar_t a13;
|
| - typedef std::atomic_char16_t a14;
|
| - typedef std::atomic_char32_t a15;
|
| -
|
| - typedef node<_GLIBCXX_TYPELIST_CHAIN14(a2, a3, a4, a5, a6, a7, a8, a9,
|
| - a10, a11, a12, a13, a14, a15)> type;
|
| - };
|
| -
|
| - struct atomic_integrals
|
| - {
|
| - typedef std::atomic_bool a1;
|
| - typedef std::atomic_char a2;
|
| - typedef std::atomic_schar a3;
|
| - typedef std::atomic_uchar a4;
|
| - typedef std::atomic_short a5;
|
| - typedef std::atomic_ushort a6;
|
| - typedef std::atomic_int a7;
|
| - typedef std::atomic_uint a8;
|
| - typedef std::atomic_long a9;
|
| - typedef std::atomic_ulong a10;
|
| - typedef std::atomic_llong a11;
|
| - typedef std::atomic_ullong a12;
|
| - typedef std::atomic_wchar_t a13;
|
| - typedef std::atomic_char16_t a14;
|
| - typedef std::atomic_char32_t a15;
|
| -
|
| - typedef node<_GLIBCXX_TYPELIST_CHAIN15(a1, a2, a3, a4, a5, a6, a7, a8, a9,
|
| - a10, a11, a12, a13, a14, a15)> type;
|
| - };
|
| -
|
| -
|
| - template<typename Tp>
|
| - struct atomics
|
| - {
|
| - typedef Tp value_type;
|
| - typedef std::atomic<value_type> type;
|
| - };
|
| -
|
| - typedef transform<integral_types::type, atomics>::type atomics_tl;
|
| -#endif
|
| -
|
| -
|
| - struct has_increment_operators
|
| - {
|
| - template<typename _Tp>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - {
|
| - _Tp a;
|
| - ++a; // prefix
|
| - a++; // postfix
|
| - a += a;
|
| - }
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -
|
| - struct has_decrement_operators
|
| - {
|
| - template<typename _Tp>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - {
|
| - _Tp a;
|
| - --a; // prefix
|
| - a--; // postfix
|
| - a -= a;
|
| - }
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -
|
| - template<typename _Tp>
|
| - void
|
| - bitwise_operators()
|
| - {
|
| - _Tp a;
|
| - _Tp b;
|
| - a | b;
|
| - a & b;
|
| - a ^ b;
|
| - ~b;
|
| - }
|
| -
|
| - template<typename _Tp>
|
| - void
|
| - bitwise_assignment_operators()
|
| - {
|
| - _Tp a;
|
| - _Tp b;
|
| - a |= b; // set
|
| - a &= ~b; // clear
|
| - a ^= b;
|
| - }
|
| -
|
| - // 17.3.2.1.2 - Bitmask types [lib.bitmask.types]
|
| - // bitmask_operators
|
| - template<typename _BitmTp>
|
| - void
|
| - bitmask_operators()
|
| - {
|
| - bitwise_operators<_BitmTp>();
|
| - bitwise_assignment_operators<_BitmTp>();
|
| - }
|
| -
|
| - struct has_bitwise_operators
|
| - {
|
| - template<typename _Tp>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - {
|
| - bitwise_assignment_operators<_Tp>();
|
| - }
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -
|
| - // Generator to test standard layout
|
| -#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
| - struct has_trivial_cons_dtor
|
| - {
|
| - template<typename _Tp>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - {
|
| - typedef std::has_trivial_default_constructor<_Tp> ctor_p;
|
| - static_assert(ctor_p::value, "default constructor not trivial");
|
| -
|
| - typedef std::has_trivial_destructor<_Tp> dtor_p;
|
| - static_assert(dtor_p::value, "destructor not trivial");
|
| - }
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -
|
| - struct standard_layout
|
| - {
|
| - template<typename _Tp>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - {
|
| - // libstdc++/37907
|
| - // typedef std::is_standard_layout<_Tp> standard_layout_p;
|
| - // static_assert(standard_layout_p::value, "not standard_layout");
|
| -
|
| - typedef std::has_virtual_destructor<_Tp> ctor_p;
|
| - static_assert(!ctor_p::value, "has virtual destructor");
|
| - }
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -#endif
|
| -
|
| - // Generator to test base class
|
| - struct has_required_base_class
|
| - {
|
| - template<typename _TBase, typename _TDerived>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - {
|
| - const _TDerived& obj = __a;
|
| - const _TBase* base __attribute__((unused)) = &obj;
|
| - }
|
| -
|
| - _TDerived __a;
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -
|
| - // Generator to test assignment operator.
|
| - struct assignable
|
| - {
|
| - template<typename _Tp>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - { __v1 = __v2; }
|
| -
|
| - _Tp __v1;
|
| - _Tp __v2;
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -
|
| - // Generator to test default constructor.
|
| - struct default_constructible
|
| - {
|
| - template<typename _Tp>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - { _Tp __v; }
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -
|
| - // Generator to test copy constructor.
|
| - struct copy_constructible
|
| - {
|
| - template<typename _Tp>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - { _Tp __v2(__v1); }
|
| -
|
| - _Tp __v1;
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -
|
| - // Generator to test direct initialization, single value constructor.
|
| - struct single_value_constructible
|
| - {
|
| - template<typename _Ttype, typename _Tvalue>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - { _Ttype __v(__a); }
|
| -
|
| - _Tvalue __a;
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -
|
| - // Generator to test direct list initialization
|
| -#ifdef __GXX_EXPERIMENTAL_CXX0X__
|
| - struct direct_list_initializable
|
| - {
|
| - template<typename _Ttype, typename _Tvalue>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - {
|
| - _Ttype __v1 { }; // default ctor
|
| - _Ttype __v2 { __a }; // single-argument ctor
|
| - }
|
| -
|
| - _Tvalue __a;
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -#endif
|
| -
|
| - // Generator to test copy list initialization, aggregate initialization
|
| - struct copy_list_initializable
|
| - {
|
| - template<typename _Ttype, typename _Tvalue>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - { _Ttype __v = {__a}; }
|
| -
|
| - _Tvalue __a;
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -
|
| - // Generator to test integral conversion operator
|
| - struct integral_convertable
|
| - {
|
| - template<typename _Ttype, typename _Tvalue>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - {
|
| - _Tvalue __v0(0);
|
| - _Tvalue __v1(1);
|
| - _Ttype __a(__v1);
|
| - __v0 = __a;
|
| -
|
| - bool test __attribute__((unused)) = true;
|
| - VERIFY( __v1 == __v0 );
|
| - }
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -
|
| - // Generator to test integral assignment operator
|
| - struct integral_assignable
|
| - {
|
| - template<typename _Ttype, typename _Tvalue>
|
| - void
|
| - operator()()
|
| - {
|
| - struct _Concept
|
| - {
|
| - void __constraint()
|
| - {
|
| - _Tvalue __v0(0);
|
| - _Tvalue __v1(1);
|
| - _Ttype __a(__v0);
|
| - __a = __v1;
|
| - _Tvalue __vr = __a;
|
| -
|
| - bool test __attribute__((unused)) = true;
|
| - VERIFY( __v1 == __vr );
|
| - }
|
| - };
|
| -
|
| - void (_Concept::*__x)() __attribute__((unused))
|
| - = &_Concept::__constraint;
|
| - }
|
| - };
|
| -} // namespace __gnu_test
|
| -#endif
|
|
|