#pragma once
#include <wtf/Optional.h>
#include <wtf/Ref.h>
#include <wtf/RefCounted.h>
namespace WebCore {
class Coordinates : public RefCounted<Coordinates> {
public:
static Ref<Coordinates> create(double latitude, double longitude, bool providesAltitude, double altitude, double accuracy, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed) { return adoptRef(*new Coordinates(latitude, longitude, providesAltitude, altitude, accuracy, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed)); }
Ref<Coordinates> isolatedCopy() const
{
return Coordinates::create(m_latitude, m_longitude, m_canProvideAltitude, m_altitude, m_accuracy, m_canProvideAltitudeAccuracy, m_altitudeAccuracy, m_canProvideHeading, m_heading, m_canProvideSpeed, m_speed);
}
double latitude() const { return m_latitude; }
double longitude() const { return m_longitude; }
std::optional<double> altitude() const;
double accuracy() const { return m_accuracy; }
std::optional<double> altitudeAccuracy() const;
std::optional<double> heading() const;
std::optional<double> speed() const;
private:
Coordinates(double latitude, double longitude, bool providesAltitude, double altitude, double accuracy, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
: m_latitude(latitude)
, m_longitude(longitude)
, m_altitude(altitude)
, m_accuracy(accuracy)
, m_altitudeAccuracy(altitudeAccuracy)
, m_heading(heading)
, m_speed(speed)
, m_canProvideAltitude(providesAltitude)
, m_canProvideAltitudeAccuracy(providesAltitudeAccuracy)
, m_canProvideHeading(providesHeading)
, m_canProvideSpeed(providesSpeed)
{
}
double m_latitude;
double m_longitude;
double m_altitude;
double m_accuracy;
double m_altitudeAccuracy;
double m_heading;
double m_speed;
bool m_canProvideAltitude;
bool m_canProvideAltitudeAccuracy;
bool m_canProvideHeading;
bool m_canProvideSpeed;
};
}