mirror of
https://gitlab.com/klmp200/LO41.git
synced 2024-11-25 18:44:20 +00:00
55 lines
1.3 KiB
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;
|
||
|
}
|