// // 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; }