/
plato
/
RaceProject
Обзор
Документация
Войти
/
plato
/
RaceProject
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
lib/include/RaceSimulatorAPI.h
64 строки
2 KB
ivaskr
fix: cmake fixed for win building
10 дек 2025, 17:08
10 дек 2025, 17:08
e4573e8
Код
Авторство
О чём код?
#ifndef RACESIMULATORAPI_H #define RACESIMULATORAPI_H #ifdef _WIN32 #define RACESIMULATOR_API __declspec(dllexport) #else #define RACESIMULATOR_API __attribute__((visibility("default"))) #endif enum RaceType { GROUND_RACE, AIR_RACE, MIXED_RACE }; // Базовый интерфейс транспортного средства class IVehicle { protected: double speed; const char* name; mutable char* nameBuffer; public: IVehicle(double s, const char* n) : speed(s), name(n) {} virtual ~IVehicle() {} virtual double calculateTime(double distance) const = 0; virtual const char* getType() const = 0; virtual const char* getName() const = 0; virtual double getSpeed() const = 0; }; class IRace { public: enum Type { GROUND, AIR, MIXED }; virtual ~IRace() = default; virtual bool registerVehicle(IVehicle* vehicle) = 0; virtual IVehicle* getVehicle(int index) const = 0; virtual int getVehicleCount() const = 0; virtual Type getRaceType() const = 0; virtual double getDistance() const = 0; virtual void getResults(double* times, const char** names, int size) const = 0; static const char* typeToString(Type type); }; extern "C" { RACESIMULATOR_API IVehicle* createCamel(); RACESIMULATOR_API IVehicle* createFastCamel(); RACESIMULATOR_API IVehicle* createCentaur(); RACESIMULATOR_API IVehicle* createAllTerrainBoots(); RACESIMULATOR_API IVehicle* createMagicCarpet(); RACESIMULATOR_API IVehicle* createEagle(); RACESIMULATOR_API IVehicle* createBroom(); RACESIMULATOR_API IRace* createRace(IRace::Type type, double distance); RACESIMULATOR_API void deleteVehicle(IVehicle* vehicle); RACESIMULATOR_API void deleteRace(IRace* race); } #endif // RACESIMULATORAPI_H