--- /dev/null
+# class pq\Cursor
+
+Declare a cursor.
+
+## Constants:
+
+* BINARY
+ Causes the cursor to return data in binary rather than in text format. You probalby do not want to use that.
+* INSENSITIVE
+ The data returned by the cursor should be unaffected by updates to the tables underlying the cursor that take place after the cursor was opened.
+* WITH_HOLD
+ The cursor should stay usable after the transaction that created it was successfully committed.
+* SCROLL
+ Force that rows can be retrieved in any order from the cursor.
+* NO_SCROLL
+ Force that rows are only retrievable in sequiential order.
+
+> ***NOTE:***
+ See the [notes in the official PostgreSQL documentation](http://www.postgresql.org/docs/current/static/sql-declare.html#SQL-DECLARE-NOTES) for more information.
+
+## Properties:
+
+* public (readonly) pq\Connection $connection
+ The connection the cursor was declared on.
+* public (readonly) string $name
+ The identifying name of the cursor.
--- /dev/null
+# void pq\Cursor::__construct(pq\Connection $conn, int $flags, string $query[, bool $async = FALSE])
+
+Declare a cursor.
+See pq\Connection::declare().
+
+## Params:
+
+* pq\Connection $connection
+ The connection on which the cursor should be declared.
+* int $flags
+ See pq\Cursor constants.
+* string $query
+ The query for ehich the cursor should be opened.
+* bool $async
+ Whether to declare the cursor [asynchronously](pq/Connection/: Asynchronous Usage).
+
+## Throws:
+
+* pq\Exception\InvalidArgumentException
+* pq\Exception\BadMethodCallException
+* pq\Exception\RuntimeException
--- /dev/null
+# void pq\Cursor::close()
+
+Close an open cursor.
+This is a no-op on already closed cursors.
+
+## Params:
+
+None.
+
+## Throws:
+
--- /dev/null
+# pq\Result pq\Cursor::fetch([string $spec = "1"])
+
+Fetch rows from the cursor.
+See pq\Cursor::move().
+
+## Params:
+
+* Optional string $spec = "1"
+ What to fetch.
+
+### Fetch argument:
+
+FETCH and MOVE usually accepts arguments like the following, where `count` is the number of rows:
+
+* NEXT
+* PRIOR
+* FIRST
+* LAST
+* ABSOLUTE `count`
+* RELATIVE `count`
+* `count`
+* ALL
+* FORWARD
+* FORWARD `count`
+* FORWARD ALL
+* BACKWARD
+* BACKWARD `count`
+* BACKWARD ALL
+
+See the [official PostgreSQL documentaion](http://www.postgresql.org/docs/current/static/sql-fetch.html) for details.
+
+## Returns:
+
+* pq\Result, the fetched row(s).
+
+## Throws:
+
+* pq\Exception\InvalidArgumentException
+* pq\Exception\BadMethodCallException
+* pq\Exception\RuntimeException
+
+## Example:
+
+ <?php
+
+ $c = new pq\Connection;
+ $p = new pq\Cursor($c, "mycursor", pq\Cursor::WITH_HOLD,
+ "SELECT * FROM generate_series(0,29) s WHERE (s%2)=0");
+
+ for ($r = $p->fetch(2); $r->numRows; $p->move(1), $r = $p->fetch(2)) {
+ foreach ($r as $row) {
+ foreach ($row as $col) {
+ echo " $col";
+ }
+ echo "\n";
+ }
+ }
+
+ ?>
+
+Yields:
+
+ 0
+ 2
+ 6
+ 8
+ 12
+ 14
+ 18
+ 20
+ 24
+ 26
--- /dev/null
+# void pq\Cursor::fetchAsync([string $spec = "1"[, callable $callback = NULL]])
+
+[Asynchronously](pq/Connection/: Asynchronous Usage) fetch rows from the cursor.
+See pq\Cursor::fetch().
+
+## Params:
+
+* Optional string $spec = "1"
+ What to fetch.
+* Optional callable $callback as function(pq\Result $res)
+ A callback to execute when the result is ready.
+
+## Throws:
+
+* pq\Exception\InvalidArgumentException
+* pq\Exception\BadMethodCallException
+* pq\Exception\RuntimeException
--- /dev/null
+# pq\Result pq\Cursor::move([string $spec = "1"])
+
+Move the cursor.
+See pq\Cursor::fetch().
+
+## Params:
+
+* Optional string $spec = "1"
+ What to fetch.
+
+### Fetch argument:
+
+FETCH and MOVE usually accepts arguments like the following, where `count` is the number of rows:
+
+* NEXT
+* PRIOR
+* FIRST
+* LAST
+* ABSOLUTE `count`
+* RELATIVE `count`
+* `count`
+* ALL
+* FORWARD
+* FORWARD `count`
+* FORWARD ALL
+* BACKWARD
+* BACKWARD `count`
+* BACKWARD ALL
+
+See the [official PostgreSQL documentaion](http://www.postgresql.org/docs/current/static/sql-move.html) for details.
+
+## Returns:
+
+* pq\Result, command status.
+
+## Throws:
+
+* pq\Exception\InvalidArgumentException
+* pq\Exception\BadMethodCallException
+* pq\Exception\RuntimeException
--- /dev/null
+# void pq\Cursor::moveAsync([string $spec = "1"])
+
+[Asynchronously](pq/Connection/: Asynchronous Usage) move the cursor.
+See pq\Cursor::move().
+
+## Params:
+
+* Optional string $spec = "1"
+ What to fetch.
+* Optional callable $callback as function(pq\Result $res)
+ A callback to execute when the command completed.
+
+## Throws:
+
+* pq\Exception\InvalidArgumentException
+* pq\Exception\BadMethodCallException
+* pq\Exception\RuntimeException
--- /dev/null
+# void pq\Cursor::open()
+
+Reopen a cursor.
+This is a no-op on already open cursors.
+
+> ***NOTE:***
+ Only cursors closed by pq\Cursor::close() will be reopened.
+
+## Params:
+
+None.
+
+## Throws:
+
+* pq\Exception\InvalidArgumentException
+* pq\Exception\BadMethodCallException
+* pq\Exception\RuntimeException