Revert r136547, r136545, and r136542 by removing slist.

This was checked in without review. It is not clear its reasonable to
include with libc++ at all, and needs discussion at a highlevel before
moving forward.

It's also completely lacking tests, and included several bugs in the
implementation.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@136577 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chandler Carruth 2011-07-30 21:10:18 +00:00
parent a73da5d2ca
commit 9d7530935d

View File

@ -1,126 +0,0 @@
// -*- C++ -*-
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef _LIBCPP__EXT_SLIST
#define _LIBCPP__EXT_SLIST
#include <__config>
#include <forward_list>
#include <iterator>
#pragma GCC system_header
namespace __gnu_cxx {
using namespace std;
template <class _Tp, class _Alloc = allocator<_Tp> >
class _LIBCPP_VISIBLE slist : forward_list<_Tp, _Alloc>
{
public:
typedef forward_list<_Tp, _Alloc> __base_type;
using typename __base_type::value_type;
using typename __base_type::pointer;
using typename __base_type::reference;
using typename __base_type::const_reference;
using typename __base_type::size_type;
using typename __base_type::difference_type;
using typename __base_type::iterator;
using typename __base_type::const_iterator;
using __base_type::begin;
using __base_type::end;
using __base_type::max_size;
using __base_type::empty;
using __base_type::front;
using __base_type::push_front;
using __base_type::pop_front;
using __base_type::clear;
using __base_type::resize;
using __base_type::insert_after;
using __base_type::erase_after;
using __base_type::splice_after;
using __base_type::remove;
using __base_type::remove_if;
using __base_type::unique;
using __base_type::sort;
using __base_type::reverse;
_LIBCPP_INLINE_VISIBILITY
slist() { }
_LIBCPP_INLINE_VISIBILITY
slist(size_type __n) : __base_type(__n) { }
_LIBCPP_INLINE_VISIBILITY
slist(size_type __n, const _Tp& __t) : __base_type(__n, __t) { }
template <typename _InputIterator>
_LIBCPP_INLINE_VISIBILITY
slist(_InputIterator __f, _InputIterator __l) : __base_type(__f, __l) { }
_LIBCPP_INLINE_VISIBILITY
void swap (slist& __s) { __base_type::swap(__s); }
_LIBCPP_INLINE_VISIBILITY
void merge (slist& __s) { __base_type::merge(__s); }
_LIBCPP_INLINE_VISIBILITY
friend bool operator==(const slist& __l, const slist& __r)
{
return static_cast<const __base_type&>(__l) ==
static_cast<const __base_type&>(__r);
}
_LIBCPP_INLINE_VISIBILITY
friend bool operator<(const slist& __l, const slist& __r)
{
return static_cast<const __base_type&>(__l) ==
static_cast<const __base_type&>(__r);
}
_LIBCPP_INLINE_VISIBILITY
size_type size() const { return _VSTD::distance(begin(), end()); }
iterator previous(iterator __pos);
const_iterator previous(const_iterator __pos);
_LIBCPP_INLINE_VISIBILITY
iterator insert(iterator __pos, const _Tp& __x) { return insert_after(previous(__pos), __x); }
template <class _InputIterator>
_LIBCPP_INLINE_VISIBILITY
void insert(iterator __pos, _InputIterator __f, _InputIterator __l) { return insert_after(previous(__pos), __f, __l); }
_LIBCPP_INLINE_VISIBILITY
void insert(iterator __pos, size_type __n, const _Tp& __x) { return insert_after(previous(__pos), __n, __x); }
_LIBCPP_INLINE_VISIBILITY
iterator erase(iterator __pos) { return erase_after(previous(__pos)); }
_LIBCPP_INLINE_VISIBILITY
iterator erase(iterator __f, iterator __l) { return erase_after(previous(__f), previous(__l)); }
};
template <class _Tp, class _Alloc>
inline _LIBCPP_INLINE_VISIBILITY
typename slist<_Tp, _Alloc>::iterator slist<_Tp, _Alloc>::previous(iterator __pos)
{
iterator __a = begin(), __b = begin();
while (++__a != __pos)
++__b;
return __b;
}
template <class _Tp, class _Alloc>
inline _LIBCPP_INLINE_VISIBILITY
typename slist<_Tp, _Alloc>::const_iterator slist<_Tp, _Alloc>::previous(const_iterator __pos)
{
iterator __a = begin(), __b = begin();
while (++__a != __pos)
++__b;
return __b;
}
}
#endif