diff --git a/AppIntegration/.application.c.un~ b/AppIntegration/.application.c.un~ new file mode 100644 index 0000000..9ada10d Binary files /dev/null and b/AppIntegration/.application.c.un~ differ diff --git a/AppIntegration/appexe b/AppIntegration/appexe new file mode 100755 index 0000000..caf345e Binary files /dev/null and b/AppIntegration/appexe differ diff --git a/AppIntegration/appexed b/AppIntegration/appexed new file mode 100755 index 0000000..a31b250 Binary files /dev/null and b/AppIntegration/appexed differ diff --git a/AppIntegration/application.c b/AppIntegration/application.c new file mode 100644 index 0000000..40056b6 --- /dev/null +++ b/AppIntegration/application.c @@ -0,0 +1,81 @@ +/* + * ===================================================================================== + * + * Filename: application.c + * + * Description: + * + * Version: 1.0 + * Created: 03/02/24 01:50:44 PM IST + * Revision: none + * Compiler: gcc + * + * Author: YOUR NAME (), + * Organization: + * + * ===================================================================================== + */ + +#include "dll.h" +#include +#include +#include + +/*Application specific data structures*/ +typedef struct person_{ + + char name[32]; + int age; + int weight; +} person_t; + +static void +print_person_details(person_t *person){ + + printf("Name = %s\n", person->name); + printf("Age = %d\n", person->age); + printf("weight = %d\n", person->weight); +} + +static void +print_person_db(dll_t *person_db) { + + if(!person_db || !person_db->head) return; + + dll_node_t *head = person_db->head; + person_t *data = NULL; + + while(head){ + data = head->data; + print_person_details(data); + head = head->right; + } +} + +int +main(int argc, char **argv){ + + person_t *person1 = calloc(1, sizeof(person_t)); + strncpy(person1->name, "Abhishek", strlen("Abhishek")); + person1->age = 31; + person1->weight = 75; + person_t *person2 = calloc(1, sizeof(person_t)); + strncpy(person2->name, "Joseph", strlen("Joseph")); + person2->age = 41; + person2->weight = 70; + person_t *person3 = calloc(1, sizeof(person_t)); + strncpy(person3->name, "Jack", strlen("Jack")); + person3->age = 29; + person3->weight = 55; + + /*Create a new Linked List*/ + + dll_t *person_db = get_new_dll(); + add_data_to_dll(person_db, person1); + add_data_to_dll(person_db, person2); + add_data_to_dll(person_db, person3); + + print_person_db(person_db); + + return 0; +} diff --git a/AppIntegration/application.o b/AppIntegration/application.o new file mode 100644 index 0000000..04deb59 Binary files /dev/null and b/AppIntegration/application.o differ diff --git a/AppIntegration/dll.c b/AppIntegration/dll.c new file mode 100644 index 0000000..59f960d --- /dev/null +++ b/AppIntegration/dll.c @@ -0,0 +1,60 @@ +/* + * ===================================================================================== + * + * Filename: dll.c + * + * Description: + * + * Version: 1.0 + * Created: 28/01/24 07:59:34 PM IST + * Revision: none + * Compiler: gcc + * + * Author: YOUR NAME (), + * Organization: + * + * ===================================================================================== + */ + + + +#include "dll.h" +#include +#include + +/* Public Function Implementation to create and return + * new empty doubly linked list*/ + +dll_t * +get_new_dll(){ + + dll_t *dll = calloc(1, sizeof(dll_t)); + dll->head = NULL; + return dll; +} + +/* Public Function Implementation to add a new application + * * data to DLL */ +int +add_data_to_dll (dll_t *dll, void *app_data){ + + if(!dll || !app_data) return -1; + + dll_node_t *dll_new_node = calloc(1, sizeof(dll_node_t)); + dll_new_node->left = NULL; + dll_new_node->right = NULL; + dll_new_node->data = app_data; + + /*Now add this to the front of DLL*/ + if(!dll->head){ + dll->head = dll_new_node; + return 0; + } + + dll_node_t *first_node = dll->head; + dll_new_node->right = first_node; + first_node->left = dll_new_node; + dll->head = dll_new_node; + return 0; +} + diff --git a/AppIntegration/dll.h b/AppIntegration/dll.h new file mode 100644 index 0000000..703509e --- /dev/null +++ b/AppIntegration/dll.h @@ -0,0 +1,56 @@ +/* + * ===================================================================================== + * + * Filename: dll.h + * + * Description: + * + * Version: 1.0 + * Created: 28/01/24 07:58:51 PM IST + * Revision: none + * Compiler: gcc + * + * Author: YOUR NAME (), + * Organization: + * + * ===================================================================================== + */ + + +/*Header file for Doubly Linked List*/ + +typedef struct dll_node_{ + + void *data; + struct dll_node_ *left; + struct dll_node_ *right; +} dll_node_t; + +typedef struct dll_{ + dll_node_t *head; +} dll_t; + + +/* Public Function declaration to create and return + * a new empty doubly linked list*/ +dll_t * +get_new_dll(); + +/* Public Function declaration to add the application + * data to DLL*/ +int +add_data_to_dll(dll_t *dll, void *app_data); + + +/*More functions*/ +int /*return 0 on success and -1 on failure*/ +remove_data_from_dll_by_data_ptr (dll_t *dll, void *data); + +/*return 0 if empty, -1 if not empty*/ +int +is_dll_empty (dll_t *dll); + +/* delete all nodes from a dll, but do not free appln data*/ +void +drain_dll (dll_t *dll); + diff --git a/AppIntegration/dll.o b/AppIntegration/dll.o new file mode 100644 index 0000000..370597d Binary files /dev/null and b/AppIntegration/dll.o differ diff --git a/AppIntegration/dll_util.c b/AppIntegration/dll_util.c new file mode 100644 index 0000000..a6c971c --- /dev/null +++ b/AppIntegration/dll_util.c @@ -0,0 +1,68 @@ +/* + * ===================================================================================== + * + * Filename: dll_util.c + * + * Description: + * + * Version: 1.0 + * Created: 03/02/24 11:35:26 AM IST + * Revision: none + * Compiler: gcc + * + * Author: YOUR NAME (), + * Organization: + * + * ===================================================================================== + */ +#include "dll.h" +#include +#include + +int +remove_data_from_dll_by_data_ptr (dll_t *dll, void *data ){ + + if( !dll || !dll->head || !data ) return -1; + + /* Searching for data linearly and deleting the data*/ + dll_node_t *tp; + dll_node_t *temp = dll->head; + while( !temp ){ + if( *((int *)temp->data) == *((int *)data) ){ + tp = temp->left; + tp->right = temp->right; + free(temp); + return 0; + } + temp = temp->right; + } + + return -1; +} + +int +is_dll_empty(dll_t *dll){ + + if( !dll || !dll->head ) return 0; + + return -1; +} + + +void +drain_dll (dll_t *dll){ + if( !dll || !dll->head ) return; + + dll_node_t *tp = dll->head; + dll_node_t * temp = dll->head; + while( tp != NULL ){ + tp->right->left = NULL; + temp = tp->right; + tp->right = NULL; + free(tp->data); + free(tp); + tp = temp; + } + +} + diff --git a/AppIntegration/dll_util.o b/AppIntegration/dll_util.o new file mode 100644 index 0000000..b87b05c Binary files /dev/null and b/AppIntegration/dll_util.o differ diff --git a/AppIntegration/libdll.a b/AppIntegration/libdll.a new file mode 100644 index 0000000..49be4d4 Binary files /dev/null and b/AppIntegration/libdll.a differ