mirror of
https://gitlab.com/klmp200/LO27.git
synced 2024-11-05 10:38:04 +00:00
165 lines
2.9 KiB
C
165 lines
2.9 KiB
C
#ifndef CELLELMNT_H
|
|
#define CELLELMNT_H
|
|
|
|
|
|
/*---bool---
|
|
*@true : 1
|
|
*@false : 0
|
|
*/
|
|
typedef enum Bool{
|
|
|
|
true = 1,
|
|
false = 0,
|
|
ERROR = -1
|
|
|
|
} bool;
|
|
|
|
|
|
/*---cellElement---
|
|
*A cell of the matrix
|
|
*
|
|
*@colIndex : index (int) of the column of this cell
|
|
*@rowIndex : index (int) of the row of this cell
|
|
*
|
|
*@value : a boolean that is the content of the cell
|
|
*
|
|
*@nextCol : pointer on the next cellElement in the same column
|
|
*@nextRow : pointer on the next cellElement in the same row
|
|
*
|
|
*/
|
|
struct cellElement {
|
|
|
|
int colIndex;
|
|
int rowIndex;
|
|
|
|
struct cellElement * nextCol;
|
|
struct cellElement * nextRow;
|
|
|
|
};
|
|
typedef struct cellElement cellElement;
|
|
|
|
/*---CreateCellElem---
|
|
*Allocates a cellElement and returns it
|
|
*
|
|
*@return : pointer on the allocated cellElement
|
|
*
|
|
*/
|
|
cellElement * CreateCellElem();
|
|
|
|
|
|
/*---AddNextCol---
|
|
*Allocates a cellElement and sets it as the NextCol of the tree
|
|
*
|
|
*@tree : pointer on an allocated cellElement
|
|
*
|
|
*@return ; error codes
|
|
*
|
|
*/
|
|
int AddNextCol(cellElement* tree);
|
|
|
|
|
|
/*---AddNextRow---
|
|
*Allocates a cellElement and sets it as the NextRow of the tree
|
|
*
|
|
*@tree : a pointer on an allocated cellElement
|
|
*
|
|
*@return : error codes
|
|
*
|
|
*/
|
|
int AddNextRow(cellElement* tree);
|
|
|
|
/*---removeNextCol---
|
|
*Free the nextCol cellElement of the tree
|
|
*
|
|
*@tree : a pointer on an allocated cellElement
|
|
*
|
|
*/
|
|
void removeNextCol(cellElement* tree);
|
|
|
|
/*---removeNextRow---
|
|
*Free the nextRow cellElement of the tree
|
|
*
|
|
*@tree : a pointer on an allocated cellElement
|
|
*
|
|
*/
|
|
void removeNextRow(cellElement* tree);
|
|
|
|
|
|
/*---FreeCellElem---
|
|
*Frees a cellElement and returns it
|
|
*
|
|
*@element : pointer on the allocated cellElement
|
|
*
|
|
*/
|
|
void FreeCellElement(cellElement* element);
|
|
|
|
|
|
/*---is_leaf---
|
|
*Checks is the tree is a leaf
|
|
*
|
|
*@tree : a pointer on an allocated cellElement
|
|
*
|
|
*@return : a bool
|
|
*
|
|
*/
|
|
bool is_leaf(cellElement* tree);
|
|
|
|
|
|
/*---SetPositionIndex---
|
|
*Allows you to set the colIndex and the rowIndex of the cellElement elem
|
|
*
|
|
*@elem : a pointer on an allocated cellElement
|
|
*@Col : the value for colIndex
|
|
*@Row : the value for rowIndex
|
|
*
|
|
*@return : error codes
|
|
*
|
|
*/
|
|
int SetPositionIndex(cellElement* elem,int Col,int Row);
|
|
|
|
/*---SetNextCol---
|
|
*Allows you to set the nextCol of the cellElement tree
|
|
*
|
|
*@tree : a pointer on the element you want to set
|
|
*@elem : a pointer on a cellElement
|
|
*
|
|
*@return : error codes
|
|
*
|
|
*/
|
|
int SetNextCol(cellElement* tree,cellElement* elem);
|
|
|
|
/*---SetNextRow---
|
|
*Allows you to set the nextRow of the cellElement elem
|
|
*
|
|
*@tree : a pointer on the element you want to set
|
|
*@elem : a pointer on a cellElement
|
|
*
|
|
*@return : error codes
|
|
*
|
|
*/
|
|
int SetNextRow(cellElement* tree,cellElement* elem);
|
|
|
|
|
|
|
|
|
|
void recursivePrint(cellElement * tree);
|
|
|
|
|
|
/**
|
|
* Apply OR operator to a bool a and a bool b
|
|
* @param a a bool
|
|
* @param b a bool
|
|
* @return result a or b
|
|
*/
|
|
bool OR(bool a, bool b);
|
|
|
|
/**
|
|
* Apply AND operator to a bool a and a bool b
|
|
* @param a a bool
|
|
* @param b a bool
|
|
* @return result a and b
|
|
*/
|
|
bool AND(bool a, bool b);
|
|
|
|
#endif
|