diff --git a/_main.c b/_main.c new file mode 100644 index 0000000000000000000000000000000000000000..9f584fe03ae65a54f038697f87e7abcb108fd8c2 --- /dev/null +++ b/_main.c @@ -0,0 +1,32 @@ +#include <assert.h> +// Warning : stdbool +#include <stdbool.h> +#include <stdio.h> +#include <stdlib.h> + +#include "bptree.h" +#include "sorted_array.h" + +int main() { + BPTreeNode *root = bptree_init(2); + int keys_length = 40; + uint64_t keys[] = {8, 12, 11, 47, 22, 95, 86, 40, 33, 78, 28, 5, 75, 88, 21, 56, 82, 51, 93, 66, 48, 70, 57, 65, 35, 4, 60, 41, 49, 55, 68, 72, 23, 31, 30, 42, 18, 87, 24, 58}; + array_print(keys_length, keys); + + for (int i = 0; i < keys_length; i++) { + bptree_insert(root, keys[i], keys[i] * 1000); + } + + bptree_print(root, 0); + + for (int i = 0; i < keys_length; i++) { + uint64_t data; + bool found = bptree_search(root, keys[i], &data); + + assert(found == true); + assert(data == keys[i] * 1000); + } + + bptree_destroy(&root); + return EXIT_SUCCESS; +} diff --git a/src/Directory.c b/src/Directory.c new file mode 100644 index 0000000000000000000000000000000000000000..796581f27b7fb65a58d648b7218d7391f0892007 --- /dev/null +++ b/src/Directory.c @@ -0,0 +1,43 @@ +#include "Directory.h" + +#include <stdio.h> +#include <stdlib.h> + +#include "DirectoryRecord.h" + +Directory *Directory_init() { + Directory *directory = (Directory *)malloc(sizeof(Directory)); + directory->records_length = 0; + // WARNING + directory->records = (DirectoryRecord **)malloc(sizeof(Directory *) * 1000); + return directory; +} + +void Directory_destroy(Directory **directory) { + for (int i = 0; i < (*directory)->records_length; i++) { + DirectoryRecord_destroy(&(*directory)->records[i]); + } + + free((*directory)->records); + free(*directory); + *directory = NULL; +} + +void Directory_print(Directory *directory) { + printf("========================\n"); + + for (int i = 0; i < directory->records_length; i++) { + DirectoryRecord_print(directory->records[i]); + + if (i < directory->records_length - 1) { + printf("------------------------\n"); + } + } + + printf("========================\n"); +} + +void Directory_insert(Directory *directory, DirectoryRecord *record) { + directory->records[directory->records_length] = record; + directory->records_length += 1; +} diff --git a/src/Directory.h b/src/Directory.h new file mode 100644 index 0000000000000000000000000000000000000000..6063a5ff31f8dc4d4d07c6143fadd26fe8318c98 --- /dev/null +++ b/src/Directory.h @@ -0,0 +1,16 @@ +#ifndef DIRECTORY_H +#define DIRECTORY_H + +#include "DirectoryRecord.h" + +typedef struct Directory { + int records_length; + DirectoryRecord **records; +} Directory; + +Directory *Directory_init(); +void Directory_destroy(Directory **directory); +void Directory_print(Directory *directory); +void Directory_insert(Directory *directory, DirectoryRecord *record); + +#endif diff --git a/src/Directory.o b/src/Directory.o new file mode 100644 index 0000000000000000000000000000000000000000..44cdaf0a743353597ff980dca51462dc4e9396e4 Binary files /dev/null and b/src/Directory.o differ diff --git a/src/DirectoryRecord.c b/src/DirectoryRecord.c new file mode 100644 index 0000000000000000000000000000000000000000..94fb4bb1c919fbd1b2640563ab8679d336217fd5 --- /dev/null +++ b/src/DirectoryRecord.c @@ -0,0 +1,28 @@ +#include "DirectoryRecord.h" + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +DirectoryRecord *DirectoryRecord_init(char phone_number[11], char name[21], char surname[21], int birth_date_year, int birth_date_month, int birth_date_day) { + DirectoryRecord *record = (DirectoryRecord *)malloc(sizeof(DirectoryRecord)); + strcpy(record->phone_number, phone_number); + strcpy(record->name, name); + strcpy(record->surname, surname); + record->birth_date_year = birth_date_year; + record->birth_date_month = birth_date_month; + record->birth_date_day = birth_date_day; + return record; +} + +void DirectoryRecord_destroy(DirectoryRecord **record) { + free(*record); + *record = NULL; +} + +void DirectoryRecord_print(DirectoryRecord *record) { + printf("Phone Number: %s\n", record->phone_number); + printf("Name: %s\n", record->name); + printf("Surname: %s\n", record->surname); + printf("Birth Date: %d-%.2d-%.2d\n", record->birth_date_year, record->birth_date_month, record->birth_date_day); +} diff --git a/src/DirectoryRecord.h b/src/DirectoryRecord.h new file mode 100644 index 0000000000000000000000000000000000000000..a398b9603a4bcf61f976e3012e04a83f4b06d397 --- /dev/null +++ b/src/DirectoryRecord.h @@ -0,0 +1,17 @@ +#ifndef DIRECTORY_RECORD_H +#define DIRECTORY_RECORD_H + +typedef struct DirectoryRecord { + char phone_number[11]; + char name[21]; + char surname[21]; + int birth_date_year; + int birth_date_month; + int birth_date_day; +} DirectoryRecord; + +DirectoryRecord *DirectoryRecord_init(char phone_number[11], char name[21], char surname[21], int birth_date_year, int birth_date_month, int birth_date_day); +void DirectoryRecord_destroy(DirectoryRecord **record); +void DirectoryRecord_print(DirectoryRecord *record); + +#endif diff --git a/src/DirectoryRecord.o b/src/DirectoryRecord.o new file mode 100644 index 0000000000000000000000000000000000000000..86700a2bced8ec1297755924790fa9a47b1b5744 Binary files /dev/null and b/src/DirectoryRecord.o differ diff --git a/src/bptree.h b/src/bptree.h index bff78b36d3a68d91ce42e204306ad613bec4949d..05fdd197a9d4008a55ad25cfaf7c08205cc0b856 100644 --- a/src/bptree.h +++ b/src/bptree.h @@ -21,8 +21,6 @@ void bptree_destroy(BPTreeNode **root); void bptree_print(BPTreeNode *root, int depth); bool bptree_search(BPTreeNode *root, uint64_t key, uint64_t *data); -// ... - // Insertion void bptree_insert(BPTreeNode *root, uint64_t key, uint64_t data); diff --git a/src/main.c b/src/main.c index 9f584fe03ae65a54f038697f87e7abcb108fd8c2..ee5ea626811d449c48d13b4c052c6cec4601e108 100644 --- a/src/main.c +++ b/src/main.c @@ -4,29 +4,20 @@ #include <stdio.h> #include <stdlib.h> +#include "Directory.h" +#include "DirectoryRecord.h" #include "bptree.h" #include "sorted_array.h" int main() { - BPTreeNode *root = bptree_init(2); - int keys_length = 40; - uint64_t keys[] = {8, 12, 11, 47, 22, 95, 86, 40, 33, 78, 28, 5, 75, 88, 21, 56, 82, 51, 93, 66, 48, 70, 57, 65, 35, 4, 60, 41, 49, 55, 68, 72, 23, 31, 30, 42, 18, 87, 24, 58}; - array_print(keys_length, keys); + BPTreeNode *index = bptree_init(2); - for (int i = 0; i < keys_length; i++) { - bptree_insert(root, keys[i], keys[i] * 1000); - } + Directory *directory = Directory_init(); + Directory_insert(directory, DirectoryRecord_init("0794592180", "Florian", "Burgener", 2000, 10, 03)); + Directory_insert(directory, DirectoryRecord_init("0799494969", "Daisy", "Luna", 1995, 05, 31)); + Directory_print(directory); - bptree_print(root, 0); - - for (int i = 0; i < keys_length; i++) { - uint64_t data; - bool found = bptree_search(root, keys[i], &data); - - assert(found == true); - assert(data == keys[i] * 1000); - } - - bptree_destroy(&root); + Directory_destroy(&directory); + bptree_destroy(&index); return EXIT_SUCCESS; } diff --git a/src/main.o b/src/main.o index 48a3065119e6f7e4a258d9e3f7cababf73859fc3..ca2341be399e9bed35f53bf070ec7056618708e1 100644 Binary files a/src/main.o and b/src/main.o differ diff --git a/src/program b/src/program index 9e4a14ec81fca974afb54dcc39df11dba1aa35df..c0146df79aba0eb288537ce614d67e08d5b8afbd 100644 Binary files a/src/program and b/src/program differ