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:
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
Reference in New Issue
Block a user