LO41/Passenger/Passenger.c

55 lines
1.3 KiB
C

//
// Created by Antoine Bartuccio on 20/06/2018.
//
#include "Passenger.h"
int get_id_Passenger(THIS(Passenger)){
if (this->type == RESIDENT)
return this->resident->get_id(this->resident);
if (this->type == VISITOR)
return this->visitor->get_id(this->visitor);
return -1;
}
char *get_name_Passenger(THIS(Passenger)){
if (this->type == RESIDENT)
return this->resident->get_name(this->resident);
if (this->type == VISITOR)
return this->visitor->get_name(this->visitor);
return NULL;
}
void *runnable_Passenger(void * void_this){
Passenger *this = (Passenger*) void_this;
if (this->type == RESIDENT)
this->resident->runnable((void*)this->resident);
if (this->type == VISITOR)
this->visitor->runnable((void*)this->visitor);
return NULL;
}
void _free__Passenger(THIS(Passenger)){
free(this);
}
Passenger *_init_Passenger(void *passenger, 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;
if (type == VISITOR)
new_passenger->visitor = (Visitor*) passenger;
LINK_ALL(Passenger, new_passenger,
get_id,
get_name,
runnable
)
return new_passenger;
}