diff --git a/reference/spl/spldoublylinkedlist/construct.xml b/reference/spl/spldoublylinkedlist/construct.xml
new file mode 100644
index 0000000000..236ddeba09
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/construct.xml
@@ -0,0 +1,92 @@
+
+
+
+
+ SplDoublyLinkedList::__construct
+ Constructs a new doubly linked list
+
+
+
+ &reftitle.description;
+
+ SplDoublyLinkedList::__construct
+
+
+
+ This constructs a new empty doubly linked list.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+ &reftitle.examples;
+
+
+ SplDoublyLinkedList::__construct example
+
+push(2);
+$dll->push(3);
+$dll->unshift(5);
+
+var_dump($dll);
+?>
+]]>
+
+ &example.outputs;
+
+
+ int(0)
+ ["dllist":"SplDoublyLinkedList":private]=>
+ array(3) {
+ [0]=>
+ int(5)
+ [1]=>
+ int(2)
+ [2]=>
+ int(3)
+ }
+}
+]]>
+
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/count.xml b/reference/spl/spldoublylinkedlist/count.xml
new file mode 100644
index 0000000000..a5fcff56c6
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/count.xml
@@ -0,0 +1,50 @@
+
+
+
+
+ SplDoublyLinkedList::count
+ Counts the number of elements in the doubly linked list.
+
+
+
+ &reftitle.description;
+
+ intSplDoublyLinkedList::count
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns the number of elements in the doubly linked list.
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/current.xml b/reference/spl/spldoublylinkedlist/current.xml
new file mode 100644
index 0000000000..92c4edee00
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/current.xml
@@ -0,0 +1,52 @@
+
+
+
+
+ SplDoublyLinkedList::current
+ Return current array entry
+
+
+
+ &reftitle.description;
+
+ mixedSplDoublyLinkedList::current
+
+
+
+ Get the current doubly linked list node.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ The current node value.
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/getiteratormode.xml b/reference/spl/spldoublylinkedlist/getiteratormode.xml
new file mode 100644
index 0000000000..44c42cec64
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/getiteratormode.xml
@@ -0,0 +1,50 @@
+
+
+
+
+ SplDoublyLinkedList::getIteratorMode
+ Returns the mode of iteration
+
+
+
+ &reftitle.description;
+
+ intSplDoublyLinkedList::getIteratorMode
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns the different modes and flags that affect the iteration.
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/isempty.xml b/reference/spl/spldoublylinkedlist/isempty.xml
new file mode 100644
index 0000000000..6cad05ffde
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/isempty.xml
@@ -0,0 +1,50 @@
+
+
+
+
+ SplDoublyLinkedList::isEmpty
+ Checks whether the doubly linked list is empty.
+
+
+
+ &reftitle.description;
+
+ boolSplDoublyLinkedList::isEmpty
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns whether the doubly linked list is empty.
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/key.xml b/reference/spl/spldoublylinkedlist/key.xml
new file mode 100644
index 0000000000..a6f04f8b77
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/key.xml
@@ -0,0 +1,53 @@
+
+
+
+
+ SplDoublyLinkedList::key
+ Return current node index
+
+
+
+ &reftitle.description;
+
+ mixedSplDoublyLinkedList::key
+
+
+
+ This function returns the current node index
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ The current node index.
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/next.xml b/reference/spl/spldoublylinkedlist/next.xml
new file mode 100644
index 0000000000..cfc0a24574
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/next.xml
@@ -0,0 +1,53 @@
+
+
+
+
+ SplDoublyLinkedList::next
+ Move to next entry
+
+
+
+ &reftitle.description;
+
+ voidSplDoublyLinkedList::next
+
+
+
+ Move the iterator to the next node.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/offsetexists.xml b/reference/spl/spldoublylinkedlist/offsetexists.xml
new file mode 100644
index 0000000000..822766898c
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/offsetexists.xml
@@ -0,0 +1,61 @@
+
+
+
+
+ SplDoublyLinkedList::offsetExists
+ Returns whether the requested $index exists
+
+
+
+ &reftitle.description;
+
+ boolSplDoublyLinkedList::offsetExists
+ mixedindex
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ index
+
+
+ The index being checked.
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &true; if the requested index exists, otherwise &false;
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/offsetget.xml b/reference/spl/spldoublylinkedlist/offsetget.xml
new file mode 100644
index 0000000000..1ffc24dc9b
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/offsetget.xml
@@ -0,0 +1,61 @@
+
+
+
+
+ SplDoublyLinkedList::offsetGet
+ Returns the value at the specified $index
+
+
+
+ &reftitle.description;
+
+ mixedSplDoublyLinkedList::offsetGet
+ mixedindex
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ index
+
+
+ The index with the value.
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ The value at the specified index.
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/offsetset.xml b/reference/spl/spldoublylinkedlist/offsetset.xml
new file mode 100644
index 0000000000..95229c0582
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/offsetset.xml
@@ -0,0 +1,73 @@
+
+
+
+
+ SplDoublyLinkedList::offsetSet
+ Sets the value at the specified $index to $newval
+
+
+
+ &reftitle.description;
+
+ voidSplDoublyLinkedList::offsetSet
+ mixedindex
+ mixednewval
+
+
+
+ Sets the value at the specified index to newval.
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ index
+
+
+ The index being set.
+
+
+
+
+ newval
+
+
+ The new value for the index.
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/offsetunset.xml b/reference/spl/spldoublylinkedlist/offsetunset.xml
new file mode 100644
index 0000000000..3665f21fbe
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/offsetunset.xml
@@ -0,0 +1,65 @@
+
+
+
+
+ SplDoublyLinkedList::offsetUnset
+ Unsets the value at the specified $index
+
+
+
+ &reftitle.description;
+
+ voidSplDoublyLinkedList::offsetUnset
+ mixedindex
+
+
+
+ Unsets the value at the specified index.
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ index
+
+
+ The index being unset.
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/pop.xml b/reference/spl/spldoublylinkedlist/pop.xml
new file mode 100644
index 0000000000..fbf1ecec9b
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/pop.xml
@@ -0,0 +1,50 @@
+
+
+
+
+ SplDoublyLinkedList::pop
+ Pops a node from then end of the doubly linked list
+
+
+
+ &reftitle.description;
+
+ mixedSplDoublyLinkedList::pop
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ The value of the popped node.
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/push.xml b/reference/spl/spldoublylinkedlist/push.xml
new file mode 100644
index 0000000000..f79dd20382
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/push.xml
@@ -0,0 +1,64 @@
+
+
+
+
+ SplDoublyLinkedList::push
+ Pushes an element at the end of the doubly linked list
+
+
+
+ &reftitle.description;
+
+ voidSplDoublyLinkedList::push
+ mixedvalue
+
+
+
+ Pushes value at the end of the doubly linked list.
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ value
+
+
+ The value to push.
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/rewind.xml b/reference/spl/spldoublylinkedlist/rewind.xml
new file mode 100644
index 0000000000..afc37a9ebd
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/rewind.xml
@@ -0,0 +1,53 @@
+
+
+
+
+ SplDoublyLinkedList::rewind
+ Rewind iterator back to the start
+
+
+
+ &reftitle.description;
+
+ voidSplDoublyLinkedList::rewind
+
+
+
+ This rewinds the iterator to the beginning.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/setiteratormode.xml b/reference/spl/spldoublylinkedlist/setiteratormode.xml
new file mode 100644
index 0000000000..f7106a85f6
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/setiteratormode.xml
@@ -0,0 +1,81 @@
+
+
+
+
+ SplDoublyLinkedList::setIteratorMode
+ Sets the mode of iteration
+
+
+
+ &reftitle.description;
+
+ voidSplDoublyLinkedList::setIteratorMode
+ intmode
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ mode
+
+
+ There are two orthogonal sets of modes that can be set:
+
+
+
+ The direction of the iteration (either one or the other):
+
+ SplDoublyLnkedList::IT_MODE_LIFO (Stack style)
+ SplDoublyLnkedList::IT_MODE_FIFO (Queue style)
+
+
+
+ The behavior of the iterator (either one or the other):
+
+ SplDoublyLnkedList::IT_MODE_DELETE (Elements are deleted by the iterator)
+ SplDoublyLnkedList::IT_MODE_KEEP (Elements are traversed by the iterator)
+
+
+
+
+
+ The default mode is 0 : SplDoublyLnkedList::IT_MODE_FIFO | SplDoublyLnkedList::IT_MODE_KEEP
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/shift.xml b/reference/spl/spldoublylinkedlist/shift.xml
new file mode 100644
index 0000000000..552e26b980
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/shift.xml
@@ -0,0 +1,50 @@
+
+
+
+
+ SplDoublyLinkedList::shift
+ Shifts a node from the beginning of the doubly linked list
+
+
+
+ &reftitle.description;
+
+ mixedSplDoublyLinkedList::shift
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ The value of the shifted node.
+
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/unshift.xml b/reference/spl/spldoublylinkedlist/unshift.xml
new file mode 100644
index 0000000000..c0a2d760ae
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/unshift.xml
@@ -0,0 +1,64 @@
+
+
+
+
+ SplDoublyLinkedList::unshift
+ Prepends the doubly linked list with an element
+
+
+
+ &reftitle.description;
+
+ voidSplDoublyLinkedList::unshift
+ mixedvalue
+
+
+
+ Prepends value at the beginning of the doubly linked list.
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ value
+
+
+ The value to unshift.
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+
diff --git a/reference/spl/spldoublylinkedlist/valid.xml b/reference/spl/spldoublylinkedlist/valid.xml
new file mode 100644
index 0000000000..a7b4c2fd37
--- /dev/null
+++ b/reference/spl/spldoublylinkedlist/valid.xml
@@ -0,0 +1,53 @@
+
+
+
+
+ SplDoublyLinkedList::valid
+ Check whether the doubly linked list contains more entries
+
+
+
+ &reftitle.description;
+
+ boolSplDoublyLinkedList::valid
+
+
+
+ Checks if the doubly linked list contains any more nodes.
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ Returns &true; if the doubly linked list contains any more nodes, &false; otherwise.
+
+
+
+
+
+
diff --git a/reference/spl/splqueue/construct.xml b/reference/spl/splqueue/construct.xml
new file mode 100644
index 0000000000..7fdf9a3e31
--- /dev/null
+++ b/reference/spl/splqueue/construct.xml
@@ -0,0 +1,112 @@
+
+
+
+
+ SplQueue::__construct
+ Constructs a new queue implemented using a doubly linked list
+
+
+
+ &reftitle.description;
+
+ SplQueue::__construct
+
+
+
+ This constructs a new empty queue.
+
+
+ This method automatically sets the iterator mode to
+ SplDoublyLinkedList::IT_MODE_FIFO.
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+ &reftitle.examples;
+
+
+ SplQueue::__construct example
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+ Efficiently handling tasks with SplQueue
+
+setIteratorMode(SplQueue::IT_MODE_DELETE);
+
+// ... enqueue some tasks on the queue ...
+
+// process them
+foreach ($q as $task) {
+ // ... process $task ...
+
+ // add new tasks on the queue
+ $q[] = $newTask;
+ // ...
+}
+?>
+]]>
+
+
+
+
+
+
+
diff --git a/reference/spl/splqueue/dequeue.xml b/reference/spl/splqueue/dequeue.xml
new file mode 100644
index 0000000000..749e9f9209
--- /dev/null
+++ b/reference/spl/splqueue/dequeue.xml
@@ -0,0 +1,57 @@
+
+
+
+
+ SplQueue::dequeue
+ Dequeues a node from the queue
+
+
+ &reftitle.description;
+
+ mixedSplQueue::dequeue
+
+
+
+ Dequeues value from the top of of the queue.
+
+
+
+ SplQueue::dequeue is an alias of SplDoublyLinkedList::shift.
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ The value of the dequeued node.
+
+
+
+
+
+
diff --git a/reference/spl/splqueue/enqueue.xml b/reference/spl/splqueue/enqueue.xml
new file mode 100644
index 0000000000..f73fd96c98
--- /dev/null
+++ b/reference/spl/splqueue/enqueue.xml
@@ -0,0 +1,68 @@
+
+
+
+
+ SplQueue::enqueue
+ Adds an element to the queue.
+
+
+ &reftitle.description;
+
+ voidSplQueue::enqueue
+ mixedvalue
+
+
+
+ Enqueues value at the end of the queue.
+
+
+
+ SplQueue::enqueue is an alias of SplDoublyLinkedList::push.
+
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ value
+
+
+ The value to enqueue.
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+
diff --git a/reference/spl/splqueue/setiteratormode.xml b/reference/spl/splqueue/setiteratormode.xml
new file mode 100644
index 0000000000..251730b6a4
--- /dev/null
+++ b/reference/spl/splqueue/setiteratormode.xml
@@ -0,0 +1,81 @@
+
+
+
+
+ SplQueue::setIteratorMode
+ Sets the mode of iteration
+
+
+
+ &reftitle.description;
+
+ voidSplQueue::setIteratorMode
+ intmode
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ mode
+
+
+ There is only one iteration parameter you can modify.
+
+
+
+ The behavior of the iterator (either one or the other):
+
+ SplDoublyLnkedList::IT_MODE_DELETE (Elements are deleted by the iterator)
+ SplDoublyLnkedList::IT_MODE_KEEP (Elements are traversed by the iterator)
+
+
+
+
+
+ The default mode is 0x0 : SplDoublyLnkedList::IT_MODE_FIFO | SplDoublyLnkedList::IT_MODE_KEEP
+
+
+
+
+ The direction of iteration can no longer be changer for SplQueues.
+ Trying to do so will result in a RuntimeException being thrown.
+
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+
+
diff --git a/reference/spl/splstack/construct.xml b/reference/spl/splstack/construct.xml
new file mode 100644
index 0000000000..c2942d4364
--- /dev/null
+++ b/reference/spl/splstack/construct.xml
@@ -0,0 +1,90 @@
+
+
+
+
+ SplStack::__construct
+ Constructs a new stack implemented using a doubly linked list
+
+
+
+ &reftitle.description;
+
+ SplStack::__construct
+
+
+
+ This constructs a new empty stack.
+
+
+ This method automatically sets the iterator mode to
+ SplDoublyLinkedList::IT_MODE_LIFO.
+
+
+
+
+
+
+ &reftitle.parameters;
+ &no.function.parameters;
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+ &reftitle.examples;
+
+
+ SplStack::__construct example
+
+
+]]>
+
+ &example.outputs;
+
+
+
+
+
+
+
+
+
diff --git a/reference/spl/splstack/setiteratormode.xml b/reference/spl/splstack/setiteratormode.xml
new file mode 100644
index 0000000000..02d55afee0
--- /dev/null
+++ b/reference/spl/splstack/setiteratormode.xml
@@ -0,0 +1,81 @@
+
+
+
+
+ SplStack::setIteratorMode
+ Sets the mode of iteration
+
+
+
+ &reftitle.description;
+
+ voidSplStack::setIteratorMode
+ intmode
+
+
+
+
+ &reftitle.parameters;
+
+
+
+ mode
+
+
+ There is only one iteration parameter you can modify.
+
+
+
+ The behavior of the iterator (either one or the other):
+
+ SplDoublyLnkedList::IT_MODE_DELETE (Elements are deleted by the iterator)
+ SplDoublyLnkedList::IT_MODE_KEEP (Elements are traversed by the iterator)
+
+
+
+
+
+ The default mode is 0x2 : SplDoublyLnkedList::IT_MODE_LIFO | SplDoublyLnkedList::IT_MODE_KEEP
+
+
+
+
+ The direction of iteration can no longer be changer for SplStacks.
+ Trying to do so will result in a RuntimeException being thrown.
+
+
+
+
+
+
+
+
+
+ &reftitle.returnvalues;
+
+ &return.void;
+
+
+
+
+
+