1
0
mirror of https://gitlab.com/klmp200/LO27.git synced 2025-09-15 20:23:50 +00:00

Add true makefile + lists

This commit is contained in:
2016-12-10 02:28:10 +01:00
parent 30e9c36b2d
commit 77491c8e61
9 changed files with 256 additions and 48 deletions

126
LibList/CellElement.c Normal file
View File

@@ -0,0 +1,126 @@
/***
--- CellElemFunc ---
---Created by : Naej Doree ---
***/
#include <stdio.h>
#include <stdlib.h>
#include <CellElement.h>
cellElement * CreateCellElem(){
cellElement * elem = NULL;
elem = (cellElement*) malloc(sizeof(cellElement));
if (elem == NULL){
return NULL;
}
printf("---Created cellElement---\n");
elem->value = true;
elem->nextCol = NULL;
elem->nextRow = NULL;
return elem;
}
void freeCellElem(cellElement * elem){
free(elem);
elem = NULL;
}
int AddNextCol(cellElement* tree){
cellElement * elem = NULL;
elem = (cellElement*) malloc(sizeof(cellElement));
if (elem == NULL){
return -1;
}
printf("---insertNextCol---\n");
elem->value = true;
elem->nextCol = NULL;
elem->nextRow = NULL;
if (tree->nextCol == NULL){
tree->nextCol = elem;
}else{
return -2;
}
return 1;
}
int AddNextRow(cellElement* tree){
cellElement * elem = NULL;
elem = (cellElement*) malloc(sizeof(cellElement));
if (elem == NULL){
return -1;
}
printf("---insertNextRow---\n");
elem->value = true;
elem->nextRow = NULL;
elem->nextRow = NULL;
if (tree->nextRow == NULL){
tree->nextRow = elem;
}else{
return -2;
}
return 1;
}
void removeNextCol(cellElement* tree){
printf("---removeNextCol---\n");
if (tree->nextCol != NULL){
cellElement * elem = tree->nextCol;
free(elem);
elem = NULL;
tree->nextCol = NULL;
}
}
void removeNextRow(cellElement* tree){
printf("---removeNextRow---\n");
if (tree->nextRow != NULL){
cellElement* elem = tree->nextRow;
free(elem);
elem =NULL;
tree->nextRow = NULL;
}
}
void recursivePrint(cellElement * tree){
if (tree != NULL){
printf("Elem : x: %d y: %d \n",tree->colIndex,tree->rowIndex);
if (tree->nextCol != NULL){
recursivePrint(tree->nextCol);
}
if (tree->nextRow != NULL){
recursivePrint(tree->nextRow);
}
if (tree->nextCol == NULL && tree->nextCol == NULL){
printf("leaf\n");
}
}
}
void FreeCellElement(cellElement* element) {
if (element != NULL){
free(element);
}
}

54
LibList/CellElement.h Normal file
View File

@@ -0,0 +1,54 @@
#ifndef CELLELMNT_H
#define CELLELMNT_H
/*---bool---
*@true : 1
*@false : 0
*/
typedef enum Bool{
true = 1,
false = 0
} bool;
/*---cellElement---
*Pointer on 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;
bool value;
struct cellElement * nextCol;
struct cellElement * nextRow;
};
typedef struct cellElement cellElement;
cellElement * CreateCellElem();
void freeCellElem(cellElement * elem);
int AddNextCol(cellElement* tree);
int AddNextRow(cellElement* tree);
void removeNextCol(cellElement* list);
void removeNextRow(cellElement* list);
void recursivePrint(cellElement * tree);
void FreeCellElement(cellElement* element);
#endif

29
LibList/Makefile Normal file
View File

@@ -0,0 +1,29 @@
CC=gcc
CFLAGS=-Wall -Werror -pedantic -fpic -g
LIBSDIR=-L/usr/lib -L../Libs
INCLUDEDIR=-I/usr/include -I.
#Library variables
LIBTARGET=libList.so
LIBSOURCE=list CellElement
LIBSOURCECFILE=$(LIBSOURCE:=.c)
LIBSOURCEOFILE=$(LIBSOURCE:=.o)
#Generating the library binary
$(LIBTARGET): $(LIBSOURCEOFILE)
@echo "\n Generating the library binary"
$(CC) $(CFLAGS) -shared $(LIBSOURCEOFILE) -o ../Libs/$(LIBTARGET)
#Generating object files
.c.o:
@echo "\n Generating " $@ " from " $<
$(CC) $(CFLAGS) $(INCLUDEDIR) -c -o $@ $<
#Cleaning
clean:
@echo "\n Cleaning"
rm -rf *.o *.exe *.so

99
LibList/list.h Normal file
View File

@@ -0,0 +1,99 @@
#ifndef LIST_H
#define LIST_H
#include <CellElement.h>
#define SUCCESS 0
#define FAILURE 1
typedef struct ListElement ListElement;
struct ListElement {
void *data;
ListElement *next;
ListElement *previous;
};
typedef struct List {
ListElement *head;
ListElement *tail;
int size;
} List;
/*
* Create a new list
* @return a pointer of list
*/
List * CreateList();
/*
* Insert an element at the begining of a list
* @param list pointer of a list
* @param data any type of data
* @param size size of the data
* @return status of the operation
*/
int unshift(List* list, cellElement* data);
/*
* Insert an element at the end of a list
* @param list pointer of a list
* @param data any type of data
* @param size size of the data
* @return status of the operation
*/
int push(List* list, cellElement* data);
/*
* Get an element in a given list
* @param list as a pointer
* @param nb the number of the element (can be negative)
* @return an element
*/
ListElement * GetElement(List *list, int nb);
/*
* Delete an element with a pointer of element in the list
* @param list as a pointer
* @param element of the list as a pointer
* @return status of the operation
*/
int PopPtnList(List *list, ListElement *element);
/*
* Delete an element with a position in the list
* @param list as a pointer
* @param position of the element
* @return status of the operation
*/
int RemoveElement(List *list, int nb);
/*
* Delete the first element of the list
* @param list as a pointer
* @return status of the operation
*/
int shift(List *list);
/*
* Delete the last element of the list
* @param list as a pointer
* @return status of the operation
*/
int pop(List *list);
/*
* Delete every elements in a list
* @param list as a pointer
* @return status of the operation
*/
int DeleteListContent(List *list);
/*
* Free a list
* @param list as a pointer
* @return status of the operation
*/
int FreeList(List *list);
#endif /* LIST_H */