Tizen Native API
|
Functions | |
Eina_Matrixsparse * | eina_matrixsparse_new (unsigned long rows, unsigned long cols, void(*free_func)(void *user_data, void *cell_data), const void *user_data) |
Create a new Sparse Matrix. | |
void | eina_matrixsparse_free (Eina_Matrixsparse *m) |
Free resources allocated to Sparse Matrix. | |
void | eina_matrixsparse_size_get (const Eina_Matrixsparse *m, unsigned long *rows, unsigned long *cols) |
Get the current size of Sparse Matrix. | |
Eina_Bool | eina_matrixsparse_size_set (Eina_Matrixsparse *m, unsigned long rows, unsigned long cols) |
Resize the Sparse Matrix. | |
Eina_Bool | eina_matrixsparse_cell_idx_get (const Eina_Matrixsparse *m, unsigned long row, unsigned long col, Eina_Matrixsparse_Cell **cell) |
Get the cell reference inside Sparse Matrix. | |
void * | eina_matrixsparse_cell_data_get (const Eina_Matrixsparse_Cell *cell) |
Get data associated with given cell reference. | |
void * | eina_matrixsparse_data_idx_get (const Eina_Matrixsparse *m, unsigned long row, unsigned long col) |
Get data associated with given cell given its indexes. | |
Eina_Bool | eina_matrixsparse_cell_position_get (const Eina_Matrixsparse_Cell *cell, unsigned long *row, unsigned long *col) |
Get position (indexes) of the given cell. | |
Eina_Bool | eina_matrixsparse_cell_data_replace (Eina_Matrixsparse_Cell *cell, const void *data, void **p_old) |
Change cell reference value without freeing the possibly existing old value. | |
Eina_Bool | eina_matrixsparse_cell_data_set (Eina_Matrixsparse_Cell *cell, const void *data) |
Change cell value freeing the possibly existing old value. | |
Eina_Bool | eina_matrixsparse_data_idx_replace (Eina_Matrixsparse *m, unsigned long row, unsigned long col, const void *data, void **p_old) |
Change cell value without freeing the possibly existing old value, using indexes. | |
Eina_Bool | eina_matrixsparse_data_idx_set (Eina_Matrixsparse *m, unsigned long row, unsigned long col, const void *data) |
Change cell value freeing the possibly existing old value, using indexes. | |
Eina_Bool | eina_matrixsparse_row_idx_clear (Eina_Matrixsparse *m, unsigned long row) |
Clear (erase all cells) of row given its index. | |
Eina_Bool | eina_matrixsparse_column_idx_clear (Eina_Matrixsparse *m, unsigned long col) |
Clear (erase all cells) of column given its index. | |
Eina_Bool | eina_matrixsparse_cell_idx_clear (Eina_Matrixsparse *m, unsigned long row, unsigned long col) |
Clear (erase) cell given its indexes. | |
Eina_Bool | eina_matrixsparse_cell_clear (Eina_Matrixsparse_Cell *cell) |
Clear (erase) cell given its reference. | |
Eina_Iterator * | eina_matrixsparse_iterator_new (const Eina_Matrixsparse *m) |
Creates a new iterator over existing matrix cells. | |
Eina_Iterator * | eina_matrixsparse_iterator_complete_new (const Eina_Matrixsparse *m) |
Creates a new iterator over all matrix cells. | |
Typedefs | |
typedef struct _Eina_Matrixsparse | Eina_Matrixsparse |
typedef struct _Eina_Matrixsparse_Row | Eina_Matrixsparse_Row |
typedef struct _Eina_Matrixsparse_Cell | Eina_Matrixsparse_Cell |
These functions provide matrix sparse management.
For more information, you can look at the tutorial_matrixsparse_page.
Typedef Documentation
Type for a generic sparse matrix.
Type for a generic sparse matrix cell, opaque for users.
Type for a generic sparse matrix row, opaque for users.
Function Documentation
Clear (erase) cell given its reference.
- Since :
- 2.3
- Parameters:
-
[in] cell the cell reference, must not be NULL
.
- Returns:
- 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.
- Remarks:
- This call might delete container column and row if this cell was the last remainder.
void* eina_matrixsparse_cell_data_get | ( | const Eina_Matrixsparse_Cell * | cell | ) |
Get data associated with given cell reference.
- Since :
- 2.3
- Parameters:
-
[in] cell given cell reference, must not be NULL
.
- Returns:
- data associated with given cell.
Eina_Bool eina_matrixsparse_cell_data_replace | ( | Eina_Matrixsparse_Cell * | cell, |
const void * | data, | ||
void ** | p_old | ||
) |
Change cell reference value without freeing the possibly existing old value.
- Since :
- 2.3
- Parameters:
-
[in] cell the cell reference, must not be NULL
.[in] data new data to set. [out] p_old returns the old value intact (not freed).
- Returns:
- EINA_TRUE on success, EINA_FALSE otherwise (cell is
NULL
).
Eina_Bool eina_matrixsparse_cell_data_set | ( | Eina_Matrixsparse_Cell * | cell, |
const void * | data | ||
) |
Change cell value freeing the possibly existing old value.
- Since :
- 2.3
- Remarks:
- In contrast to eina_matrixsparse_cell_data_replace(), this function will call
free_func()
on existing value.
- Parameters:
-
[in] cell the cell reference, must not be NULL
.[in] data new data to set.
- Returns:
- EINA_TRUE on success, EINA_FALSE otherwise (cell is
NULL
).
Eina_Bool eina_matrixsparse_cell_idx_clear | ( | Eina_Matrixsparse * | m, |
unsigned long | row, | ||
unsigned long | col | ||
) |
Clear (erase) cell given its indexes.
- Since :
- 2.3
- Remarks:
- Existing cell will be cleared with
free_func()
given to eina_matrixsparse_new().
- Parameters:
-
[in] m the sparse matrix to operate on. [in] row the new number of row to clear. [in] col the new number of column to clear.
- Returns:
- EINA_TRUE on success, EINA_FALSE on failure. It is considered success if did not exist but index is inside matrix size.
- Warning:
- cells, rows or columns are not reference counted and thus after this call any reference might be invalid if instance were freed.
- Remarks:
- This call might delete container column and row if this cell was the last remainder.
Eina_Bool eina_matrixsparse_cell_idx_get | ( | const Eina_Matrixsparse * | m, |
unsigned long | row, | ||
unsigned long | col, | ||
Eina_Matrixsparse_Cell ** | cell | ||
) |
Get the cell reference inside Sparse Matrix.
- Since :
- 2.3
- Parameters:
-
[in] m the sparse matrix to operate on. [in] row the number of row. [in] col the number of column. [out] cell pointer to return cell reference, if any exists.
- Returns:
1
on success,0
on failure. It is considered success if did not exist but index is inside matrix size, in this case*cell
== NULL
Eina_Bool eina_matrixsparse_cell_position_get | ( | const Eina_Matrixsparse_Cell * | cell, |
unsigned long * | row, | ||
unsigned long * | col | ||
) |
Get position (indexes) of the given cell.
- Since :
- 2.3
- Parameters:
-
[in] cell the cell reference, must not be NULL
.[out] row where to store cell row number, may be NULL
.[out] col where to store cell column number, may be NULL
.
- Returns:
- EINA_TRUE on success, EINA_FALSE otherwise (
cell
isNULL
).
Eina_Bool eina_matrixsparse_column_idx_clear | ( | Eina_Matrixsparse * | m, |
unsigned long | col | ||
) |
Clear (erase all cells) of column given its index.
- Since :
- 2.3
- Remarks:
- Existing cells will be cleared with
free_func()
given to eina_matrixsparse_new().
- Parameters:
-
[in] m the sparse matrix to operate on. [in] col the new number of column to clear.
- Returns:
- EINA_TRUE on success, EINA_FALSE on failure. It is considered success if column had no cells filled. Failure is asking for clear column outside matrix size.
- Warning:
- cells, rows or columns are not reference counted and thus after this call any reference might be invalid if instance were freed.
void* eina_matrixsparse_data_idx_get | ( | const Eina_Matrixsparse * | m, |
unsigned long | row, | ||
unsigned long | col | ||
) |
Get data associated with given cell given its indexes.
- Since :
- 2.3
- Parameters:
-
[in] m the sparse matrix to operate on. [in] row the number of row. [in] col the number of column.
- Returns:
- Data associated with given cell or
NULL
if nothing is associated.
Eina_Bool eina_matrixsparse_data_idx_replace | ( | Eina_Matrixsparse * | m, |
unsigned long | row, | ||
unsigned long | col, | ||
const void * | data, | ||
void ** | p_old | ||
) |
Change cell value without freeing the possibly existing old value, using indexes.
- Since :
- 2.3
- Parameters:
-
[in] m the sparse matrix, must not be NULL
.[in] row the row number to set the value. [in] col the column number to set the value. [in] data new data to set. [out] p_old returns the old value intact (not freed).
- Returns:
- EINA_TRUE on success, EINA_FALSE otherwise (m is
NULL
, indexes are not valid).
Eina_Bool eina_matrixsparse_data_idx_set | ( | Eina_Matrixsparse * | m, |
unsigned long | row, | ||
unsigned long | col, | ||
const void * | data | ||
) |
Change cell value freeing the possibly existing old value, using indexes.
- Since :
- 2.3
- Remarks:
- In contrast to eina_matrixsparse_data_idx_replace(), this function will call
free_func()
on existing value.
- Parameters:
-
[in] m the sparse matrix, must not be NULL
.[in] row the row number to set the value. [in] col the column number to set the value. [in] data new data to set.
- Returns:
- EINA_TRUE on success, EINA_FALSE otherwise (m is
NULL
, indexes are not valid).
void eina_matrixsparse_free | ( | Eina_Matrixsparse * | m | ) |
Free resources allocated to Sparse Matrix.
- Since :
- 2.3
- Parameters:
-
[in] m The Sparse Matrix instance to free, must not be NULL
.
Creates a new iterator over all matrix cells.
- Since :
- 2.3
- Remarks:
- 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.
- 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!
- 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 reference will be a dummy/placeholder, thus setting value with eina_matrixsparse_cell_data_set() will leave pointer unreferenced.
- Parameters:
-
[in] m The Sparse Matrix reference, must not be NULL
.
- Returns:
- A new iterator.
- Warning:
- if the matrix structure changes then the iterator becomes invalid! That is, if you add or remove cells this iterator behavior is undefined and your program may crash!
Eina_Iterator* eina_matrixsparse_iterator_new | ( | const Eina_Matrixsparse * | m | ) |
Creates a new iterator over existing matrix cells.
- Since :
- 2.3
- Remarks:
- 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.
- 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().
- Parameters:
-
[in] m The Sparse Matrix reference, must not be NULL
.
- Returns:
- A new iterator.
- Warning:
- if the matrix structure changes then the iterator becomes invalid! That is, if you add or remove cells this iterator behavior is undefined and your program may crash!
Eina_Matrixsparse* eina_matrixsparse_new | ( | unsigned long | rows, |
unsigned long | cols, | ||
void(*)(void *user_data, void *cell_data) | free_func, | ||
const void * | user_data | ||
) |
Create a new Sparse Matrix.
- Since :
- 2.3
- Parameters:
-
[in] rows number of rows in matrix. Operations with rows greater than this value will fail. [in] cols number of columns in matrix. Operations with columns greater than this value will fail. [in] free_func used to delete cell data contents, used by eina_matrixsparse_free(), eina_matrixsparse_size_set(), eina_matrixsparse_row_idx_clear(), eina_matrixsparse_column_idx_clear(), eina_matrixsparse_cell_idx_clear() and possible others. [in] user_data given to free_func as first parameter.
- Returns:
- Newly allocated matrix or
NULL
if allocation failed.
Eina_Bool eina_matrixsparse_row_idx_clear | ( | Eina_Matrixsparse * | m, |
unsigned long | row | ||
) |
Clear (erase all cells) of row given its index.
- Since :
- 2.3
- Remarks:
- Existing cells will be cleared with
free_func()
given to eina_matrixsparse_new().
- Parameters:
-
[in] m the sparse matrix to operate on. [in] row the new number of row to clear.
- Returns:
- EINA_TRUE on success, EINA_FALSE on failure. It is considered success if row had no cells filled. Failure is asking for clear row outside matrix size.
- Warning:
- cells, rows or columns are not reference counted and thus after this call any reference might be invalid if instance were freed.
void eina_matrixsparse_size_get | ( | const Eina_Matrixsparse * | m, |
unsigned long * | rows, | ||
unsigned long * | cols | ||
) |
Get the current size of Sparse Matrix.
- Since :
- 2.3
- Remarks:
- The given parameters are guaranteed to be set if they're not
NULL
, even if this function fails (ie: m is not a valid matrix instance).
- Parameters:
-
[in] m the sparse matrix to operate on. [out] rows returns the number of rows, may be NULL
. If m is invalid, returned value is zero, otherwise it's a positive integer.[out] cols returns the number of columns, may be NULL
. If m is invalid, returned value is zero, otherwise it's a positive integer.
Eina_Bool eina_matrixsparse_size_set | ( | Eina_Matrixsparse * | m, |
unsigned long | rows, | ||
unsigned long | cols | ||
) |
Resize the Sparse Matrix.
- Since :
- 2.3
- Remarks:
- This will resize the sparse matrix, possibly freeing cells on rows and columns that will cease to exist.
- Parameters:
-
[in] m the sparse matrix to operate on. [in] rows the new number of rows, must be greater than zero. [in] cols the new number of columns, must be greater than zero.
- Returns:
- 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.