eina: Cleanup documentation for Sparse Matrix.

Summary:
Revises some descriptions, polishes wording, makes punctuation and
formatting more consistent, and straightens out some convoluted grammar
here and there.

There are a few places where the parameter documentation was incorrectly
cut-and-pasted from other routines, so this is fixed.  Also, in
eina_matrixsparse_iterator_new() the docs say the elements are not
returned sequentially, but from the context and code I think it meant to
say they're not _consecutive_.

Subscribers: cedric

Differential Revision: https://phab.enlightenment.org/D5924

Reviewed-by: Cedric BAIL <cedric@osg.samsung.com>
This commit is contained in:
Bryce Harrington 2018-04-16 11:20:21 -07:00 committed by Cedric BAIL
parent 34216aa9eb
commit 025b54ce52
1 changed files with 100 additions and 92 deletions

View File

@ -30,7 +30,13 @@
/**
* @addtogroup Eina_Matrixsparse_Group Sparse Matrix
*
* @brief These functions provide matrix sparse management.
* @brief These functions manage sparse matrices.
*
* A sparse matrix stores data objects in cells within a row / column
* tabular structure, where the majority of cells will be empty. The
* sparse matrix takes advantage of this emptiness by allocating memory
* only for non-empty cells and, in this implementation, storing them
* internally in linked lists.
*
* For more information, you can look at the @ref tutorial_matrixsparse_page.
*/
@ -96,25 +102,25 @@ EAPI Eina_Matrixsparse *eina_matrixsparse_new(unsigned long rows,
const void *user_data);
/**
* @brief Frees resources allocated for Sparse Matrix.
* @brief Frees resources allocated for a Sparse Matrix.
*
* @param[in] m The Sparse Matrix instance to free, must @b not be @c NULL.
* @param[in] m The Sparse Matrix instance to free; must @b not be @c NULL.
*/
EAPI void eina_matrixsparse_free(Eina_Matrixsparse *m);
/* size manipulation */
/**
* @brief Gets the current size of Sparse Matrix.
* @brief Gets the current size of a Sparse Matrix.
*
* The given parameters are guaranteed to be set if they're not @c NULL,
* even if this function fails (ie: @a m is not a valid matrix instance).
* even if this function fails (i.e.: @a m is not a valid matrix instance).
*
* @param[in] m The sparse matrix to operate on.
* @param[out] rows Returns the number of rows, may be @c NULL. If @a m
* @param[out] rows Returns the number of rows; may be @c NULL. If @a m
* is invalid, returned value is zero, otherwise it's a positive
* integer.
* @param[out] cols Returns the number of columns, may be @c NULL. If @a m is
* @param[out] cols Returns the number of columns; may be @c NULL. If @a m is
* invalid, returned value is zero, otherwise it's a positive integer.
*/
EAPI void eina_matrixsparse_size_get(const Eina_Matrixsparse *m,
@ -124,28 +130,27 @@ EAPI void eina_matrixsparse_size_get(const Eina_Matrixsparse *m,
/**
* @brief Resizes the Sparse Matrix.
*
* This will resize the sparse matrix, possibly freeing cells on rows
* and columns that will cease to exist.
* This will resize the sparse matrix, potentially freeing cells on rows
* and columns that will no longer exist.
*
* @param[out] m The sparse matrix to operate on.
* @param[in] rows The new number of rows, must be greater than zero.
* @param[in] cols The new number of columns, must be greater than zero.
* @param[in,out] m The sparse matrix to operate on.
* @param[in] rows The new number of rows; must be greater than zero.
* @param[in] cols The new number of columns; must be greater than zero.
* @return #EINA_TRUE on success, #EINA_FALSE on failure.
*
* @warning Cells, rows or columns are not reference counted and thus
* after this call any reference might be invalid if instance were
* freed.
* references to freed instances may become invalid.
*/
EAPI Eina_Bool eina_matrixsparse_size_set(Eina_Matrixsparse *m,
unsigned long rows,
unsigned long cols);
/* data getting */
/* Data getting */
/**
* @brief Gets the cell reference inside Sparse Matrix.
* @brief Gets the cell reference inside the Sparse Matrix.
*
* @param[in] m The sparse matrix to operate on.
* @param[in] m The sparse matrix.
* @param[in] row The new number of row to clear.
* @param[in] col The new number of column to clear.
* @param[out] cell Pointer to return cell reference, if any exists.
@ -174,8 +179,8 @@ EAPI void *eina_matrixsparse_cell_data_get(const Eina_Matrixsparse_Cell *cel
* @brief Gets data associated with given cell given its indexes.
*
* @param[in] m The sparse matrix to operate on.
* @param[in] row The new number of row to clear.
* @param[in] col The new number of column to clear.
* @param[in] row The row number.
* @param[in] col The column number.
*
* @return Data associated with given cell or @c NULL if nothing is associated.
*
@ -185,22 +190,23 @@ EAPI void *eina_matrixsparse_cell_data_get(const Eina_Matrixsparse_Cell *cel
EAPI void *eina_matrixsparse_data_idx_get(const Eina_Matrixsparse *m, unsigned long row, unsigned long col);
/**
* @brief Gets position (indexes) of the given cell.
* @brief Gets the row and column position of the given cell.
*
* @param[in] cell The cell reference, must @b not be @c NULL.
* @param[out] row Where to store cell row number, may be @c NULL.
* @param[out] col Where to store cell column number, may be @c NULL.
* @param[in] cell The cell reference; must @b not be @c NULL.
* @param[out] row The returned row number; may be @c NULL.
* @param[out] col The returned column number; may be @c NULL.
*
* @return #EINA_TRUE on success, #EINA_FALSE otherwise (@c cell is @c NULL).
*/
EAPI Eina_Bool eina_matrixsparse_cell_position_get(const Eina_Matrixsparse_Cell *cell, unsigned long *row, unsigned long *col);
/* data setting */
/* Data setting */
/**
* @brief Changes cell reference value without freeing the possibly existing old value.
*
* @param[in,out] cell The cell reference, must @b not be @c NULL.
* @param[in,out] cell The cell reference; must @b not be @c NULL.
* @param[in] data New data to set.
* @param[out] p_old Returns the old value intact (not freed).
*
@ -212,13 +218,13 @@ EAPI Eina_Bool eina_matrixsparse_cell_position_get(const Eina_Matrixsparse_Cell
EAPI Eina_Bool eina_matrixsparse_cell_data_replace(Eina_Matrixsparse_Cell *cell, const void *data, void **p_old);
/**
* @brief Changes cell value freeing the possibly existing old value.
* @brief Changes cell value, freeing any previously existing value.
*
* @param[in,out] cell The cell reference; must @b not be @c NULL.
* @param[in] data New data to set.
*
* In contrast to eina_matrixsparse_cell_data_replace(), this function will
* call @c free_func() on existing value.
*
* @param[in,out] cell The cell reference, must @b not be @c NULL.
* @param[in] data New data to set.
* call @c free_func() on the existing value, if one exists.
*
* @return #EINA_TRUE on success, #EINA_FALSE otherwise (@a cell is @c NULL).
*
@ -228,16 +234,17 @@ EAPI Eina_Bool eina_matrixsparse_cell_data_replace(Eina_Matrixsparse_Cell *cell,
EAPI Eina_Bool eina_matrixsparse_cell_data_set(Eina_Matrixsparse_Cell *cell, const void *data);
/**
* @brief Changes cell value without freeing the possibly existing old value, using
* indexes.
* @brief Changes cell value at a given row and column position, without
* freeing previously existing values.
*
* @param[in,out] m The sparse matrix, must @b not be @c NULL.
* @param[in] row The row number to set the value.
* @param[in] col The column number to set the value.
* @param[in,out] m The sparse matrix; must @b not be @c NULL.
* @param[in] row The row number.
* @param[in] col The column number.
* @param[in] data New data to set.
* @param[out] p_old returns the old value intact (not freed).
* @param[out] p_old The previous value, returned intact (not freed).
*
* @return #EINA_TRUE on success, #EINA_FALSE otherwise (@a m is @c NULL, indexes are not valid).
* @return #EINA_TRUE on success, #EINA_FALSE otherwise (@a m is @c NULL,
* or row, column indexes are not valid).
*
* @see eina_matrixsparse_cell_data_replace()
* @see eina_matrixsparse_data_idx_set()
@ -245,17 +252,17 @@ EAPI Eina_Bool eina_matrixsparse_cell_data_set(Eina_Matrixsparse_Cell *cell, con
EAPI Eina_Bool eina_matrixsparse_data_idx_replace(Eina_Matrixsparse *m, unsigned long row, unsigned long col, const void *data, void **p_old);
/**
* @brief Changes cell value freeing the possibly existing old value, using
* indexes.
*
* In contrast to eina_matrixsparse_data_idx_replace(), this function will
* call @c free_func() on existing value.
* @brief Changes cell value at a given row and column position, freeing
* any previously existing value.
*
* @param[in,out] m The sparse matrix, must @b not be @c NULL.
* @param[in] row The row number to set the value.
* @param[in] col The column number to set the value.
* @param[in] data New data to set.
*
* In contrast to eina_matrixsparse_data_idx_replace(), this function will
* call @c free_func() on the existing value, if one exists.
*
* @return #EINA_TRUE on success, #EINA_FALSE otherwise (@a m is @c NULL, indexes are not valid).
*
* @see eina_matrixsparse_cell_data_replace()
@ -265,21 +272,20 @@ EAPI Eina_Bool eina_matrixsparse_data_idx_set(Eina_Matrixsparse *m, unsigned lon
/* data deleting */
/**
* @brief Clears (erases all cells) of row given its index.
* @brief Clears (erases all cells) of a given row number.
*
* @param[in,out] m The sparse matrix to operate on.
* @param[in] row The row number to clear.
*
* Existing cells will be cleared with @c free_func() given to
* eina_matrixsparse_new().
*
* @param[in,out] m The sparse matrix to operate on.
* @param[in] row The new number of row to clear.
*
* @return #EINA_TRUE on success, #EINA_FALSE on failure. It is considered successful if row
* had no cells filled. Failure is asking for clear row outside
* matrix size.
* @return #EINA_TRUE on success, #EINA_FALSE on failure (such as
* requesting a row outside the matrix's defined size). It is
* considered successful if the row had no cells filled.
*
* @warning Cells, rows or columns are not reference counted and thus
* after this call any reference might be invalid if instance were
* freed.
* references to freed instances may become invalid.
*/
EAPI Eina_Bool eina_matrixsparse_row_idx_clear(Eina_Matrixsparse *m, unsigned long row);
@ -290,70 +296,70 @@ EAPI Eina_Bool eina_matrixsparse_row_idx_clear(Eina_Matrixsparse *m, unsigned lo
* eina_matrixsparse_new().
*
* @param[in,out] m The sparse matrix to operate on.
* @param[in] col The new number of column to clear.
* @param[in] col The column number to clear.
*
* @return #EINA_TRUE on success, #EINA_FALSE on failure. It is considered successful if column
* had no cells filled. Failure is asking for clear column outside
* matrix size.
* @return #EINA_TRUE on success, #EINA_FALSE on failure (such as
* requesting a column outside the matrix's defined size). It is
* considered successful if the column had no cells filled.
*
* @warning Cells, rows or columns are not reference counted and thus
* after this call any reference might be invalid if instance were
* freed.
* references to freed instances may become invalid.
*/
EAPI Eina_Bool eina_matrixsparse_column_idx_clear(Eina_Matrixsparse *m, unsigned long col);
/**
* @brief Clears (erases) cell given its indexes.
* @brief Clears (erases) cell at a given row, column position.
*
* Existing cell will be cleared with @c free_func() given to
* Existing cell will be cleared with the @c free_func() given to
* eina_matrixsparse_new().
*
* @param[in,out] m The sparse matrix to operate on.
* @param[in] row The new number of row to clear.
* @param[in] col The new number of column to clear.
* @param[in] row The row number.
* @param[in] col The column number.
*
* @return #EINA_TRUE on success, #EINA_FALSE on failure. It is considered successful if did not
* exist but index is inside matrix size.
* @return #EINA_TRUE on success, #EINA_FALSE on failure (such as
* requesting a row or column outside the matrix's defined size). It
* is considered successful if no cell existed at the otherwise
* valid position.
*
* @warning Cells, rows or columns are not reference counted and thus
* after this call any reference might be invalid if instance were
* freed.
* references to freed instances may become invalid.
*
* @note This call might delete container column and row if this cell was the
* last remainder.
* @note This call might also free the column and/or row if this was the
* last remaining cell contained.
*/
EAPI Eina_Bool eina_matrixsparse_cell_idx_clear(Eina_Matrixsparse *m, unsigned long row, unsigned long col);
/**
* @brief Clears (erases) cell given its reference.
*
* @param[in,out] cell The cell reference, must @b not be @c NULL.
* @param[in,out] cell The cell reference; must @b not be @c NULL.
*
* @return #EINA_TRUE on success, #EINA_FALSE on failure.
*
* @warning Cells, rows or columns are not reference counted and thus
* after this call any reference might be invalid if instance were
* freed.
* references to freed instances may become invalid.
*
* @note This call might delete container column and row if this cell was the
* last remainder.
* @note This call might also free the column and/or row if this was the
* last remaining cell contained.
*/
EAPI Eina_Bool eina_matrixsparse_cell_clear(Eina_Matrixsparse_Cell *cell);
/* iterators */
/* Iterators */
/**
* @brief Creates a new iterator over existing matrix cells.
* @brief Creates a new iterator over only the existing matrix cells.
*
* This is a cheap walk, it will just report existing cells and holes
* in the sparse matrix will be ignored. That means the reported
* indexes will not be sequential.
* This is a quick walk over the defined cells; the holes in the Sparse
* Matrix are skipped over, thus the returned entries will not have
* consecutive index numbers.
*
* The iterator data will be the cell reference, one may query current
* position with eina_matrixsparse_cell_position_get() and cell value
* with eina_matrixsparse_cell_data_get().
* The iterator's data element will be the current cell reference. This
* cell's position and value can be retrieved with
* eina_matrixsparse_cell_position_get() and
* eina_matrixsparse_cell_data_get().
*
* @param[in] m The Sparse Matrix reference, must @b not be @c NULL.
* @param[in] m The Sparse Matrix reference; must @b not be @c NULL.
* @return A new iterator.
*
* @warning If the matrix structure changes then the iterator becomes
@ -365,21 +371,23 @@ EAPI Eina_Iterator *eina_matrixsparse_iterator_new(const Eina_Matrixsparse *m);
/**
* @brief Creates a new iterator over all matrix cells.
*
* Unlike eina_matrixsparse_iterator_new() this one will report all
* matrix cells, even those that are still empty (holes). These will
* be reported as dummy cells that contains no data.
* In contrast to eina_matrixsparse_iterator_new(), this routine iterates
* across all row and column positions in the matrix, returning dummy cells
* with no data where there are empty holes.
*
* Be aware that iterating a big matrix (1000x1000) will call your
* function that number of times (1000000 times in that case) even if
* your matrix have no elements at all!
* Be aware that since this iterates over all potential elements of a
* Sparse Matrix, not just the elements with actual data, this can result
* in a very large number of function calls.
*
* The iterator data will be the cell reference, one may query current
* position with eina_matrixsparse_cell_position_get() and cell value
* with eina_matrixsparse_cell_data_get(). If cell is empty then the
* The iterator's data element will be the current cell reference. This
* cell's position and value can be retrieved with
* eina_matrixsparse_cell_position_get() and
* eina_matrixsparse_cell_data_get(). If the cell is empty then the
* reference will be a dummy/placeholder, thus setting value with
* eina_matrixsparse_cell_data_set() will leave pointer unreferenced.
* eina_matrixsparse_cell_data_set() will leave the pointer
* unreferenced.
*
* @param[in] m The Sparse Matrix reference, must @b not be @c NULL.
* @param[in] m The Sparse Matrix reference; must @b not be @c NULL.
* @return A new iterator.
*
* @warning If the matrix structure changes then the iterator becomes