-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdata_table.c
More file actions
78 lines (62 loc) · 2.34 KB
/
data_table.c
File metadata and controls
78 lines (62 loc) · 2.34 KB
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
70
71
72
73
74
75
76
77
78
/*Created by Omri Kaisari on 08/08/2020.*/
#include "data_table.h"
/**
* @brief the DataItemsList struct
*/
struct data_list_t {
List data; /*a linked list stored all the data elements*/
int dc; /*the current DC value after adding the last element*/
int numberOfDataItems; /*the total number of data elements*/
};
/************************************************** Internal functions ************************************************/
/**
* @brief a default destroy function for destroying list of primitive types
* @param list
*/
void data_item_list_destroy(List list);
/************************************************** Functions implementations *****************************************/
DataItemsList data_items_list_create() {
DataItemsList list = malloc(sizeof(struct data_list_t));
list->data = list_create();
list->dc = 0;
list->numberOfDataItems = 0;
return list;
}
List *data_items_get_list_of_data(DataItemsList dataItemsList) {
List data = dataItemsList->data;
int listSize = dataItemsList->numberOfDataItems;
int i;
List *listArray;
listArray = malloc(sizeof(List) * (listSize));
for (i = FIRST_ELEMENT; i <= listSize; ++i) {
listArray[i - 1] = list_get_data_element_at_index(data, i);
}
return listArray;
}
void data_items_list_add_data_element(DataItemsList list, void *dataElement, size_t sizeOfDataElement) {
/*assumes that dataElement is a valid array of chars or ints */
/*if the Data element is List - it uses the original list (it is not being copied)*/
/*the DC should be updated by the reading module*/
list_insert_node_at_end(list->data, dataElement, sizeOfDataElement);
(list->numberOfDataItems)++;
}
void data_items_list_update_dc(DataItemsList list, int delta) {
(list->dc) += delta;
}
void *data_items_list_get_data(DataItemsList list, int i) {
List result = list_get_data_element_at_index(list->data, i);
return result;
}
void data_items_list_destroy(DataItemsList list) {
list_destroy(list->data, (DestroyFunction) data_item_list_destroy);
free(list);
}
int data_items_get_dc(DataItemsList list) {
return list->dc;
}
void data_item_list_destroy(List list) {
list_destroy(list, NULL);
}
int data_items_get_number_of_data_items(DataItemsList list) {
return list->numberOfDataItems;
}