-
Notifications
You must be signed in to change notification settings - Fork 0
/
queryDataADT.h
58 lines (48 loc) · 2.2 KB
/
queryDataADT.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
#ifndef QUERY_DATA_ADT_H
#define QUERY_DATA_ADT_H
#define EPSILON 0.00001 // Util para la Query 2
enum {ERROR=0, SUCCESS, ALLOC_ERROR, REPEATED_ERROR, NO_QUERY_VALUE, NO_INDEX};
typedef struct queryDataCDT * queryDataADT;
#define QUERIES 3
/* Función: Crea una nueva instancia de queryDataADT
* Uso: queryDataADT qd = newQueryData(void);
* Descripción: Devuelve NULL si no se pudo crear espacio para almacenar los datos
*/
queryDataADT newQueryData(void);
/* Función: Almacena la información del barrio
* Uso: addNbh(qd, name, population);
* Descripción: Agrega un barrio de nombre "name" y su cantidad de habitantes "population".
* Retorna ALLOC_ERROR si no pudo agregar el barrio o REPEATED_ERROR si ya existía.
*/
int addNbh(queryDataADT qd, char * name, size_t population);
/* Función: Almacena la información del arbol
* Uso: addTree(queryDataADT qd, const char * nbhName);
* Descripción: Agrega un árbol cuyo barrio es nbhName, cuyo nombre cientifico es sciName y cuyo diametro a la altura del pecho es diam.
* Retorna ERROR si no pudo agregar el arbol.
*/
int addTree(queryDataADT qd, const char * nbhName, const char * sciName, float diam);
/* Función: Libera la memoria almacenada para el TAD
* Uso: freeQueryData(qd);
* Descripción: -
*/
void freeQueryData(queryDataADT qd);
/* Función: Prepara el recorrido de las respuestas para una query particular.
* Uso: beginQuery(qd, queryNum);
* Descripción: Retorna ERROR si ocurrió un fallo y no se puede comenzar la query.
* Retorna SUCCESS si es posible comenzar, o NO_QUERY_VALUE si no existe esa query.
* queryNum debe encontrarse entre 1 y QUERIES inclusive.
*/
int beginQuery(queryDataADT qd, int queryNum);
/* Función: Permite recorrer los datos hasta que se terminen.
* Uso: hasNext(qd)
* Descripción: Devuelve 1 si hay mas datos, 0 sino.
*/
int hasNext(queryDataADT qd);
/* Función: Retorna uno a uno los datos correspondientes a cada query
* Uso: char ** ans = answer(qd, &size);
* Descripción: Devuelve un vector de punteros a char correspondientes a la query actual.
* Se debe liberar la memoria almacenada para cada string.
* Retorna NULL si no se pudo obtener la respuesta.
*/
char ** answer(queryDataADT qd, size_t * size);
#endif