#ifndef SDL_hidapihaptic_c_h_
#define SDL_hidapihaptic_c_h_
#include "SDL3/SDL_haptic.h"
#include "SDL3/SDL_joystick.h"
#include "../SDL_syshaptic.h"
#include "../../joystick/SDL_joystick_c.h"
#include "../../joystick/SDL_sysjoystick.h"
#define SDL_HAPTIC_HIDAPI_LG4FF
typedef struct SDL_HIDAPI_HapticDriver SDL_HIDAPI_HapticDriver;
typedef struct SDL_HIDAPI_HapticDevice
{
SDL_Haptic *haptic;
SDL_Joystick *joystick;
SDL_HIDAPI_HapticDriver *driver;
void *ctx;
} SDL_HIDAPI_HapticDevice;
struct SDL_HIDAPI_HapticDriver
{
bool (*JoystickSupported)(SDL_Joystick *joystick);
void *(*Open)(SDL_Joystick *joystick);
void (*Close)(SDL_HIDAPI_HapticDevice *device);
int (*NumEffects)(SDL_HIDAPI_HapticDevice *device);
int (*NumEffectsPlaying)(SDL_HIDAPI_HapticDevice *device);
Uint32 (*GetFeatures)(SDL_HIDAPI_HapticDevice *device);
int (*NumAxes)(SDL_HIDAPI_HapticDevice *device);
SDL_HapticEffectID (*CreateEffect)(SDL_HIDAPI_HapticDevice *device, const SDL_HapticEffect *data);
bool (*UpdateEffect)(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id, const SDL_HapticEffect *data);
bool (*RunEffect)(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id, Uint32 iterations);
bool (*StopEffect)(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id);
void (*DestroyEffect)(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id);
bool (*GetEffectStatus)(SDL_HIDAPI_HapticDevice *device, SDL_HapticEffectID id);
bool (*SetGain)(SDL_HIDAPI_HapticDevice *device, int gain);
bool (*SetAutocenter)(SDL_HIDAPI_HapticDevice *device, int autocenter);
bool (*Pause)(SDL_HIDAPI_HapticDevice *device);
bool (*Resume)(SDL_HIDAPI_HapticDevice *device);
bool (*StopEffects)(SDL_HIDAPI_HapticDevice *device);
};
extern SDL_HIDAPI_HapticDriver SDL_HIDAPI_HapticDriverLg4ff;
#endif