1
0
mirror of https://gitlab.com/klmp200/LO41.git synced 2025-07-12 04:39:23 +00:00

huge refactor, pointy pointer

This commit is contained in:
Aethor
2018-06-20 19:36:00 +02:00
parent f6f12b398d
commit 9b11ae0835
8 changed files with 45 additions and 35 deletions

View File

@ -4,6 +4,11 @@
#include "Passenger.h"
int compare_Passenger(void * passenger1, void * passenger2){
return (strcmp(((Passenger*) passenger1)->get_name((Passenger*) passenger1),
((Passenger*) passenger2)->get_name((Passenger*) passenger2)) == 0);
}
int get_id_Passenger(THIS(Passenger)){
if (this->type == RESIDENT)
return this->resident->get_id(this->resident);
@ -33,23 +38,25 @@ void _free__Passenger(THIS(Passenger)){
free(this);
}
Passenger *_init_Passenger(void *passenger, PASSENGER_TYPE type){
Passenger *_init_Passenger(void* passenger_data, PASSENGER_TYPE type){
Passenger * new_passenger = malloc_or_die(sizeof(Passenger));
new_passenger->resident = NULL;
new_passenger->visitor = NULL;
new_passenger->type = type;
if (type == RESIDENT)
new_passenger->resident = (Resident*) passenger;
new_passenger->resident = (Resident*) passenger_data;
if (type == VISITOR)
new_passenger->visitor = (Visitor*) passenger;
new_passenger->visitor = (Visitor*) passenger_data;
//new_passenger->compare = compare_Passenger;
LINK_ALL(Passenger, new_passenger,
get_id,
get_name,
compare,
runnable
)
return new_passenger;
}
}

View File

@ -7,6 +7,7 @@
#include "../Resident/Resident.h"
#include "../Visitor/Visitor.h"
#include <string.h>
typedef enum {RESIDENT, VISITOR} PASSENGER_TYPE;
@ -20,10 +21,11 @@ typedef struct o_Passenger {
PUBLIC char * (*get_name)(_THIS(Passenger));
PUBLIC int (*get_id)(_THIS(Passenger));
PUBLIC void * (*runnable)(void* void_this);
PUBLIC int (*compare)(void * passenger1, void * passenger2);//yeah I know, but i needed int (*) (void*, void*)
DESTRUCTOR(Passenger);
} Passenger;
Passenger *_init_Passenger(void *passenger, PASSENGER_TYPE type);
Passenger *_init_Passenger(void* passenger_data, PASSENGER_TYPE type);
#endif //LO41_PASSENGER_H