chromium/device/gamepad/public/cpp/gamepad.h

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef DEVICE_GAMEPAD_PUBLIC_CPP_GAMEPAD_H_
#define DEVICE_GAMEPAD_PUBLIC_CPP_GAMEPAD_H_

#include <stddef.h>

#include <algorithm>
#include <cstdint>
#include <limits>
#include <string>

#include "base/component_export.h"

namespace device {

class GamepadButton {};

enum class GamepadHapticActuatorType {};

enum class GamepadHapticEffectType {};

enum class GamepadHapticsResult {};

struct GamepadTouch {};

class GamepadHapticActuator {};

class GamepadEffectParameters {};

class GamepadVector {};

class GamepadQuaternion {};

class GamepadPose {};

enum class GamepadMapping {};

enum class GamepadHand {};

// This structure is intentionally trivially copyable so that it can be shared
// memory between hardware polling threads and the rest of the browser. See
// also gamepads.h.
//
// TODO(crbug.com/355003174): It's a template to avoid the clang plugin that
// prevents inline ctors, as we need the class to be trivially copyable for use
// in shared memory.
template <class T>
class GamepadImpl {};

Gamepad;

static_assert;

}  // namespace device

#endif  // DEVICE_GAMEPAD_PUBLIC_CPP_GAMEPAD_H_