aboutsummaryrefslogtreecommitdiff
path: root/List.hpp
blob: 57a9a8f3f9c6ba299163128c1921c283f622fd82 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#ifndef LIST_HPP
# define LIST_HPP

namespace ft
{
	template < class T, class Alloc = allocator<T> > 
	class List
	{
	public:
		List(const allocator_type& alloc = allocator_type());
		// List(size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type());
		// template <class InputIterator>
	  	// List(InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type());
		// List(const list& x);
		~List();
		// List& operator = (const List& x);

		// iterators
		// iterator begin();
		// const_iterator begin() const;
		// iterator end();
		// const_iterator end() const;
		// reverse_iterator rbegin();
		// const_reverse_iterator rbegin() const;
		// reverse_iterator rend();
		// const_reverse_iterator rend() const;

		// capacity
		bool empty() const;
		size_type size() const;
		size_type max_size() const;

		// element access
		reference front();
		const_reference front() const;
		reference back();
		const_reference back();

		// modifiers
		// template <class InputIterator>
		// void assign (InputIterator first, InputIterator last);
		// void assign (size_type n, const value_type& val);
		void push_front (const value_type& val);
		void pop_front();
		void push_back (const value_type& val);
		void pop_back();
		// iterator insert (iterator position, const value_type& val);
		// void insert (iterator position, size_type n, const value_type& val);
		// template <class InputIterator>
		// void insert (iterator position, InputIterator first, InputIterator last);
		// iterator erase (iterator position);
		// iterator erase (iterator first, iterator last);
		// void swap (list& x);
		// void resize (size_type n, value_type val = value_type());
		// void clear();

		// operations
		// void splice (iterator position, list& x);
		// void splice (iterator position, list& x, iterator i);
		// void splice (iterator position, list& x, iterator first, iterator last);
		// void remove (const value_type& val);
		// template <class Predicate>
		// void remove_if (Predicate pred);
		// void unique();
		// template <class BinaryPredicate>
		// void unique (BinaryPredicate binary_pred);
        //
		// void merge (list& x);
		// template <class Compare>
		// void merge (list& x, Compare comp);
		// void sort();
		// template <class Compare>
		// void sort (Compare comp);
		// void reverse();

		// observers
		// allocator_type get_allocator() const;

	private:
		class PrivateList
		{
		public:
			PrivateList(const value_type& val);
			~PrivateList();

			PrivateList *next;
			T val;
		}
		PrivateList *front;
		PrivateList *back;
		size_type size;
	};
}

#endif