18 #ifndef LOCATION_SERVICE_COM_UBUNTU_PROVIDER_SELECTION_POLICY_H_
19 #define LOCATION_SERVICE_COM_UBUNTU_PROVIDER_SELECTION_POLICY_H_
21 #include "com/ubuntu/location/provider.h"
36 const Provider::Ptr heading = Provider::Ptr{},
37 const Provider::Ptr velocity = Provider::Ptr{}) : position_updates_provider(position),
38 heading_updates_provider(heading),
39 velocity_updates_provider(velocity)
43 Provider::FeatureFlags to_feature_flags()
const
45 Provider::FeatureFlags flags;
46 flags.set(static_cast<std::size_t>(Provider::Feature::position), static_cast<bool>(position_updates_provider));
47 flags.set(static_cast<std::size_t>(Provider::Feature::heading), static_cast<bool>(heading_updates_provider));
48 flags.set(static_cast<std::size_t>(Provider::Feature::velocity), static_cast<bool>(velocity_updates_provider));
53 Provider::Ptr position_updates_provider;
54 Provider::Ptr heading_updates_provider;
55 Provider::Ptr velocity_updates_provider;
60 return lhs.position_updates_provider == rhs.position_updates_provider &&
61 lhs.heading_updates_provider == rhs.heading_updates_provider &&
62 lhs.velocity_updates_provider == rhs.velocity_updates_provider;
68 typedef std::shared_ptr<ProviderSelectionPolicy> Ptr;
72 virtual ProviderSelection determine_provider_selection_from_set_for_criteria(
const Criteria& criteria,
const std::set<Provider::Ptr>& providers) = 0;
83 #endif // LOCATION_SERVICE_COM_UBUNTU_PROVIDER_SELECTION_POLICY_H_