Add method chaining support to CI_Table
diff --git a/system/libraries/Table.php b/system/libraries/Table.php
index b77fcf1..1d43208 100644
--- a/system/libraries/Table.php
+++ b/system/libraries/Table.php
@@ -117,7 +117,7 @@
 	/**
 	 * Set the template
 	 *
-	 * @param	array
+	 * @param	array	$template
 	 * @return	bool
 	 */
 	public function set_template($template)
@@ -139,12 +139,13 @@
 	 * Can be passed as an array or discreet params
 	 *
 	 * @param	mixed
-	 * @return	void
+	 * @return	CI_Table
 	 */
 	public function set_heading($args = array())
 	{
 		$args = func_get_args();
 		$this->heading = $this->_prep_args($args);
+		return $this;
 	}
 
 	// --------------------------------------------------------------------
@@ -155,9 +156,9 @@
 	 * columns. This allows a single array with many elements to be
 	 * displayed in a table that has a fixed column count.
 	 *
-	 * @param	array
-	 * @param	int
-	 * @return	void
+	 * @param	array	$array
+	 * @param	int	$col_limit
+	 * @return	array
 	 */
 	public function make_columns($array = array(), $col_limit = 0)
 	{
@@ -202,12 +203,13 @@
 	 *
 	 * Can be passed as an array or discreet params
 	 *
-	 * @param	mixed
-	 * @return	void
+	 * @param	mixed	$value
+	 * @return	CI_Table
 	 */
 	public function set_empty($value)
 	{
 		$this->empty_cells = $value;
+		return $this;
 	}
 
 	// --------------------------------------------------------------------
@@ -218,12 +220,13 @@
 	 * Can be passed as an array or discreet params
 	 *
 	 * @param	mixed
-	 * @return	void
+	 * @return	CI_Table
 	 */
 	public function add_row($args = array())
 	{
 		$args = func_get_args();
 		$this->rows[] = $this->_prep_args($args);
+		return $this;
 	}
 
 	// --------------------------------------------------------------------
@@ -271,8 +274,8 @@
 	/**
 	 * Add a table caption
 	 *
-	 * @param	string
-	 * @return	void
+	 * @param	string	$caption
+	 * @return	CI_Table
 	 */
 	public function set_caption($caption)
 	{
@@ -284,7 +287,7 @@
 	/**
 	 * Generate the table
 	 *
-	 * @param	mixed
+	 * @param	mixed	$table_data
 	 * @return	string
 	 */
 	public function generate($table_data = NULL)
@@ -417,13 +420,14 @@
 	/**
 	 * Clears the table arrays.  Useful if multiple tables are being generated
 	 *
-	 * @return	void
+	 * @return	CI_Table
 	 */
 	public function clear()
 	{
-		$this->rows		= array();
-		$this->heading		= array();
-		$this->auto_heading	= TRUE;
+		$this->rows = array();
+		$this->heading = array();
+		$this->auto_heading = TRUE;
+		return $this;
 	}
 
 	// --------------------------------------------------------------------
@@ -528,31 +532,31 @@
 	protected function _default_template()
 	{
 		return array(
-				'table_open'		=> '<table border="0" cellpadding="4" cellspacing="0">',
+			'table_open'		=> '<table border="0" cellpadding="4" cellspacing="0">',
 
-				'thead_open'		=> '<thead>',
-				'thead_close'		=> '</thead>',
+			'thead_open'		=> '<thead>',
+			'thead_close'		=> '</thead>',
 
-				'heading_row_start'	=> '<tr>',
-				'heading_row_end'	=> '</tr>',
-				'heading_cell_start'	=> '<th>',
-				'heading_cell_end'	=> '</th>',
+			'heading_row_start'	=> '<tr>',
+			'heading_row_end'	=> '</tr>',
+			'heading_cell_start'	=> '<th>',
+			'heading_cell_end'	=> '</th>',
 
-				'tbody_open'		=> '<tbody>',
-				'tbody_close'		=> '</tbody>',
+			'tbody_open'		=> '<tbody>',
+			'tbody_close'		=> '</tbody>',
 
-				'row_start'		=> '<tr>',
-				'row_end'		=> '</tr>',
-				'cell_start'		=> '<td>',
-				'cell_end'		=> '</td>',
+			'row_start'		=> '<tr>',
+			'row_end'		=> '</tr>',
+			'cell_start'		=> '<td>',
+			'cell_end'		=> '</td>',
 
-				'row_alt_start'		=> '<tr>',
-				'row_alt_end'		=> '</tr>',
-				'cell_alt_start'	=> '<td>',
-				'cell_alt_end'		=> '</td>',
+			'row_alt_start'		=> '<tr>',
+			'row_alt_end'		=> '</tr>',
+			'cell_alt_start'	=> '<td>',
+			'cell_alt_end'		=> '</td>',
 
-				'table_close'		=> '</table>'
-			);
+			'table_close'		=> '</table>'
+		);
 	}
 
 }
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index f90fa42..4a54593 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -387,7 +387,11 @@
       - Added check to detect if robots are pretending to be mobile clients (helps with e.g. Google indexing mobile website versions).
       - Added method ``parse()`` to allow parsing a custom user-agent string, different from the current visitor's.
 
-   -  Added support for setting :doc:`Table <libraries/table>` class defaults in a config file.
+   -  :doc:`HTML Table Library <libraries/table>` changes include:
+
+      - Added method chaining support.
+      - Added support for setting table class defaults in a config file.
+
    -  :doc:`Zip Library <libraries/zip>` method ``read_file()`` can now also alter the original file path/name while adding files to an archive.
 
 -  Core
diff --git a/user_guide_src/source/libraries/table.rst b/user_guide_src/source/libraries/table.rst
index ea0c417..6e01108 100644
--- a/user_guide_src/source/libraries/table.rst
+++ b/user_guide_src/source/libraries/table.rst
@@ -167,7 +167,8 @@
 	.. method:: set_caption($caption)
 
 		:param	string	$caption: Table caption
-		:rtype:	void
+		:returns:	CI_Table instance (method chaining)
+		:rtype:	CI_Table
 
 		Permits you to add a caption to the table.
 		::
@@ -177,7 +178,8 @@
 	.. method:: set_heading([$args = array()[, ...]])
 
 		:param	mixed	$args: An array or multiple strings containing the table column titles
-		:rtype:	void
+		:returns:	CI_Table instance (method chaining)
+		:rtype:	CI_Table
 
 		Permits you to set the table heading. You can submit an array or discrete params::
 
@@ -188,7 +190,8 @@
 	.. method:: add_row([$args = array()[, ...]])
 
 		:param	mixed	$args: An array or multiple strings containing the row values
-		:rtype:	void
+		:returns:	CI_Table instance (method chaining)
+		:rtype:	CI_Table
 
 		Permits you to add a row to your table. You can submit an array or discrete params::
 
@@ -253,7 +256,8 @@
 	.. method:: set_empty($value)
 
 		:param	mixed	$value: Value to put in empty cells
-		:rtype:	void
+		:returns:	CI_Table instance (method chaining)
+		:rtype:	CI_Table
 
 		Lets you set a default value for use in any table cells that are empty.
 		You might, for example, set a non-breaking space::
@@ -262,7 +266,8 @@
 
 	.. method:: clear()
 
-		:rtype:	void
+		:returns:	CI_Table instance (method chaining)
+		:rtype:	CI_Table
 
 		Lets you clear the table heading and row data. If you need to show multiple tables with different data you should to call this method
 		after each table has been generated to clear the previous table information. Example::