summaryrefslogtreecommitdiffstats
path: root/libcxx/test/strings/basic.string/test_allocator.h
diff options
context:
space:
mode:
authorMarshall Clow <mclow.lists@gmail.com>2013-12-03 00:18:10 +0000
committerMarshall Clow <mclow.lists@gmail.com>2013-12-03 00:18:10 +0000
commitc3deeb5f89f0fa733e4e2c4d260d6f816d6b1b5e (patch)
treea59c2eb3bc80868163acd2b90331ceb4fed6fb67 /libcxx/test/strings/basic.string/test_allocator.h
parentba71833846c66d80ccc52c3fec57772f5995bf5b (diff)
downloadbcm5719-llvm-c3deeb5f89f0fa733e4e2c4d260d6f816d6b1b5e.tar.gz
bcm5719-llvm-c3deeb5f89f0fa733e4e2c4d260d6f816d6b1b5e.zip
Found six (nmostly) identical files named 'test_allocator.h' in the libcxx test suite. Moved one to /support, made it a superset, and removed all but one of the others, and iupdated all the includes. Left the odd one (thread/futures/test_allocator.h) for later.
llvm-svn: 196174
Diffstat (limited to 'libcxx/test/strings/basic.string/test_allocator.h')
-rw-r--r--libcxx/test/strings/basic.string/test_allocator.h75
1 files changed, 0 insertions, 75 deletions
diff --git a/libcxx/test/strings/basic.string/test_allocator.h b/libcxx/test/strings/basic.string/test_allocator.h
deleted file mode 100644
index 89852159d3c..00000000000
--- a/libcxx/test/strings/basic.string/test_allocator.h
+++ /dev/null
@@ -1,75 +0,0 @@
-#ifndef TEST_ALLOCATOR_H
-#define TEST_ALLOCATOR_H
-
-#include <cstddef>
-#include <type_traits>
-#include <cstdlib>
-#include <new>
-#include <climits>
-
-class test_alloc_base
-{
-protected:
- static int count;
-public:
- static int throw_after;
-};
-
-int test_alloc_base::count = 0;
-int test_alloc_base::throw_after = INT_MAX;
-
-template <class T>
-class test_allocator
- : public test_alloc_base
-{
- int data_;
-
- template <class U> friend class test_allocator;
-public:
-
- typedef unsigned size_type;
- typedef int difference_type;
- typedef T value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef typename std::add_lvalue_reference<value_type>::type reference;
- typedef typename std::add_lvalue_reference<const value_type>::type const_reference;
-
- template <class U> struct rebind {typedef test_allocator<U> other;};
-
- test_allocator() throw() : data_(-1) {}
- explicit test_allocator(int i) throw() : data_(i) {}
- test_allocator(const test_allocator& a) throw()
- : data_(a.data_) {}
- template <class U> test_allocator(const test_allocator<U>& a) throw()
- : data_(a.data_) {}
- ~test_allocator() throw() {data_ = 0;}
- pointer address(reference x) const {return &x;}
- const_pointer address(const_reference x) const {return &x;}
- pointer allocate(size_type n, const void* = 0)
- {
- if (count >= throw_after) {
-#ifndef _LIBCPP_NO_EXCEPTIONS
- throw std::bad_alloc();
-#else
- std::terminate();
-#endif
- }
- ++count;
- return (pointer)std::malloc(n * sizeof(T));
- }
- void deallocate(pointer p, size_type n)
- {std::free(p);}
- size_type max_size() const throw()
- {return UINT_MAX / sizeof(T);}
- void construct(pointer p, const T& val)
- {::new(p) T(val);}
- void destroy(pointer p) {p->~T();}
-
- friend bool operator==(const test_allocator& x, const test_allocator& y)
- {return x.data_ == y.data_;}
- friend bool operator!=(const test_allocator& x, const test_allocator& y)
- {return !(x == y);}
-};
-
-#endif // TEST_ALLOCATOR_H
OpenPOWER on IntegriCloud