\hypertarget{group__Eina__Matrixsparse__Group}{}\section{Sparse Matrix}
\label{group__Eina__Matrixsparse__Group}\index{Sparse Matrix@{Sparse Matrix}}


These functions provide matrix sparse management.  


\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef struct \+\_\+\+Eina\+\_\+\+Matrixsparse \hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse}\hypertarget{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{}\label{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}

\begin{DoxyCompactList}\small\item\em Type for a generic sparse matrix. \end{DoxyCompactList}\item 
typedef struct \+\_\+\+Eina\+\_\+\+Matrixsparse\+\_\+\+Row \hyperlink{group__Eina__Matrixsparse__Group_gae4c210f6fbdb9bab850ecbecc5e68cdb}{Eina\+\_\+\+Matrixsparse\+\_\+\+Row}\hypertarget{group__Eina__Matrixsparse__Group_gae4c210f6fbdb9bab850ecbecc5e68cdb}{}\label{group__Eina__Matrixsparse__Group_gae4c210f6fbdb9bab850ecbecc5e68cdb}

\begin{DoxyCompactList}\small\item\em Type for a generic sparse matrix row, opaque for users. \end{DoxyCompactList}\item 
typedef struct \+\_\+\+Eina\+\_\+\+Matrixsparse\+\_\+\+Cell \hyperlink{group__Eina__Matrixsparse__Group_gad7c457682bae4d88a08b794720ff4226}{Eina\+\_\+\+Matrixsparse\+\_\+\+Cell}\hypertarget{group__Eina__Matrixsparse__Group_gad7c457682bae4d88a08b794720ff4226}{}\label{group__Eina__Matrixsparse__Group_gad7c457682bae4d88a08b794720ff4226}

\begin{DoxyCompactList}\small\item\em Type for a generic sparse matrix cell, opaque for users. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$ \hyperlink{group__Eina__Matrixsparse__Group_gab145a6839d6255e4ef8292dc9450fc9d}{eina\+\_\+matrixsparse\+\_\+new} (unsigned long rows, unsigned long cols, void($\ast$free\+\_\+func)(void $\ast$user\+\_\+data, void $\ast$cell\+\_\+data), const void $\ast$user\+\_\+data)
\begin{DoxyCompactList}\small\item\em Create a new Sparse Matrix. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__Matrixsparse__Group_ga7ee4663f3a3730d7c658181ea85d5c3b}{eina\+\_\+matrixsparse\+\_\+free} (\hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$m)
\begin{DoxyCompactList}\small\item\em Free resources allocated to Sparse Matrix. \end{DoxyCompactList}\item 
void \hyperlink{group__Eina__Matrixsparse__Group_gac9b1c37eeaded174e59763b01ac9bcdc}{eina\+\_\+matrixsparse\+\_\+size\+\_\+get} (const \hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$m, unsigned long $\ast$rows, unsigned long $\ast$cols)
\begin{DoxyCompactList}\small\item\em Get the current size of Sparse Matrix. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Matrixsparse__Group_ga16af5e47858b6ba348ec95633464391e}{eina\+\_\+matrixsparse\+\_\+size\+\_\+set} (\hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$m, unsigned long rows, unsigned long cols)
\begin{DoxyCompactList}\small\item\em Resize the Sparse Matrix. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Matrixsparse__Group_gadb57ccb0cf043123f4a8f1b9b0058cb1}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+get} (const \hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$m, unsigned long row, unsigned long col, \hyperlink{group__Eina__Matrixsparse__Group_gad7c457682bae4d88a08b794720ff4226}{Eina\+\_\+\+Matrixsparse\+\_\+\+Cell} $\ast$$\ast$cell)
\begin{DoxyCompactList}\small\item\em Get the cell reference inside Sparse Matrix. \end{DoxyCompactList}\item 
void $\ast$ \hyperlink{group__Eina__Matrixsparse__Group_ga4728a4bbbc25e855b881c6159ecaf45f}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+get} (const \hyperlink{group__Eina__Matrixsparse__Group_gad7c457682bae4d88a08b794720ff4226}{Eina\+\_\+\+Matrixsparse\+\_\+\+Cell} $\ast$cell)
\begin{DoxyCompactList}\small\item\em Get data associated with given cell reference. \end{DoxyCompactList}\item 
void $\ast$ \hyperlink{group__Eina__Matrixsparse__Group_ga68ce4fb20de7912ec119d9b3c99b337d}{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+get} (const \hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$m, unsigned long row, unsigned long col)
\begin{DoxyCompactList}\small\item\em Get data associated with given cell given its indexes. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Matrixsparse__Group_gad6fcbc781ade7bd9c8f939741d95fc44}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+position\+\_\+get} (const \hyperlink{group__Eina__Matrixsparse__Group_gad7c457682bae4d88a08b794720ff4226}{Eina\+\_\+\+Matrixsparse\+\_\+\+Cell} $\ast$cell, unsigned long $\ast$row, unsigned long $\ast$col)
\begin{DoxyCompactList}\small\item\em Get position (indexes) of the given cell. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Matrixsparse__Group_gae1859fd77ba22b2313a463b5339b7bc6}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+replace} (\hyperlink{group__Eina__Matrixsparse__Group_gad7c457682bae4d88a08b794720ff4226}{Eina\+\_\+\+Matrixsparse\+\_\+\+Cell} $\ast$cell, const void $\ast$data, void $\ast$$\ast$p\+\_\+old)
\begin{DoxyCompactList}\small\item\em Change cell reference value without freeing the possibly existing old value. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Matrixsparse__Group_gaa6c0e879e9e707fbdbfecc66358b889f}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+set} (\hyperlink{group__Eina__Matrixsparse__Group_gad7c457682bae4d88a08b794720ff4226}{Eina\+\_\+\+Matrixsparse\+\_\+\+Cell} $\ast$cell, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Change cell value freeing the possibly existing old value. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Matrixsparse__Group_gaac0d82ce568487fe5df4291cca2f37ea}{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+replace} (\hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$m, unsigned long row, unsigned long col, const void $\ast$data, void $\ast$$\ast$p\+\_\+old)
\begin{DoxyCompactList}\small\item\em Change cell value without freeing the possibly existing old value, using indexes. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Matrixsparse__Group_ga0bfabda28f69e21121b5004238ea7ac5}{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+set} (\hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$m, unsigned long row, unsigned long col, const void $\ast$data)
\begin{DoxyCompactList}\small\item\em Change cell value freeing the possibly existing old value, using indexes. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Matrixsparse__Group_ga074c8d356b37532fbc7f8e281fdfffed}{eina\+\_\+matrixsparse\+\_\+row\+\_\+idx\+\_\+clear} (\hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$m, unsigned long row)
\begin{DoxyCompactList}\small\item\em Clear (erase all cells) of row given its index. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Matrixsparse__Group_gadd4f9d4a84a1e97deb7bbb8bb47b5b44}{eina\+\_\+matrixsparse\+\_\+column\+\_\+idx\+\_\+clear} (\hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$m, unsigned long col)
\begin{DoxyCompactList}\small\item\em Clear (erase all cells) of column given its index. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Matrixsparse__Group_gad11f7fe08b96e1dcd250d2c50d0179ac}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+clear} (\hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$m, unsigned long row, unsigned long col)
\begin{DoxyCompactList}\small\item\em Clear (erase) cell given its indexes. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Types__Group_ga3fe0caf72e93b1bab1ca8ee3ccf3f226}{Eina\+\_\+\+Bool} \hyperlink{group__Eina__Matrixsparse__Group_gad3e2cc761d66db8f4e6fb62e9c61ed09}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+clear} (\hyperlink{group__Eina__Matrixsparse__Group_gad7c457682bae4d88a08b794720ff4226}{Eina\+\_\+\+Matrixsparse\+\_\+\+Cell} $\ast$cell)
\begin{DoxyCompactList}\small\item\em Clear (erase) cell given its reference. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} $\ast$ \hyperlink{group__Eina__Matrixsparse__Group_ga050e3217d88a9a3882b16dad4b0fac47}{eina\+\_\+matrixsparse\+\_\+iterator\+\_\+new} (const \hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$m)
\begin{DoxyCompactList}\small\item\em Creates a new iterator over existing matrix cells. \end{DoxyCompactList}\item 
\hyperlink{group__Eina__Iterator__Group_ga15b975bb881d955249ce13d4ebc96948}{Eina\+\_\+\+Iterator} $\ast$ \hyperlink{group__Eina__Matrixsparse__Group_gaec29352ddcf092508f0a07cc61ca895c}{eina\+\_\+matrixsparse\+\_\+iterator\+\_\+complete\+\_\+new} (const \hyperlink{group__Eina__Matrixsparse__Group_ga286321d3ef0e00c547a6036e2da62a27}{Eina\+\_\+\+Matrixsparse} $\ast$m)
\begin{DoxyCompactList}\small\item\em Creates a new iterator over all matrix cells. \end{DoxyCompactList}\end{DoxyCompactItemize}


\subsection{Detailed Description}
These functions provide matrix sparse management. 

For more information, you can look at the \hyperlink{tutorial_matrixsparse_page}{Sparse Matrix Tutorial}. 

\subsection{Function Documentation}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+new@{eina\+\_\+matrixsparse\+\_\+new}}
\index{eina\+\_\+matrixsparse\+\_\+new@{eina\+\_\+matrixsparse\+\_\+new}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+new(unsigned long rows, unsigned long cols, void($\ast$free\+\_\+func)(void $\ast$user\+\_\+data, void $\ast$cell\+\_\+data), const void $\ast$user\+\_\+data)}{eina_matrixsparse_new(unsigned long rows, unsigned long cols, void(*free_func)(void *user_data, void *cell_data), const void *user_data)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Matrixsparse}$\ast$ eina\+\_\+matrixsparse\+\_\+new (
\begin{DoxyParamCaption}
\item[{unsigned long}]{rows, }
\item[{unsigned long}]{cols, }
\item[{void($\ast$)(void $\ast$user\+\_\+data, void $\ast$cell\+\_\+data)}]{free\+\_\+func, }
\item[{const void $\ast$}]{user\+\_\+data}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_gab145a6839d6255e4ef8292dc9450fc9d}{}\label{group__Eina__Matrixsparse__Group_gab145a6839d6255e4ef8292dc9450fc9d}


Create a new Sparse Matrix. 


\begin{DoxyParams}{Parameters}
{\em rows} & number of rows in matrix. Operations with rows greater than this value will fail. \\
\hline
{\em cols} & number of columns in matrix. Operations with columns greater than this value will fail. \\
\hline
{\em free\+\_\+func} & used to delete cell data contents, used by \hyperlink{group__Eina__Matrixsparse__Group_ga7ee4663f3a3730d7c658181ea85d5c3b}{eina\+\_\+matrixsparse\+\_\+free()}, \hyperlink{group__Eina__Matrixsparse__Group_ga16af5e47858b6ba348ec95633464391e}{eina\+\_\+matrixsparse\+\_\+size\+\_\+set()}, \hyperlink{group__Eina__Matrixsparse__Group_ga074c8d356b37532fbc7f8e281fdfffed}{eina\+\_\+matrixsparse\+\_\+row\+\_\+idx\+\_\+clear()}, \hyperlink{group__Eina__Matrixsparse__Group_gadd4f9d4a84a1e97deb7bbb8bb47b5b44}{eina\+\_\+matrixsparse\+\_\+column\+\_\+idx\+\_\+clear()}, \hyperlink{group__Eina__Matrixsparse__Group_gad11f7fe08b96e1dcd250d2c50d0179ac}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+clear()} and possible others. \\
\hline
{\em user\+\_\+data} & given to {\itshape free\+\_\+func} as first parameter.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Newly allocated matrix or {\ttfamily N\+U\+LL} if allocation failed. 
\end{DoxyReturn}


References E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET.

\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+free@{eina\+\_\+matrixsparse\+\_\+free}}
\index{eina\+\_\+matrixsparse\+\_\+free@{eina\+\_\+matrixsparse\+\_\+free}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+free(\+Eina\+\_\+\+Matrixsparse $\ast$m)}{eina_matrixsparse_free(Eina_Matrixsparse *m)}}]{\setlength{\rightskip}{0pt plus 5cm}void eina\+\_\+matrixsparse\+\_\+free (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Matrixsparse} $\ast$}]{m}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_ga7ee4663f3a3730d7c658181ea85d5c3b}{}\label{group__Eina__Matrixsparse__Group_ga7ee4663f3a3730d7c658181ea85d5c3b}


Free resources allocated to Sparse Matrix. 


\begin{DoxyParams}{Parameters}
{\em m} & The Sparse Matrix instance to free, must {\bfseries not} be {\ttfamily N\+U\+LL}. \\
\hline
\end{DoxyParams}


References E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+N\+O\+NE, and E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET.

\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+size\+\_\+get@{eina\+\_\+matrixsparse\+\_\+size\+\_\+get}}
\index{eina\+\_\+matrixsparse\+\_\+size\+\_\+get@{eina\+\_\+matrixsparse\+\_\+size\+\_\+get}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+size\+\_\+get(const Eina\+\_\+\+Matrixsparse $\ast$m, unsigned long $\ast$rows, unsigned long $\ast$cols)}{eina_matrixsparse_size_get(const Eina_Matrixsparse *m, unsigned long *rows, unsigned long *cols)}}]{\setlength{\rightskip}{0pt plus 5cm}void eina\+\_\+matrixsparse\+\_\+size\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Matrixsparse} $\ast$}]{m, }
\item[{unsigned long $\ast$}]{rows, }
\item[{unsigned long $\ast$}]{cols}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_gac9b1c37eeaded174e59763b01ac9bcdc}{}\label{group__Eina__Matrixsparse__Group_gac9b1c37eeaded174e59763b01ac9bcdc}


Get the current size of Sparse Matrix. 

The given parameters are guaranteed to be set if they\textquotesingle{}re not {\ttfamily N\+U\+LL}, even if this function fails (ie\+: {\itshape m} is not a valid matrix instance).


\begin{DoxyParams}{Parameters}
{\em m} & the sparse matrix to operate on. \\
\hline
{\em rows} & returns the number of rows, may be {\ttfamily N\+U\+LL}. If {\itshape m} is invalid, returned value is zero, otherwise it\textquotesingle{}s a positive integer. \\
\hline
{\em cols} & returns the number of columns, may be {\ttfamily N\+U\+LL}. If {\itshape m} is invalid, returned value is zero, otherwise it\textquotesingle{}s a positive integer. \\
\hline
\end{DoxyParams}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+size\+\_\+set@{eina\+\_\+matrixsparse\+\_\+size\+\_\+set}}
\index{eina\+\_\+matrixsparse\+\_\+size\+\_\+set@{eina\+\_\+matrixsparse\+\_\+size\+\_\+set}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+size\+\_\+set(\+Eina\+\_\+\+Matrixsparse $\ast$m, unsigned long rows, unsigned long cols)}{eina_matrixsparse_size_set(Eina_Matrixsparse *m, unsigned long rows, unsigned long cols)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} eina\+\_\+matrixsparse\+\_\+size\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Matrixsparse} $\ast$}]{m, }
\item[{unsigned long}]{rows, }
\item[{unsigned long}]{cols}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_ga16af5e47858b6ba348ec95633464391e}{}\label{group__Eina__Matrixsparse__Group_ga16af5e47858b6ba348ec95633464391e}


Resize the Sparse Matrix. 

This will resize the sparse matrix, possibly freeing cells on rows and columns that will cease to exist.


\begin{DoxyParams}{Parameters}
{\em m} & the sparse matrix to operate on. \\
\hline
{\em rows} & the new number of rows, must be greater than zero. \\
\hline
{\em cols} & the new number of columns, must be greater than zero. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} on failure.
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
cells, rows or columns are not reference counted and thus after this call any reference might be invalid if instance were freed. 
\end{DoxyWarning}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+get@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+get}}
\index{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+get@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+get}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+get(const Eina\+\_\+\+Matrixsparse $\ast$m, unsigned long row, unsigned long col, Eina\+\_\+\+Matrixsparse\+\_\+\+Cell $\ast$$\ast$cell)}{eina_matrixsparse_cell_idx_get(const Eina_Matrixsparse *m, unsigned long row, unsigned long col, Eina_Matrixsparse_Cell **cell)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Matrixsparse} $\ast$}]{m, }
\item[{unsigned long}]{row, }
\item[{unsigned long}]{col, }
\item[{{\bf Eina\+\_\+\+Matrixsparse\+\_\+\+Cell} $\ast$$\ast$}]{cell}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_gadb57ccb0cf043123f4a8f1b9b0058cb1}{}\label{group__Eina__Matrixsparse__Group_gadb57ccb0cf043123f4a8f1b9b0058cb1}


Get the cell reference inside Sparse Matrix. 


\begin{DoxyParams}{Parameters}
{\em m} & the sparse matrix to operate on. \\
\hline
{\em row} & the new number of row to clear. \\
\hline
{\em col} & the new number of column to clear. \\
\hline
{\em cell} & pointer to return cell reference, if any exists.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
{\ttfamily 1} on success, {\ttfamily 0} on failure. It is considered success if did not exist but index is inside matrix size, in this case {\ttfamily $\ast$cell} == N\+U\+LL
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Matrixsparse__Group_ga4728a4bbbc25e855b881c6159ecaf45f}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+get()} 

\hyperlink{group__Eina__Matrixsparse__Group_ga68ce4fb20de7912ec119d9b3c99b337d}{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+get()} 
\end{DoxySeeAlso}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+get@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+get}}
\index{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+get@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+get}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+get(const Eina\+\_\+\+Matrixsparse\+\_\+\+Cell $\ast$cell)}{eina_matrixsparse_cell_data_get(const Eina_Matrixsparse_Cell *cell)}}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Matrixsparse\+\_\+\+Cell} $\ast$}]{cell}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_ga4728a4bbbc25e855b881c6159ecaf45f}{}\label{group__Eina__Matrixsparse__Group_ga4728a4bbbc25e855b881c6159ecaf45f}


Get data associated with given cell reference. 


\begin{DoxyParams}{Parameters}
{\em cell} & given cell reference, must {\bfseries not} be {\ttfamily N\+U\+LL}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
data associated with given cell.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Matrixsparse__Group_gadb57ccb0cf043123f4a8f1b9b0058cb1}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+get()} 

\hyperlink{group__Eina__Matrixsparse__Group_ga68ce4fb20de7912ec119d9b3c99b337d}{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+get()} 
\end{DoxySeeAlso}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+get@{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+get}}
\index{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+get@{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+get}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+get(const Eina\+\_\+\+Matrixsparse $\ast$m, unsigned long row, unsigned long col)}{eina_matrixsparse_data_idx_get(const Eina_Matrixsparse *m, unsigned long row, unsigned long col)}}]{\setlength{\rightskip}{0pt plus 5cm}void$\ast$ eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Matrixsparse} $\ast$}]{m, }
\item[{unsigned long}]{row, }
\item[{unsigned long}]{col}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_ga68ce4fb20de7912ec119d9b3c99b337d}{}\label{group__Eina__Matrixsparse__Group_ga68ce4fb20de7912ec119d9b3c99b337d}


Get data associated with given cell given its indexes. 


\begin{DoxyParams}{Parameters}
{\em m} & the sparse matrix to operate on. \\
\hline
{\em row} & the new number of row to clear. \\
\hline
{\em col} & the new number of column to clear.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
Data associated with given cell or {\ttfamily N\+U\+LL} if nothing is associated.
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Matrixsparse__Group_gadb57ccb0cf043123f4a8f1b9b0058cb1}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+get()} 

\hyperlink{group__Eina__Matrixsparse__Group_ga4728a4bbbc25e855b881c6159ecaf45f}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+get()} 
\end{DoxySeeAlso}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+cell\+\_\+position\+\_\+get@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+position\+\_\+get}}
\index{eina\+\_\+matrixsparse\+\_\+cell\+\_\+position\+\_\+get@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+position\+\_\+get}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+cell\+\_\+position\+\_\+get(const Eina\+\_\+\+Matrixsparse\+\_\+\+Cell $\ast$cell, unsigned long $\ast$row, unsigned long $\ast$col)}{eina_matrixsparse_cell_position_get(const Eina_Matrixsparse_Cell *cell, unsigned long *row, unsigned long *col)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} eina\+\_\+matrixsparse\+\_\+cell\+\_\+position\+\_\+get (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Matrixsparse\+\_\+\+Cell} $\ast$}]{cell, }
\item[{unsigned long $\ast$}]{row, }
\item[{unsigned long $\ast$}]{col}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_gad6fcbc781ade7bd9c8f939741d95fc44}{}\label{group__Eina__Matrixsparse__Group_gad6fcbc781ade7bd9c8f939741d95fc44}


Get position (indexes) of the given cell. 


\begin{DoxyParams}{Parameters}
{\em cell} & the cell reference, must {\bfseries not} be {\ttfamily N\+U\+LL}. \\
\hline
{\em row} & where to store cell row number, may be {\ttfamily N\+U\+LL}. \\
\hline
{\em col} & where to store cell column number, may be {\ttfamily N\+U\+LL}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} otherwise ({\ttfamily cell} is {\ttfamily N\+U\+LL}). 
\end{DoxyReturn}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+replace@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+replace}}
\index{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+replace@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+replace}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+replace(\+Eina\+\_\+\+Matrixsparse\+\_\+\+Cell $\ast$cell, const void $\ast$data, void $\ast$$\ast$p\+\_\+old)}{eina_matrixsparse_cell_data_replace(Eina_Matrixsparse_Cell *cell, const void *data, void **p_old)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+replace (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Matrixsparse\+\_\+\+Cell} $\ast$}]{cell, }
\item[{const void $\ast$}]{data, }
\item[{void $\ast$$\ast$}]{p\+\_\+old}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_gae1859fd77ba22b2313a463b5339b7bc6}{}\label{group__Eina__Matrixsparse__Group_gae1859fd77ba22b2313a463b5339b7bc6}


Change cell reference value without freeing the possibly existing old value. 


\begin{DoxyParams}{Parameters}
{\em cell} & the cell reference, must {\bfseries not} be {\ttfamily N\+U\+LL}. \\
\hline
{\em data} & new data to set. \\
\hline
{\em p\+\_\+old} & returns the old value intact (not freed).\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} otherwise ({\itshape cell} is {\ttfamily N\+U\+LL}).
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Matrixsparse__Group_gaa6c0e879e9e707fbdbfecc66358b889f}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+set()} 

\hyperlink{group__Eina__Matrixsparse__Group_gaac0d82ce568487fe5df4291cca2f37ea}{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+replace()} 
\end{DoxySeeAlso}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+set@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+set}}
\index{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+set@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+set}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+set(\+Eina\+\_\+\+Matrixsparse\+\_\+\+Cell $\ast$cell, const void $\ast$data)}{eina_matrixsparse_cell_data_set(Eina_Matrixsparse_Cell *cell, const void *data)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Matrixsparse\+\_\+\+Cell} $\ast$}]{cell, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_gaa6c0e879e9e707fbdbfecc66358b889f}{}\label{group__Eina__Matrixsparse__Group_gaa6c0e879e9e707fbdbfecc66358b889f}


Change cell value freeing the possibly existing old value. 

In contrast to \hyperlink{group__Eina__Matrixsparse__Group_gae1859fd77ba22b2313a463b5339b7bc6}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+replace()}, this function will call {\ttfamily free\+\_\+func()} on existing value.


\begin{DoxyParams}{Parameters}
{\em cell} & the cell reference, must {\bfseries not} be {\ttfamily N\+U\+LL}. \\
\hline
{\em data} & new data to set.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} otherwise ({\itshape cell} is {\ttfamily N\+U\+LL}).
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Matrixsparse__Group_gae1859fd77ba22b2313a463b5339b7bc6}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+replace()} 

\hyperlink{group__Eina__Matrixsparse__Group_ga0bfabda28f69e21121b5004238ea7ac5}{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+set()} 
\end{DoxySeeAlso}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+replace@{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+replace}}
\index{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+replace@{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+replace}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+replace(\+Eina\+\_\+\+Matrixsparse $\ast$m, unsigned long row, unsigned long col, const void $\ast$data, void $\ast$$\ast$p\+\_\+old)}{eina_matrixsparse_data_idx_replace(Eina_Matrixsparse *m, unsigned long row, unsigned long col, const void *data, void **p_old)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+replace (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Matrixsparse} $\ast$}]{m, }
\item[{unsigned long}]{row, }
\item[{unsigned long}]{col, }
\item[{const void $\ast$}]{data, }
\item[{void $\ast$$\ast$}]{p\+\_\+old}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_gaac0d82ce568487fe5df4291cca2f37ea}{}\label{group__Eina__Matrixsparse__Group_gaac0d82ce568487fe5df4291cca2f37ea}


Change cell value without freeing the possibly existing old value, using indexes. 


\begin{DoxyParams}{Parameters}
{\em m} & the sparse matrix, must {\bfseries not} be {\ttfamily N\+U\+LL}. \\
\hline
{\em row} & the row number to set the value. \\
\hline
{\em col} & the column number to set the value. \\
\hline
{\em data} & new data to set. \\
\hline
{\em p\+\_\+old} & returns the old value intact (not freed).\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} otherwise ({\itshape m} is {\ttfamily N\+U\+LL}, indexes are not valid).
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Matrixsparse__Group_gae1859fd77ba22b2313a463b5339b7bc6}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+replace()} 

\hyperlink{group__Eina__Matrixsparse__Group_ga0bfabda28f69e21121b5004238ea7ac5}{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+set()} 
\end{DoxySeeAlso}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+set@{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+set}}
\index{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+set@{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+set}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+set(\+Eina\+\_\+\+Matrixsparse $\ast$m, unsigned long row, unsigned long col, const void $\ast$data)}{eina_matrixsparse_data_idx_set(Eina_Matrixsparse *m, unsigned long row, unsigned long col, const void *data)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+set (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Matrixsparse} $\ast$}]{m, }
\item[{unsigned long}]{row, }
\item[{unsigned long}]{col, }
\item[{const void $\ast$}]{data}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_ga0bfabda28f69e21121b5004238ea7ac5}{}\label{group__Eina__Matrixsparse__Group_ga0bfabda28f69e21121b5004238ea7ac5}


Change cell value freeing the possibly existing old value, using indexes. 

In contrast to \hyperlink{group__Eina__Matrixsparse__Group_gaac0d82ce568487fe5df4291cca2f37ea}{eina\+\_\+matrixsparse\+\_\+data\+\_\+idx\+\_\+replace()}, this function will call {\ttfamily free\+\_\+func()} on existing value.


\begin{DoxyParams}{Parameters}
{\em m} & the sparse matrix, must {\bfseries not} be {\ttfamily N\+U\+LL}. \\
\hline
{\em row} & the row number to set the value. \\
\hline
{\em col} & the column number to set the value. \\
\hline
{\em data} & new data to set.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} otherwise ({\itshape m} is {\ttfamily N\+U\+LL}, indexes are not valid).
\end{DoxyReturn}
\begin{DoxySeeAlso}{See also}
\hyperlink{group__Eina__Matrixsparse__Group_gae1859fd77ba22b2313a463b5339b7bc6}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+replace()} 
\end{DoxySeeAlso}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+row\+\_\+idx\+\_\+clear@{eina\+\_\+matrixsparse\+\_\+row\+\_\+idx\+\_\+clear}}
\index{eina\+\_\+matrixsparse\+\_\+row\+\_\+idx\+\_\+clear@{eina\+\_\+matrixsparse\+\_\+row\+\_\+idx\+\_\+clear}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+row\+\_\+idx\+\_\+clear(\+Eina\+\_\+\+Matrixsparse $\ast$m, unsigned long row)}{eina_matrixsparse_row_idx_clear(Eina_Matrixsparse *m, unsigned long row)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} eina\+\_\+matrixsparse\+\_\+row\+\_\+idx\+\_\+clear (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Matrixsparse} $\ast$}]{m, }
\item[{unsigned long}]{row}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_ga074c8d356b37532fbc7f8e281fdfffed}{}\label{group__Eina__Matrixsparse__Group_ga074c8d356b37532fbc7f8e281fdfffed}


Clear (erase all cells) of row given its index. 

Existing cells will be cleared with {\ttfamily free\+\_\+func()} given to \hyperlink{group__Eina__Matrixsparse__Group_gab145a6839d6255e4ef8292dc9450fc9d}{eina\+\_\+matrixsparse\+\_\+new()}.


\begin{DoxyParams}{Parameters}
{\em m} & the sparse matrix to operate on. \\
\hline
{\em row} & the new number of row to clear.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} on failure. It is considered success if row had no cells filled. Failure is asking for clear row outside matrix size.
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
cells, rows or columns are not reference counted and thus after this call any reference might be invalid if instance were freed. 
\end{DoxyWarning}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+column\+\_\+idx\+\_\+clear@{eina\+\_\+matrixsparse\+\_\+column\+\_\+idx\+\_\+clear}}
\index{eina\+\_\+matrixsparse\+\_\+column\+\_\+idx\+\_\+clear@{eina\+\_\+matrixsparse\+\_\+column\+\_\+idx\+\_\+clear}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+column\+\_\+idx\+\_\+clear(\+Eina\+\_\+\+Matrixsparse $\ast$m, unsigned long col)}{eina_matrixsparse_column_idx_clear(Eina_Matrixsparse *m, unsigned long col)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} eina\+\_\+matrixsparse\+\_\+column\+\_\+idx\+\_\+clear (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Matrixsparse} $\ast$}]{m, }
\item[{unsigned long}]{col}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_gadd4f9d4a84a1e97deb7bbb8bb47b5b44}{}\label{group__Eina__Matrixsparse__Group_gadd4f9d4a84a1e97deb7bbb8bb47b5b44}


Clear (erase all cells) of column given its index. 

Existing cells will be cleared with {\ttfamily free\+\_\+func()} given to \hyperlink{group__Eina__Matrixsparse__Group_gab145a6839d6255e4ef8292dc9450fc9d}{eina\+\_\+matrixsparse\+\_\+new()}.


\begin{DoxyParams}{Parameters}
{\em m} & the sparse matrix to operate on. \\
\hline
{\em col} & the new number of column to clear.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} on failure. It is considered success if column had no cells filled. Failure is asking for clear column outside matrix size.
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
cells, rows or columns are not reference counted and thus after this call any reference might be invalid if instance were freed. 
\end{DoxyWarning}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+clear@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+clear}}
\index{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+clear@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+clear}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+clear(\+Eina\+\_\+\+Matrixsparse $\ast$m, unsigned long row, unsigned long col)}{eina_matrixsparse_cell_idx_clear(Eina_Matrixsparse *m, unsigned long row, unsigned long col)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} eina\+\_\+matrixsparse\+\_\+cell\+\_\+idx\+\_\+clear (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Matrixsparse} $\ast$}]{m, }
\item[{unsigned long}]{row, }
\item[{unsigned long}]{col}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_gad11f7fe08b96e1dcd250d2c50d0179ac}{}\label{group__Eina__Matrixsparse__Group_gad11f7fe08b96e1dcd250d2c50d0179ac}


Clear (erase) cell given its indexes. 

Existing cell will be cleared with {\ttfamily free\+\_\+func()} given to \hyperlink{group__Eina__Matrixsparse__Group_gab145a6839d6255e4ef8292dc9450fc9d}{eina\+\_\+matrixsparse\+\_\+new()}.


\begin{DoxyParams}{Parameters}
{\em m} & the sparse matrix to operate on. \\
\hline
{\em row} & the new number of row to clear. \\
\hline
{\em col} & the new number of column to clear.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} on failure. It is considered success if did not exist but index is inside matrix size.
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
cells, rows or columns are not reference counted and thus after this call any reference might be invalid if instance were freed.
\end{DoxyWarning}
\begin{DoxyNote}{Note}
This call might delete container column and row if this cell was the last remainder. 
\end{DoxyNote}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+cell\+\_\+clear@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+clear}}
\index{eina\+\_\+matrixsparse\+\_\+cell\+\_\+clear@{eina\+\_\+matrixsparse\+\_\+cell\+\_\+clear}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+cell\+\_\+clear(\+Eina\+\_\+\+Matrixsparse\+\_\+\+Cell $\ast$cell)}{eina_matrixsparse_cell_clear(Eina_Matrixsparse_Cell *cell)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Bool} eina\+\_\+matrixsparse\+\_\+cell\+\_\+clear (
\begin{DoxyParamCaption}
\item[{{\bf Eina\+\_\+\+Matrixsparse\+\_\+\+Cell} $\ast$}]{cell}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_gad3e2cc761d66db8f4e6fb62e9c61ed09}{}\label{group__Eina__Matrixsparse__Group_gad3e2cc761d66db8f4e6fb62e9c61ed09}


Clear (erase) cell given its reference. 


\begin{DoxyParams}{Parameters}
{\em cell} & the cell reference, must {\bfseries not} be {\ttfamily N\+U\+LL}.\\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
\hyperlink{group__Eina__Types__Group_ga05c12dacc8b4058994df842b41be85fc}{E\+I\+N\+A\+\_\+\+T\+R\+UE} on success, \hyperlink{group__Eina__Types__Group_ga1feb115f8e9913e806e090d9bd5a7301}{E\+I\+N\+A\+\_\+\+F\+A\+L\+SE} on failure.
\end{DoxyReturn}
\begin{DoxyWarning}{Warning}
cells, rows or columns are not reference counted and thus after this call any reference might be invalid if instance were freed.
\end{DoxyWarning}
\begin{DoxyNote}{Note}
This call might delete container column and row if this cell was the last remainder. 
\end{DoxyNote}
\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+iterator\+\_\+new@{eina\+\_\+matrixsparse\+\_\+iterator\+\_\+new}}
\index{eina\+\_\+matrixsparse\+\_\+iterator\+\_\+new@{eina\+\_\+matrixsparse\+\_\+iterator\+\_\+new}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+iterator\+\_\+new(const Eina\+\_\+\+Matrixsparse $\ast$m)}{eina_matrixsparse_iterator_new(const Eina_Matrixsparse *m)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Iterator}$\ast$ eina\+\_\+matrixsparse\+\_\+iterator\+\_\+new (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Matrixsparse} $\ast$}]{m}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_ga050e3217d88a9a3882b16dad4b0fac47}{}\label{group__Eina__Matrixsparse__Group_ga050e3217d88a9a3882b16dad4b0fac47}


Creates a new iterator over 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.

The iterator data will be the cell reference, one may query current position with \hyperlink{group__Eina__Matrixsparse__Group_gad6fcbc781ade7bd9c8f939741d95fc44}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+position\+\_\+get()} and cell value with \hyperlink{group__Eina__Matrixsparse__Group_ga4728a4bbbc25e855b881c6159ecaf45f}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+get()}.


\begin{DoxyParams}{Parameters}
{\em m} & The Sparse Matrix reference, must {\bfseries not} be {\ttfamily N\+U\+LL}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A new iterator.
\end{DoxyReturn}
\begin{DoxyWarning}{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! 
\end{DoxyWarning}


References E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+F\+R\+EE, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+G\+E\+T\+\_\+\+C\+O\+N\+T\+A\+I\+N\+ER, and F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+N\+E\+XT.

\index{Sparse Matrix@{Sparse Matrix}!eina\+\_\+matrixsparse\+\_\+iterator\+\_\+complete\+\_\+new@{eina\+\_\+matrixsparse\+\_\+iterator\+\_\+complete\+\_\+new}}
\index{eina\+\_\+matrixsparse\+\_\+iterator\+\_\+complete\+\_\+new@{eina\+\_\+matrixsparse\+\_\+iterator\+\_\+complete\+\_\+new}!Sparse Matrix@{Sparse Matrix}}
\subsubsection[{\texorpdfstring{eina\+\_\+matrixsparse\+\_\+iterator\+\_\+complete\+\_\+new(const Eina\+\_\+\+Matrixsparse $\ast$m)}{eina_matrixsparse_iterator_complete_new(const Eina_Matrixsparse *m)}}]{\setlength{\rightskip}{0pt plus 5cm}{\bf Eina\+\_\+\+Iterator}$\ast$ eina\+\_\+matrixsparse\+\_\+iterator\+\_\+complete\+\_\+new (
\begin{DoxyParamCaption}
\item[{const {\bf Eina\+\_\+\+Matrixsparse} $\ast$}]{m}
\end{DoxyParamCaption}
)}\hypertarget{group__Eina__Matrixsparse__Group_gaec29352ddcf092508f0a07cc61ca895c}{}\label{group__Eina__Matrixsparse__Group_gaec29352ddcf092508f0a07cc61ca895c}


Creates a new iterator over all matrix cells. 

Unlike \hyperlink{group__Eina__Matrixsparse__Group_ga050e3217d88a9a3882b16dad4b0fac47}{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 \hyperlink{group__Eina__Matrixsparse__Group_gad6fcbc781ade7bd9c8f939741d95fc44}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+position\+\_\+get()} and cell value with \hyperlink{group__Eina__Matrixsparse__Group_ga4728a4bbbc25e855b881c6159ecaf45f}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+get()}. If cell is empty then the reference will be a dummy/placeholder, thus setting value with \hyperlink{group__Eina__Matrixsparse__Group_gaa6c0e879e9e707fbdbfecc66358b889f}{eina\+\_\+matrixsparse\+\_\+cell\+\_\+data\+\_\+set()} will leave pointer unreferenced.


\begin{DoxyParams}{Parameters}
{\em m} & The Sparse Matrix reference, must {\bfseries not} be {\ttfamily N\+U\+LL}. \\
\hline
\end{DoxyParams}
\begin{DoxyReturn}{Returns}
A new iterator.
\end{DoxyReturn}
\begin{DoxyWarning}{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! 
\end{DoxyWarning}


References E\+I\+N\+A\+\_\+\+M\+A\+G\+I\+C\+\_\+\+S\+ET, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+F\+R\+EE, F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+G\+E\+T\+\_\+\+C\+O\+N\+T\+A\+I\+N\+ER, and F\+U\+N\+C\+\_\+\+I\+T\+E\+R\+A\+T\+O\+R\+\_\+\+N\+E\+XT.

