-
Notifications
You must be signed in to change notification settings - Fork 0
/
containerTypes.h
69 lines (66 loc) · 2.02 KB
/
containerTypes.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
/** @file
* @brief Conriene tipos de contenedores genericos
*/
#ifndef CONTAINERTYPES_H
#define CONTAINERTYPES_H
#include <stdio.h>
#include "snake_global.h"
/**
* @brief Estructura basica de una lista enlazada simple
**/
typedef struct linkList{
linkList* next;/**< Elemento siguiente de la lista */
}linkList;
/**
* @brief addNodeBefore Añade el nodo next despues de first
* @param first Punto de la lista a partir del que se inerta el nodo next
* @param next Nodo a insertar
*/
void addNodeBefore(linkList* first,linkList* next);
/**
* @brief insertNode inserta un nodo
* @param listNode
* @param node
*/
void insertNode(linkList* listNode,linkList* node);
/**
* @brief delNextNode borra el elemento node de la lista
* @param node nodo a eliminar de la lista
* @return
*/
linkList* delNextNode(linkList *node);
/**
* @brief vector Estructura que representa a un vector dinamico
*
*/
typedef struct{
byte* buff;/**< Puntero a la zona de memoria donde se guardan los datos */
ulong typeSize;/**< Tamaño del cada elemento del array */
ulong nElementMax;/**< Numero maximo de elemento del array */
ulong nElementUsaje;/**< Numero de elemento del array que estan en uso */
}vector;
/**
* @brief recupera el puntero del buffer y lo convierte al typo especificado
**/
#define getDataVector(v,type) ((type*)(&v)->buff)
/**
* @brief initVector Inicializa un vector
* @param v Vector
* @param nElementMax Numero de elementos Maximo inicial del array
* @param typeSize Tamaño del cada elemento del array
*/
void initVector(vector* v,ulong nElementMax,ulong typeSize = sizeof(byte));
/**
* @brief uinitVector Livera la memoria asociada al vector
* @param v Vector
*/
void uinitVector(vector* v);
/**
* @brief resizeVector Cambia el numero maximo de elementos del vector
*
* Si el nuevo maximo es menor que el anterior, reduce el espacio del array y desecha los elementos que s quedan fuera
* @param v Vector
* @param nElementMax Nuevo maximo
*/
void resizeVector(vector* v,ulong nElementMax);
#endif // CONTAINERTYPES_H