// Autogenerated by the ProtoZero compiler plugin. DO NOT EDIT.

#ifndef PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_ANDROID_PIXEL_MODEM_CONFIG_PROTO_H_
#define PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_ANDROID_PIXEL_MODEM_CONFIG_PROTO_H_

#include <stddef.h>
#include <stdint.h>

#include "perfetto/protozero/field_writer.h"
#include "perfetto/protozero/message.h"
#include "perfetto/protozero/packed_repeated_fields.h"
#include "perfetto/protozero/proto_decoder.h"
#include "perfetto/protozero/proto_utils.h"

namespace perfetto {
namespace protos {
namespace pbzero {
namespace perfetto_pbzero_enum_PixelModemConfig {
enum EventGroup : int32_t;
}  // namespace perfetto_pbzero_enum_PixelModemConfig
using PixelModemConfig_EventGroup = perfetto_pbzero_enum_PixelModemConfig::EventGroup;
} // Namespace pbzero.
} // Namespace protos.
} // Namespace perfetto.

namespace perfetto {
namespace protos {
namespace pbzero {

namespace perfetto_pbzero_enum_PixelModemConfig {
enum EventGroup : int32_t {
  EVENT_GROUP_UNKNOWN = 0,
  EVENT_GROUP_LOW_BANDWIDTH = 1,
  EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH = 2,
};
} // namespace perfetto_pbzero_enum_PixelModemConfig
using PixelModemConfig_EventGroup = perfetto_pbzero_enum_PixelModemConfig::EventGroup;


constexpr PixelModemConfig_EventGroup PixelModemConfig_EventGroup_MIN = PixelModemConfig_EventGroup::EVENT_GROUP_UNKNOWN;
constexpr PixelModemConfig_EventGroup PixelModemConfig_EventGroup_MAX = PixelModemConfig_EventGroup::EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH;


PERFETTO_PROTOZERO_CONSTEXPR14_OR_INLINE
const char* PixelModemConfig_EventGroup_Name(::perfetto::protos::pbzero::PixelModemConfig_EventGroup value) {
  switch (value) {
  case ::perfetto::protos::pbzero::PixelModemConfig_EventGroup::EVENT_GROUP_UNKNOWN:
    return "EVENT_GROUP_UNKNOWN";

  case ::perfetto::protos::pbzero::PixelModemConfig_EventGroup::EVENT_GROUP_LOW_BANDWIDTH:
    return "EVENT_GROUP_LOW_BANDWIDTH";

  case ::perfetto::protos::pbzero::PixelModemConfig_EventGroup::EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH:
    return "EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH";
  }
  return "PBZERO_UNKNOWN_ENUM_VALUE";
}

class PixelModemConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/3, /*HAS_NONPACKED_REPEATED_FIELDS=*/true> {
 public:
  PixelModemConfig_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
  explicit PixelModemConfig_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
  explicit PixelModemConfig_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
  bool has_event_group() const { return at<1>().valid(); }
  int32_t event_group() const { return at<1>().as_int32(); }
  bool has_pigweed_hash_allow_list() const { return at<2>().valid(); }
  ::protozero::RepeatedFieldIterator<int64_t> pigweed_hash_allow_list() const { return GetRepeated<int64_t>(2); }
  bool has_pigweed_hash_deny_list() const { return at<3>().valid(); }
  ::protozero::RepeatedFieldIterator<int64_t> pigweed_hash_deny_list() const { return GetRepeated<int64_t>(3); }
};

class PixelModemConfig : public ::protozero::Message {
 public:
  using Decoder = PixelModemConfig_Decoder;
  enum : int32_t {
    kEventGroupFieldNumber = 1,
    kPigweedHashAllowListFieldNumber = 2,
    kPigweedHashDenyListFieldNumber = 3,
  };
  static constexpr const char* GetName() { return ".perfetto.protos.PixelModemConfig"; }


  using EventGroup = ::perfetto::protos::pbzero::PixelModemConfig_EventGroup;
  static inline const char* EventGroup_Name(EventGroup value) {
    return ::perfetto::protos::pbzero::PixelModemConfig_EventGroup_Name(value);
  }
  static inline const EventGroup EVENT_GROUP_UNKNOWN = EventGroup::EVENT_GROUP_UNKNOWN;
  static inline const EventGroup EVENT_GROUP_LOW_BANDWIDTH = EventGroup::EVENT_GROUP_LOW_BANDWIDTH;
  static inline const EventGroup EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH = EventGroup::EVENT_GROUP_HIGH_AND_LOW_BANDWIDTH;

  using FieldMetadata_EventGroup =
    ::protozero::proto_utils::FieldMetadata<
      1,
      ::protozero::proto_utils::RepetitionType::kNotRepeated,
      ::protozero::proto_utils::ProtoSchemaType::kEnum,
      PixelModemConfig_EventGroup,
      PixelModemConfig>;

  static constexpr FieldMetadata_EventGroup kEventGroup{};
  void set_event_group(PixelModemConfig_EventGroup value) {
    static constexpr uint32_t field_id = FieldMetadata_EventGroup::kFieldId;
    // Call the appropriate protozero::Message::Append(field_id, ...)
    // method based on the type of the field.
    ::protozero::internal::FieldWriter<
      ::protozero::proto_utils::ProtoSchemaType::kEnum>
        ::Append(*this, field_id, value);
  }

  using FieldMetadata_PigweedHashAllowList =
    ::protozero::proto_utils::FieldMetadata<
      2,
      ::protozero::proto_utils::RepetitionType::kRepeatedNotPacked,
      ::protozero::proto_utils::ProtoSchemaType::kInt64,
      int64_t,
      PixelModemConfig>;

  static constexpr FieldMetadata_PigweedHashAllowList kPigweedHashAllowList{};
  void add_pigweed_hash_allow_list(int64_t value) {
    static constexpr uint32_t field_id = FieldMetadata_PigweedHashAllowList::kFieldId;
    // Call the appropriate protozero::Message::Append(field_id, ...)
    // method based on the type of the field.
    ::protozero::internal::FieldWriter<
      ::protozero::proto_utils::ProtoSchemaType::kInt64>
        ::Append(*this, field_id, value);
  }

  using FieldMetadata_PigweedHashDenyList =
    ::protozero::proto_utils::FieldMetadata<
      3,
      ::protozero::proto_utils::RepetitionType::kRepeatedNotPacked,
      ::protozero::proto_utils::ProtoSchemaType::kInt64,
      int64_t,
      PixelModemConfig>;

  static constexpr FieldMetadata_PigweedHashDenyList kPigweedHashDenyList{};
  void add_pigweed_hash_deny_list(int64_t value) {
    static constexpr uint32_t field_id = FieldMetadata_PigweedHashDenyList::kFieldId;
    // Call the appropriate protozero::Message::Append(field_id, ...)
    // method based on the type of the field.
    ::protozero::internal::FieldWriter<
      ::protozero::proto_utils::ProtoSchemaType::kInt64>
        ::Append(*this, field_id, value);
  }
};

} // Namespace.
} // Namespace.
} // Namespace.
#endif  // Include guard.
