// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: osi_environment.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_osi_5fenvironment_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_osi_5fenvironment_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3015000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3015002 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/metadata_lite.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_osi_5fenvironment_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_osi_5fenvironment_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxiliaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[2]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_osi_5fenvironment_2eproto;
::PROTOBUF_NAMESPACE_ID::Metadata descriptor_table_osi_5fenvironment_2eproto_metadata_getter(int index);
namespace osi3 {
class EnvironmentalConditions;
struct EnvironmentalConditionsDefaultTypeInternal;
extern EnvironmentalConditionsDefaultTypeInternal _EnvironmentalConditions_default_instance_;
class EnvironmentalConditions_TimeOfDay;
struct EnvironmentalConditions_TimeOfDayDefaultTypeInternal;
extern EnvironmentalConditions_TimeOfDayDefaultTypeInternal _EnvironmentalConditions_TimeOfDay_default_instance_;
}  // namespace osi3
PROTOBUF_NAMESPACE_OPEN
template<> ::osi3::EnvironmentalConditions* Arena::CreateMaybeMessage<::osi3::EnvironmentalConditions>(Arena*);
template<> ::osi3::EnvironmentalConditions_TimeOfDay* Arena::CreateMaybeMessage<::osi3::EnvironmentalConditions_TimeOfDay>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace osi3 {

enum EnvironmentalConditions_Precipitation : int {
  EnvironmentalConditions_Precipitation_PRECIPITATION_UNKNOWN = 0,
  EnvironmentalConditions_Precipitation_PRECIPITATION_OTHER = 1,
  EnvironmentalConditions_Precipitation_PRECIPITATION_NONE = 2,
  EnvironmentalConditions_Precipitation_PRECIPITATION_VERY_LIGHT = 3,
  EnvironmentalConditions_Precipitation_PRECIPITATION_LIGHT = 4,
  EnvironmentalConditions_Precipitation_PRECIPITATION_MODERATE = 5,
  EnvironmentalConditions_Precipitation_PRECIPITATION_HEAVY = 6,
  EnvironmentalConditions_Precipitation_PRECIPITATION_VERY_HEAVY = 7,
  EnvironmentalConditions_Precipitation_PRECIPITATION_EXTREME = 8,
  EnvironmentalConditions_Precipitation_EnvironmentalConditions_Precipitation_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  EnvironmentalConditions_Precipitation_EnvironmentalConditions_Precipitation_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool EnvironmentalConditions_Precipitation_IsValid(int value);
constexpr EnvironmentalConditions_Precipitation EnvironmentalConditions_Precipitation_Precipitation_MIN = EnvironmentalConditions_Precipitation_PRECIPITATION_UNKNOWN;
constexpr EnvironmentalConditions_Precipitation EnvironmentalConditions_Precipitation_Precipitation_MAX = EnvironmentalConditions_Precipitation_PRECIPITATION_EXTREME;
constexpr int EnvironmentalConditions_Precipitation_Precipitation_ARRAYSIZE = EnvironmentalConditions_Precipitation_Precipitation_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* EnvironmentalConditions_Precipitation_descriptor();
template<typename T>
inline const std::string& EnvironmentalConditions_Precipitation_Name(T enum_t_value) {
  static_assert(::std::is_same<T, EnvironmentalConditions_Precipitation>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function EnvironmentalConditions_Precipitation_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    EnvironmentalConditions_Precipitation_descriptor(), enum_t_value);
}
inline bool EnvironmentalConditions_Precipitation_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, EnvironmentalConditions_Precipitation* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<EnvironmentalConditions_Precipitation>(
    EnvironmentalConditions_Precipitation_descriptor(), name, value);
}
enum EnvironmentalConditions_Fog : int {
  EnvironmentalConditions_Fog_FOG_UNKNOWN = 0,
  EnvironmentalConditions_Fog_FOG_OTHER = 1,
  EnvironmentalConditions_Fog_FOG_EXCELLENT_VISIBILITY = 2,
  EnvironmentalConditions_Fog_FOG_GOOD_VISIBILITY = 3,
  EnvironmentalConditions_Fog_FOG_MODERATE_VISIBILITY = 4,
  EnvironmentalConditions_Fog_FOG_POOR_VISIBILITY = 5,
  EnvironmentalConditions_Fog_FOG_MIST = 6,
  EnvironmentalConditions_Fog_FOG_LIGHT = 7,
  EnvironmentalConditions_Fog_FOG_THICK = 8,
  EnvironmentalConditions_Fog_FOG_DENSE = 9,
  EnvironmentalConditions_Fog_EnvironmentalConditions_Fog_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  EnvironmentalConditions_Fog_EnvironmentalConditions_Fog_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool EnvironmentalConditions_Fog_IsValid(int value);
constexpr EnvironmentalConditions_Fog EnvironmentalConditions_Fog_Fog_MIN = EnvironmentalConditions_Fog_FOG_UNKNOWN;
constexpr EnvironmentalConditions_Fog EnvironmentalConditions_Fog_Fog_MAX = EnvironmentalConditions_Fog_FOG_DENSE;
constexpr int EnvironmentalConditions_Fog_Fog_ARRAYSIZE = EnvironmentalConditions_Fog_Fog_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* EnvironmentalConditions_Fog_descriptor();
template<typename T>
inline const std::string& EnvironmentalConditions_Fog_Name(T enum_t_value) {
  static_assert(::std::is_same<T, EnvironmentalConditions_Fog>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function EnvironmentalConditions_Fog_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    EnvironmentalConditions_Fog_descriptor(), enum_t_value);
}
inline bool EnvironmentalConditions_Fog_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, EnvironmentalConditions_Fog* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<EnvironmentalConditions_Fog>(
    EnvironmentalConditions_Fog_descriptor(), name, value);
}
enum EnvironmentalConditions_AmbientIllumination : int {
  EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_UNKNOWN = 0,
  EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_OTHER = 1,
  EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL1 = 2,
  EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL2 = 3,
  EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL3 = 4,
  EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL4 = 5,
  EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL5 = 6,
  EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL6 = 7,
  EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL7 = 8,
  EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL8 = 9,
  EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL9 = 10,
  EnvironmentalConditions_AmbientIllumination_EnvironmentalConditions_AmbientIllumination_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::min(),
  EnvironmentalConditions_AmbientIllumination_EnvironmentalConditions_AmbientIllumination_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::PROTOBUF_NAMESPACE_ID::int32>::max()
};
bool EnvironmentalConditions_AmbientIllumination_IsValid(int value);
constexpr EnvironmentalConditions_AmbientIllumination EnvironmentalConditions_AmbientIllumination_AmbientIllumination_MIN = EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_UNKNOWN;
constexpr EnvironmentalConditions_AmbientIllumination EnvironmentalConditions_AmbientIllumination_AmbientIllumination_MAX = EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL9;
constexpr int EnvironmentalConditions_AmbientIllumination_AmbientIllumination_ARRAYSIZE = EnvironmentalConditions_AmbientIllumination_AmbientIllumination_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* EnvironmentalConditions_AmbientIllumination_descriptor();
template<typename T>
inline const std::string& EnvironmentalConditions_AmbientIllumination_Name(T enum_t_value) {
  static_assert(::std::is_same<T, EnvironmentalConditions_AmbientIllumination>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function EnvironmentalConditions_AmbientIllumination_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    EnvironmentalConditions_AmbientIllumination_descriptor(), enum_t_value);
}
inline bool EnvironmentalConditions_AmbientIllumination_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, EnvironmentalConditions_AmbientIllumination* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<EnvironmentalConditions_AmbientIllumination>(
    EnvironmentalConditions_AmbientIllumination_descriptor(), name, value);
}
// ===================================================================

class EnvironmentalConditions_TimeOfDay PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:osi3.EnvironmentalConditions.TimeOfDay) */ {
 public:
  inline EnvironmentalConditions_TimeOfDay() : EnvironmentalConditions_TimeOfDay(nullptr) {}
  virtual ~EnvironmentalConditions_TimeOfDay();
  explicit constexpr EnvironmentalConditions_TimeOfDay(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  EnvironmentalConditions_TimeOfDay(const EnvironmentalConditions_TimeOfDay& from);
  EnvironmentalConditions_TimeOfDay(EnvironmentalConditions_TimeOfDay&& from) noexcept
    : EnvironmentalConditions_TimeOfDay() {
    *this = ::std::move(from);
  }

  inline EnvironmentalConditions_TimeOfDay& operator=(const EnvironmentalConditions_TimeOfDay& from) {
    CopyFrom(from);
    return *this;
  }
  inline EnvironmentalConditions_TimeOfDay& operator=(EnvironmentalConditions_TimeOfDay&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const EnvironmentalConditions_TimeOfDay& default_instance() {
    return *internal_default_instance();
  }
  static inline const EnvironmentalConditions_TimeOfDay* internal_default_instance() {
    return reinterpret_cast<const EnvironmentalConditions_TimeOfDay*>(
               &_EnvironmentalConditions_TimeOfDay_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(EnvironmentalConditions_TimeOfDay& a, EnvironmentalConditions_TimeOfDay& b) {
    a.Swap(&b);
  }
  inline void Swap(EnvironmentalConditions_TimeOfDay* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EnvironmentalConditions_TimeOfDay* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline EnvironmentalConditions_TimeOfDay* New() const final {
    return CreateMaybeMessage<EnvironmentalConditions_TimeOfDay>(nullptr);
  }

  EnvironmentalConditions_TimeOfDay* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<EnvironmentalConditions_TimeOfDay>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const EnvironmentalConditions_TimeOfDay& from);
  void MergeFrom(const EnvironmentalConditions_TimeOfDay& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(EnvironmentalConditions_TimeOfDay* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "osi3.EnvironmentalConditions.TimeOfDay";
  }
  protected:
  explicit EnvironmentalConditions_TimeOfDay(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    return ::descriptor_table_osi_5fenvironment_2eproto_metadata_getter(kIndexInFileMessages);
  }

  public:

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kSecondsSinceMidnightFieldNumber = 1,
  };
  // uint32 seconds_since_midnight = 1;
  void clear_seconds_since_midnight();
  ::PROTOBUF_NAMESPACE_ID::uint32 seconds_since_midnight() const;
  void set_seconds_since_midnight(::PROTOBUF_NAMESPACE_ID::uint32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::uint32 _internal_seconds_since_midnight() const;
  void _internal_set_seconds_since_midnight(::PROTOBUF_NAMESPACE_ID::uint32 value);
  public:

  // @@protoc_insertion_point(class_scope:osi3.EnvironmentalConditions.TimeOfDay)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::uint32 seconds_since_midnight_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5fenvironment_2eproto;
};
// -------------------------------------------------------------------

class EnvironmentalConditions PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:osi3.EnvironmentalConditions) */ {
 public:
  inline EnvironmentalConditions() : EnvironmentalConditions(nullptr) {}
  virtual ~EnvironmentalConditions();
  explicit constexpr EnvironmentalConditions(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  EnvironmentalConditions(const EnvironmentalConditions& from);
  EnvironmentalConditions(EnvironmentalConditions&& from) noexcept
    : EnvironmentalConditions() {
    *this = ::std::move(from);
  }

  inline EnvironmentalConditions& operator=(const EnvironmentalConditions& from) {
    CopyFrom(from);
    return *this;
  }
  inline EnvironmentalConditions& operator=(EnvironmentalConditions&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const EnvironmentalConditions& default_instance() {
    return *internal_default_instance();
  }
  static inline const EnvironmentalConditions* internal_default_instance() {
    return reinterpret_cast<const EnvironmentalConditions*>(
               &_EnvironmentalConditions_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(EnvironmentalConditions& a, EnvironmentalConditions& b) {
    a.Swap(&b);
  }
  inline void Swap(EnvironmentalConditions* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(EnvironmentalConditions* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  inline EnvironmentalConditions* New() const final {
    return CreateMaybeMessage<EnvironmentalConditions>(nullptr);
  }

  EnvironmentalConditions* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<EnvironmentalConditions>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const EnvironmentalConditions& from);
  void MergeFrom(const EnvironmentalConditions& from);
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(EnvironmentalConditions* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "osi3.EnvironmentalConditions";
  }
  protected:
  explicit EnvironmentalConditions(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    return ::descriptor_table_osi_5fenvironment_2eproto_metadata_getter(kIndexInFileMessages);
  }

  public:

  // nested types ----------------------------------------------------

  typedef EnvironmentalConditions_TimeOfDay TimeOfDay;

  typedef EnvironmentalConditions_Precipitation Precipitation;
  static constexpr Precipitation PRECIPITATION_UNKNOWN =
    EnvironmentalConditions_Precipitation_PRECIPITATION_UNKNOWN;
  static constexpr Precipitation PRECIPITATION_OTHER =
    EnvironmentalConditions_Precipitation_PRECIPITATION_OTHER;
  static constexpr Precipitation PRECIPITATION_NONE =
    EnvironmentalConditions_Precipitation_PRECIPITATION_NONE;
  static constexpr Precipitation PRECIPITATION_VERY_LIGHT =
    EnvironmentalConditions_Precipitation_PRECIPITATION_VERY_LIGHT;
  static constexpr Precipitation PRECIPITATION_LIGHT =
    EnvironmentalConditions_Precipitation_PRECIPITATION_LIGHT;
  static constexpr Precipitation PRECIPITATION_MODERATE =
    EnvironmentalConditions_Precipitation_PRECIPITATION_MODERATE;
  static constexpr Precipitation PRECIPITATION_HEAVY =
    EnvironmentalConditions_Precipitation_PRECIPITATION_HEAVY;
  static constexpr Precipitation PRECIPITATION_VERY_HEAVY =
    EnvironmentalConditions_Precipitation_PRECIPITATION_VERY_HEAVY;
  static constexpr Precipitation PRECIPITATION_EXTREME =
    EnvironmentalConditions_Precipitation_PRECIPITATION_EXTREME;
  static inline bool Precipitation_IsValid(int value) {
    return EnvironmentalConditions_Precipitation_IsValid(value);
  }
  static constexpr Precipitation Precipitation_MIN =
    EnvironmentalConditions_Precipitation_Precipitation_MIN;
  static constexpr Precipitation Precipitation_MAX =
    EnvironmentalConditions_Precipitation_Precipitation_MAX;
  static constexpr int Precipitation_ARRAYSIZE =
    EnvironmentalConditions_Precipitation_Precipitation_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Precipitation_descriptor() {
    return EnvironmentalConditions_Precipitation_descriptor();
  }
  template<typename T>
  static inline const std::string& Precipitation_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Precipitation>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Precipitation_Name.");
    return EnvironmentalConditions_Precipitation_Name(enum_t_value);
  }
  static inline bool Precipitation_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      Precipitation* value) {
    return EnvironmentalConditions_Precipitation_Parse(name, value);
  }

  typedef EnvironmentalConditions_Fog Fog;
  static constexpr Fog FOG_UNKNOWN =
    EnvironmentalConditions_Fog_FOG_UNKNOWN;
  static constexpr Fog FOG_OTHER =
    EnvironmentalConditions_Fog_FOG_OTHER;
  static constexpr Fog FOG_EXCELLENT_VISIBILITY =
    EnvironmentalConditions_Fog_FOG_EXCELLENT_VISIBILITY;
  static constexpr Fog FOG_GOOD_VISIBILITY =
    EnvironmentalConditions_Fog_FOG_GOOD_VISIBILITY;
  static constexpr Fog FOG_MODERATE_VISIBILITY =
    EnvironmentalConditions_Fog_FOG_MODERATE_VISIBILITY;
  static constexpr Fog FOG_POOR_VISIBILITY =
    EnvironmentalConditions_Fog_FOG_POOR_VISIBILITY;
  static constexpr Fog FOG_MIST =
    EnvironmentalConditions_Fog_FOG_MIST;
  static constexpr Fog FOG_LIGHT =
    EnvironmentalConditions_Fog_FOG_LIGHT;
  static constexpr Fog FOG_THICK =
    EnvironmentalConditions_Fog_FOG_THICK;
  static constexpr Fog FOG_DENSE =
    EnvironmentalConditions_Fog_FOG_DENSE;
  static inline bool Fog_IsValid(int value) {
    return EnvironmentalConditions_Fog_IsValid(value);
  }
  static constexpr Fog Fog_MIN =
    EnvironmentalConditions_Fog_Fog_MIN;
  static constexpr Fog Fog_MAX =
    EnvironmentalConditions_Fog_Fog_MAX;
  static constexpr int Fog_ARRAYSIZE =
    EnvironmentalConditions_Fog_Fog_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  Fog_descriptor() {
    return EnvironmentalConditions_Fog_descriptor();
  }
  template<typename T>
  static inline const std::string& Fog_Name(T enum_t_value) {
    static_assert(::std::is_same<T, Fog>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function Fog_Name.");
    return EnvironmentalConditions_Fog_Name(enum_t_value);
  }
  static inline bool Fog_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      Fog* value) {
    return EnvironmentalConditions_Fog_Parse(name, value);
  }

  typedef EnvironmentalConditions_AmbientIllumination AmbientIllumination;
  static constexpr AmbientIllumination AMBIENT_ILLUMINATION_UNKNOWN =
    EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_UNKNOWN;
  static constexpr AmbientIllumination AMBIENT_ILLUMINATION_OTHER =
    EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_OTHER;
  static constexpr AmbientIllumination AMBIENT_ILLUMINATION_LEVEL1 =
    EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL1;
  static constexpr AmbientIllumination AMBIENT_ILLUMINATION_LEVEL2 =
    EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL2;
  static constexpr AmbientIllumination AMBIENT_ILLUMINATION_LEVEL3 =
    EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL3;
  static constexpr AmbientIllumination AMBIENT_ILLUMINATION_LEVEL4 =
    EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL4;
  static constexpr AmbientIllumination AMBIENT_ILLUMINATION_LEVEL5 =
    EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL5;
  static constexpr AmbientIllumination AMBIENT_ILLUMINATION_LEVEL6 =
    EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL6;
  static constexpr AmbientIllumination AMBIENT_ILLUMINATION_LEVEL7 =
    EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL7;
  static constexpr AmbientIllumination AMBIENT_ILLUMINATION_LEVEL8 =
    EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL8;
  static constexpr AmbientIllumination AMBIENT_ILLUMINATION_LEVEL9 =
    EnvironmentalConditions_AmbientIllumination_AMBIENT_ILLUMINATION_LEVEL9;
  static inline bool AmbientIllumination_IsValid(int value) {
    return EnvironmentalConditions_AmbientIllumination_IsValid(value);
  }
  static constexpr AmbientIllumination AmbientIllumination_MIN =
    EnvironmentalConditions_AmbientIllumination_AmbientIllumination_MIN;
  static constexpr AmbientIllumination AmbientIllumination_MAX =
    EnvironmentalConditions_AmbientIllumination_AmbientIllumination_MAX;
  static constexpr int AmbientIllumination_ARRAYSIZE =
    EnvironmentalConditions_AmbientIllumination_AmbientIllumination_ARRAYSIZE;
  static inline const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor*
  AmbientIllumination_descriptor() {
    return EnvironmentalConditions_AmbientIllumination_descriptor();
  }
  template<typename T>
  static inline const std::string& AmbientIllumination_Name(T enum_t_value) {
    static_assert(::std::is_same<T, AmbientIllumination>::value ||
      ::std::is_integral<T>::value,
      "Incorrect type passed to function AmbientIllumination_Name.");
    return EnvironmentalConditions_AmbientIllumination_Name(enum_t_value);
  }
  static inline bool AmbientIllumination_Parse(::PROTOBUF_NAMESPACE_ID::ConstStringParam name,
      AmbientIllumination* value) {
    return EnvironmentalConditions_AmbientIllumination_Parse(name, value);
  }

  // accessors -------------------------------------------------------

  enum : int {
    kTimeOfDayFieldNumber = 2,
    kAtmosphericPressureFieldNumber = 3,
    kAmbientIlluminationFieldNumber = 1,
    kPrecipitationFieldNumber = 6,
    kTemperatureFieldNumber = 4,
    kRelativeHumidityFieldNumber = 5,
    kUnixTimestampFieldNumber = 8,
    kFogFieldNumber = 7,
  };
  // .osi3.EnvironmentalConditions.TimeOfDay time_of_day = 2;
  bool has_time_of_day() const;
  private:
  bool _internal_has_time_of_day() const;
  public:
  void clear_time_of_day();
  const ::osi3::EnvironmentalConditions_TimeOfDay& time_of_day() const;
  ::osi3::EnvironmentalConditions_TimeOfDay* release_time_of_day();
  ::osi3::EnvironmentalConditions_TimeOfDay* mutable_time_of_day();
  void set_allocated_time_of_day(::osi3::EnvironmentalConditions_TimeOfDay* time_of_day);
  private:
  const ::osi3::EnvironmentalConditions_TimeOfDay& _internal_time_of_day() const;
  ::osi3::EnvironmentalConditions_TimeOfDay* _internal_mutable_time_of_day();
  public:
  void unsafe_arena_set_allocated_time_of_day(
      ::osi3::EnvironmentalConditions_TimeOfDay* time_of_day);
  ::osi3::EnvironmentalConditions_TimeOfDay* unsafe_arena_release_time_of_day();

  // double atmospheric_pressure = 3;
  void clear_atmospheric_pressure();
  double atmospheric_pressure() const;
  void set_atmospheric_pressure(double value);
  private:
  double _internal_atmospheric_pressure() const;
  void _internal_set_atmospheric_pressure(double value);
  public:

  // .osi3.EnvironmentalConditions.AmbientIllumination ambient_illumination = 1;
  void clear_ambient_illumination();
  ::osi3::EnvironmentalConditions_AmbientIllumination ambient_illumination() const;
  void set_ambient_illumination(::osi3::EnvironmentalConditions_AmbientIllumination value);
  private:
  ::osi3::EnvironmentalConditions_AmbientIllumination _internal_ambient_illumination() const;
  void _internal_set_ambient_illumination(::osi3::EnvironmentalConditions_AmbientIllumination value);
  public:

  // .osi3.EnvironmentalConditions.Precipitation precipitation = 6;
  void clear_precipitation();
  ::osi3::EnvironmentalConditions_Precipitation precipitation() const;
  void set_precipitation(::osi3::EnvironmentalConditions_Precipitation value);
  private:
  ::osi3::EnvironmentalConditions_Precipitation _internal_precipitation() const;
  void _internal_set_precipitation(::osi3::EnvironmentalConditions_Precipitation value);
  public:

  // double temperature = 4;
  void clear_temperature();
  double temperature() const;
  void set_temperature(double value);
  private:
  double _internal_temperature() const;
  void _internal_set_temperature(double value);
  public:

  // double relative_humidity = 5;
  void clear_relative_humidity();
  double relative_humidity() const;
  void set_relative_humidity(double value);
  private:
  double _internal_relative_humidity() const;
  void _internal_set_relative_humidity(double value);
  public:

  // int64 unix_timestamp = 8;
  void clear_unix_timestamp();
  ::PROTOBUF_NAMESPACE_ID::int64 unix_timestamp() const;
  void set_unix_timestamp(::PROTOBUF_NAMESPACE_ID::int64 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int64 _internal_unix_timestamp() const;
  void _internal_set_unix_timestamp(::PROTOBUF_NAMESPACE_ID::int64 value);
  public:

  // .osi3.EnvironmentalConditions.Fog fog = 7;
  void clear_fog();
  ::osi3::EnvironmentalConditions_Fog fog() const;
  void set_fog(::osi3::EnvironmentalConditions_Fog value);
  private:
  ::osi3::EnvironmentalConditions_Fog _internal_fog() const;
  void _internal_set_fog(::osi3::EnvironmentalConditions_Fog value);
  public:

  // @@protoc_insertion_point(class_scope:osi3.EnvironmentalConditions)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::osi3::EnvironmentalConditions_TimeOfDay* time_of_day_;
  double atmospheric_pressure_;
  int ambient_illumination_;
  int precipitation_;
  double temperature_;
  double relative_humidity_;
  ::PROTOBUF_NAMESPACE_ID::int64 unix_timestamp_;
  int fog_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_osi_5fenvironment_2eproto;
};
// ===================================================================


// ===================================================================

#ifdef __GNUC__
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// EnvironmentalConditions_TimeOfDay

// uint32 seconds_since_midnight = 1;
inline void EnvironmentalConditions_TimeOfDay::clear_seconds_since_midnight() {
  seconds_since_midnight_ = 0u;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 EnvironmentalConditions_TimeOfDay::_internal_seconds_since_midnight() const {
  return seconds_since_midnight_;
}
inline ::PROTOBUF_NAMESPACE_ID::uint32 EnvironmentalConditions_TimeOfDay::seconds_since_midnight() const {
  // @@protoc_insertion_point(field_get:osi3.EnvironmentalConditions.TimeOfDay.seconds_since_midnight)
  return _internal_seconds_since_midnight();
}
inline void EnvironmentalConditions_TimeOfDay::_internal_set_seconds_since_midnight(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  
  seconds_since_midnight_ = value;
}
inline void EnvironmentalConditions_TimeOfDay::set_seconds_since_midnight(::PROTOBUF_NAMESPACE_ID::uint32 value) {
  _internal_set_seconds_since_midnight(value);
  // @@protoc_insertion_point(field_set:osi3.EnvironmentalConditions.TimeOfDay.seconds_since_midnight)
}

// -------------------------------------------------------------------

// EnvironmentalConditions

// .osi3.EnvironmentalConditions.AmbientIllumination ambient_illumination = 1;
inline void EnvironmentalConditions::clear_ambient_illumination() {
  ambient_illumination_ = 0;
}
inline ::osi3::EnvironmentalConditions_AmbientIllumination EnvironmentalConditions::_internal_ambient_illumination() const {
  return static_cast< ::osi3::EnvironmentalConditions_AmbientIllumination >(ambient_illumination_);
}
inline ::osi3::EnvironmentalConditions_AmbientIllumination EnvironmentalConditions::ambient_illumination() const {
  // @@protoc_insertion_point(field_get:osi3.EnvironmentalConditions.ambient_illumination)
  return _internal_ambient_illumination();
}
inline void EnvironmentalConditions::_internal_set_ambient_illumination(::osi3::EnvironmentalConditions_AmbientIllumination value) {
  
  ambient_illumination_ = value;
}
inline void EnvironmentalConditions::set_ambient_illumination(::osi3::EnvironmentalConditions_AmbientIllumination value) {
  _internal_set_ambient_illumination(value);
  // @@protoc_insertion_point(field_set:osi3.EnvironmentalConditions.ambient_illumination)
}

// .osi3.EnvironmentalConditions.TimeOfDay time_of_day = 2;
inline bool EnvironmentalConditions::_internal_has_time_of_day() const {
  return this != internal_default_instance() && time_of_day_ != nullptr;
}
inline bool EnvironmentalConditions::has_time_of_day() const {
  return _internal_has_time_of_day();
}
inline void EnvironmentalConditions::clear_time_of_day() {
  if (GetArena() == nullptr && time_of_day_ != nullptr) {
    delete time_of_day_;
  }
  time_of_day_ = nullptr;
}
inline const ::osi3::EnvironmentalConditions_TimeOfDay& EnvironmentalConditions::_internal_time_of_day() const {
  const ::osi3::EnvironmentalConditions_TimeOfDay* p = time_of_day_;
  return p != nullptr ? *p : reinterpret_cast<const ::osi3::EnvironmentalConditions_TimeOfDay&>(
      ::osi3::_EnvironmentalConditions_TimeOfDay_default_instance_);
}
inline const ::osi3::EnvironmentalConditions_TimeOfDay& EnvironmentalConditions::time_of_day() const {
  // @@protoc_insertion_point(field_get:osi3.EnvironmentalConditions.time_of_day)
  return _internal_time_of_day();
}
inline void EnvironmentalConditions::unsafe_arena_set_allocated_time_of_day(
    ::osi3::EnvironmentalConditions_TimeOfDay* time_of_day) {
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(time_of_day_);
  }
  time_of_day_ = time_of_day;
  if (time_of_day) {
    
  } else {
    
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:osi3.EnvironmentalConditions.time_of_day)
}
inline ::osi3::EnvironmentalConditions_TimeOfDay* EnvironmentalConditions::release_time_of_day() {
  
  ::osi3::EnvironmentalConditions_TimeOfDay* temp = time_of_day_;
  time_of_day_ = nullptr;
  if (GetArena() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
  return temp;
}
inline ::osi3::EnvironmentalConditions_TimeOfDay* EnvironmentalConditions::unsafe_arena_release_time_of_day() {
  // @@protoc_insertion_point(field_release:osi3.EnvironmentalConditions.time_of_day)
  
  ::osi3::EnvironmentalConditions_TimeOfDay* temp = time_of_day_;
  time_of_day_ = nullptr;
  return temp;
}
inline ::osi3::EnvironmentalConditions_TimeOfDay* EnvironmentalConditions::_internal_mutable_time_of_day() {
  
  if (time_of_day_ == nullptr) {
    auto* p = CreateMaybeMessage<::osi3::EnvironmentalConditions_TimeOfDay>(GetArena());
    time_of_day_ = p;
  }
  return time_of_day_;
}
inline ::osi3::EnvironmentalConditions_TimeOfDay* EnvironmentalConditions::mutable_time_of_day() {
  // @@protoc_insertion_point(field_mutable:osi3.EnvironmentalConditions.time_of_day)
  return _internal_mutable_time_of_day();
}
inline void EnvironmentalConditions::set_allocated_time_of_day(::osi3::EnvironmentalConditions_TimeOfDay* time_of_day) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArena();
  if (message_arena == nullptr) {
    delete time_of_day_;
  }
  if (time_of_day) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
      ::PROTOBUF_NAMESPACE_ID::Arena::GetArena(time_of_day);
    if (message_arena != submessage_arena) {
      time_of_day = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, time_of_day, submessage_arena);
    }
    
  } else {
    
  }
  time_of_day_ = time_of_day;
  // @@protoc_insertion_point(field_set_allocated:osi3.EnvironmentalConditions.time_of_day)
}

// int64 unix_timestamp = 8;
inline void EnvironmentalConditions::clear_unix_timestamp() {
  unix_timestamp_ = PROTOBUF_LONGLONG(0);
}
inline ::PROTOBUF_NAMESPACE_ID::int64 EnvironmentalConditions::_internal_unix_timestamp() const {
  return unix_timestamp_;
}
inline ::PROTOBUF_NAMESPACE_ID::int64 EnvironmentalConditions::unix_timestamp() const {
  // @@protoc_insertion_point(field_get:osi3.EnvironmentalConditions.unix_timestamp)
  return _internal_unix_timestamp();
}
inline void EnvironmentalConditions::_internal_set_unix_timestamp(::PROTOBUF_NAMESPACE_ID::int64 value) {
  
  unix_timestamp_ = value;
}
inline void EnvironmentalConditions::set_unix_timestamp(::PROTOBUF_NAMESPACE_ID::int64 value) {
  _internal_set_unix_timestamp(value);
  // @@protoc_insertion_point(field_set:osi3.EnvironmentalConditions.unix_timestamp)
}

// double atmospheric_pressure = 3;
inline void EnvironmentalConditions::clear_atmospheric_pressure() {
  atmospheric_pressure_ = 0;
}
inline double EnvironmentalConditions::_internal_atmospheric_pressure() const {
  return atmospheric_pressure_;
}
inline double EnvironmentalConditions::atmospheric_pressure() const {
  // @@protoc_insertion_point(field_get:osi3.EnvironmentalConditions.atmospheric_pressure)
  return _internal_atmospheric_pressure();
}
inline void EnvironmentalConditions::_internal_set_atmospheric_pressure(double value) {
  
  atmospheric_pressure_ = value;
}
inline void EnvironmentalConditions::set_atmospheric_pressure(double value) {
  _internal_set_atmospheric_pressure(value);
  // @@protoc_insertion_point(field_set:osi3.EnvironmentalConditions.atmospheric_pressure)
}

// double temperature = 4;
inline void EnvironmentalConditions::clear_temperature() {
  temperature_ = 0;
}
inline double EnvironmentalConditions::_internal_temperature() const {
  return temperature_;
}
inline double EnvironmentalConditions::temperature() const {
  // @@protoc_insertion_point(field_get:osi3.EnvironmentalConditions.temperature)
  return _internal_temperature();
}
inline void EnvironmentalConditions::_internal_set_temperature(double value) {
  
  temperature_ = value;
}
inline void EnvironmentalConditions::set_temperature(double value) {
  _internal_set_temperature(value);
  // @@protoc_insertion_point(field_set:osi3.EnvironmentalConditions.temperature)
}

// double relative_humidity = 5;
inline void EnvironmentalConditions::clear_relative_humidity() {
  relative_humidity_ = 0;
}
inline double EnvironmentalConditions::_internal_relative_humidity() const {
  return relative_humidity_;
}
inline double EnvironmentalConditions::relative_humidity() const {
  // @@protoc_insertion_point(field_get:osi3.EnvironmentalConditions.relative_humidity)
  return _internal_relative_humidity();
}
inline void EnvironmentalConditions::_internal_set_relative_humidity(double value) {
  
  relative_humidity_ = value;
}
inline void EnvironmentalConditions::set_relative_humidity(double value) {
  _internal_set_relative_humidity(value);
  // @@protoc_insertion_point(field_set:osi3.EnvironmentalConditions.relative_humidity)
}

// .osi3.EnvironmentalConditions.Precipitation precipitation = 6;
inline void EnvironmentalConditions::clear_precipitation() {
  precipitation_ = 0;
}
inline ::osi3::EnvironmentalConditions_Precipitation EnvironmentalConditions::_internal_precipitation() const {
  return static_cast< ::osi3::EnvironmentalConditions_Precipitation >(precipitation_);
}
inline ::osi3::EnvironmentalConditions_Precipitation EnvironmentalConditions::precipitation() const {
  // @@protoc_insertion_point(field_get:osi3.EnvironmentalConditions.precipitation)
  return _internal_precipitation();
}
inline void EnvironmentalConditions::_internal_set_precipitation(::osi3::EnvironmentalConditions_Precipitation value) {
  
  precipitation_ = value;
}
inline void EnvironmentalConditions::set_precipitation(::osi3::EnvironmentalConditions_Precipitation value) {
  _internal_set_precipitation(value);
  // @@protoc_insertion_point(field_set:osi3.EnvironmentalConditions.precipitation)
}

// .osi3.EnvironmentalConditions.Fog fog = 7;
inline void EnvironmentalConditions::clear_fog() {
  fog_ = 0;
}
inline ::osi3::EnvironmentalConditions_Fog EnvironmentalConditions::_internal_fog() const {
  return static_cast< ::osi3::EnvironmentalConditions_Fog >(fog_);
}
inline ::osi3::EnvironmentalConditions_Fog EnvironmentalConditions::fog() const {
  // @@protoc_insertion_point(field_get:osi3.EnvironmentalConditions.fog)
  return _internal_fog();
}
inline void EnvironmentalConditions::_internal_set_fog(::osi3::EnvironmentalConditions_Fog value) {
  
  fog_ = value;
}
inline void EnvironmentalConditions::set_fog(::osi3::EnvironmentalConditions_Fog value) {
  _internal_set_fog(value);
  // @@protoc_insertion_point(field_set:osi3.EnvironmentalConditions.fog)
}

#ifdef __GNUC__
  #pragma GCC diagnostic pop
#endif  // __GNUC__
// -------------------------------------------------------------------


// @@protoc_insertion_point(namespace_scope)

}  // namespace osi3

PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::osi3::EnvironmentalConditions_Precipitation> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::EnvironmentalConditions_Precipitation>() {
  return ::osi3::EnvironmentalConditions_Precipitation_descriptor();
}
template <> struct is_proto_enum< ::osi3::EnvironmentalConditions_Fog> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::EnvironmentalConditions_Fog>() {
  return ::osi3::EnvironmentalConditions_Fog_descriptor();
}
template <> struct is_proto_enum< ::osi3::EnvironmentalConditions_AmbientIllumination> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::osi3::EnvironmentalConditions_AmbientIllumination>() {
  return ::osi3::EnvironmentalConditions_AmbientIllumination_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_osi_5fenvironment_2eproto
