Integrating library with application

This commit is contained in:
2024-02-03 14:05:46 +05:30
parent 444f7d2e05
commit 1b68628fee
11 changed files with 265 additions and 0 deletions

Binary file not shown.

BIN
AppIntegration/appexe Executable file

Binary file not shown.

BIN
AppIntegration/appexed Executable file

Binary file not shown.

View File

@@ -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 <stdlib.h>
#include <string.h>
#include <stdio.h>
/*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;
}

Binary file not shown.

60
AppIntegration/dll.c Normal file
View File

@@ -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 <memory.h>
#include <stdlib.h>
/* 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;
}

56
AppIntegration/dll.h Normal file
View File

@@ -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);

BIN
AppIntegration/dll.o Normal file

Binary file not shown.

68
AppIntegration/dll_util.c Normal file
View File

@@ -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 <memory.h>
#include <stdlib.h>
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;
}
}

BIN
AppIntegration/dll_util.o Normal file

Binary file not shown.

BIN
AppIntegration/libdll.a Normal file

Binary file not shown.