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

#ifndef PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_ANDROID_WINDOWMANAGER_CONFIG_PROTO_H_
#define PERFETTO_PROTOS_PROTOS_PERFETTO_CONFIG_ANDROID_WINDOWMANAGER_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_WindowManagerConfig {
enum LogFrequency : int32_t;
}  // namespace perfetto_pbzero_enum_WindowManagerConfig
using WindowManagerConfig_LogFrequency = perfetto_pbzero_enum_WindowManagerConfig::LogFrequency;
namespace perfetto_pbzero_enum_WindowManagerConfig {
enum LogLevel : int32_t;
}  // namespace perfetto_pbzero_enum_WindowManagerConfig
using WindowManagerConfig_LogLevel = perfetto_pbzero_enum_WindowManagerConfig::LogLevel;
} // Namespace pbzero.
} // Namespace protos.
} // Namespace perfetto.

namespace perfetto {
namespace protos {
namespace pbzero {

namespace perfetto_pbzero_enum_WindowManagerConfig {
enum LogFrequency : int32_t {
  LOG_FREQUENCY_UNSPECIFIED = 0,
  LOG_FREQUENCY_FRAME = 1,
  LOG_FREQUENCY_TRANSACTION = 2,
  LOG_FREQUENCY_SINGLE_DUMP = 3,
};
} // namespace perfetto_pbzero_enum_WindowManagerConfig
using WindowManagerConfig_LogFrequency = perfetto_pbzero_enum_WindowManagerConfig::LogFrequency;


constexpr WindowManagerConfig_LogFrequency WindowManagerConfig_LogFrequency_MIN = WindowManagerConfig_LogFrequency::LOG_FREQUENCY_UNSPECIFIED;
constexpr WindowManagerConfig_LogFrequency WindowManagerConfig_LogFrequency_MAX = WindowManagerConfig_LogFrequency::LOG_FREQUENCY_SINGLE_DUMP;


PERFETTO_PROTOZERO_CONSTEXPR14_OR_INLINE
const char* WindowManagerConfig_LogFrequency_Name(::perfetto::protos::pbzero::WindowManagerConfig_LogFrequency value) {
  switch (value) {
  case ::perfetto::protos::pbzero::WindowManagerConfig_LogFrequency::LOG_FREQUENCY_UNSPECIFIED:
    return "LOG_FREQUENCY_UNSPECIFIED";

  case ::perfetto::protos::pbzero::WindowManagerConfig_LogFrequency::LOG_FREQUENCY_FRAME:
    return "LOG_FREQUENCY_FRAME";

  case ::perfetto::protos::pbzero::WindowManagerConfig_LogFrequency::LOG_FREQUENCY_TRANSACTION:
    return "LOG_FREQUENCY_TRANSACTION";

  case ::perfetto::protos::pbzero::WindowManagerConfig_LogFrequency::LOG_FREQUENCY_SINGLE_DUMP:
    return "LOG_FREQUENCY_SINGLE_DUMP";
  }
  return "PBZERO_UNKNOWN_ENUM_VALUE";
}

namespace perfetto_pbzero_enum_WindowManagerConfig {
enum LogLevel : int32_t {
  LOG_LEVEL_UNSPECIFIED = 0,
  LOG_LEVEL_VERBOSE = 1,
  LOG_LEVEL_DEBUG = 2,
  LOG_LEVEL_CRITICAL = 3,
};
} // namespace perfetto_pbzero_enum_WindowManagerConfig
using WindowManagerConfig_LogLevel = perfetto_pbzero_enum_WindowManagerConfig::LogLevel;


constexpr WindowManagerConfig_LogLevel WindowManagerConfig_LogLevel_MIN = WindowManagerConfig_LogLevel::LOG_LEVEL_UNSPECIFIED;
constexpr WindowManagerConfig_LogLevel WindowManagerConfig_LogLevel_MAX = WindowManagerConfig_LogLevel::LOG_LEVEL_CRITICAL;


PERFETTO_PROTOZERO_CONSTEXPR14_OR_INLINE
const char* WindowManagerConfig_LogLevel_Name(::perfetto::protos::pbzero::WindowManagerConfig_LogLevel value) {
  switch (value) {
  case ::perfetto::protos::pbzero::WindowManagerConfig_LogLevel::LOG_LEVEL_UNSPECIFIED:
    return "LOG_LEVEL_UNSPECIFIED";

  case ::perfetto::protos::pbzero::WindowManagerConfig_LogLevel::LOG_LEVEL_VERBOSE:
    return "LOG_LEVEL_VERBOSE";

  case ::perfetto::protos::pbzero::WindowManagerConfig_LogLevel::LOG_LEVEL_DEBUG:
    return "LOG_LEVEL_DEBUG";

  case ::perfetto::protos::pbzero::WindowManagerConfig_LogLevel::LOG_LEVEL_CRITICAL:
    return "LOG_LEVEL_CRITICAL";
  }
  return "PBZERO_UNKNOWN_ENUM_VALUE";
}

class WindowManagerConfig_Decoder : public ::protozero::TypedProtoDecoder</*MAX_FIELD_ID=*/2, /*HAS_NONPACKED_REPEATED_FIELDS=*/false> {
 public:
  WindowManagerConfig_Decoder(const uint8_t* data, size_t len) : TypedProtoDecoder(data, len) {}
  explicit WindowManagerConfig_Decoder(const std::string& raw) : TypedProtoDecoder(reinterpret_cast<const uint8_t*>(raw.data()), raw.size()) {}
  explicit WindowManagerConfig_Decoder(const ::protozero::ConstBytes& raw) : TypedProtoDecoder(raw.data, raw.size) {}
  bool has_log_frequency() const { return at<1>().valid(); }
  int32_t log_frequency() const { return at<1>().as_int32(); }
  bool has_log_level() const { return at<2>().valid(); }
  int32_t log_level() const { return at<2>().as_int32(); }
};

class WindowManagerConfig : public ::protozero::Message {
 public:
  using Decoder = WindowManagerConfig_Decoder;
  enum : int32_t {
    kLogFrequencyFieldNumber = 1,
    kLogLevelFieldNumber = 2,
  };
  static constexpr const char* GetName() { return ".perfetto.protos.WindowManagerConfig"; }


  using LogFrequency = ::perfetto::protos::pbzero::WindowManagerConfig_LogFrequency;
  static inline const char* LogFrequency_Name(LogFrequency value) {
    return ::perfetto::protos::pbzero::WindowManagerConfig_LogFrequency_Name(value);
  }

  using LogLevel = ::perfetto::protos::pbzero::WindowManagerConfig_LogLevel;
  static inline const char* LogLevel_Name(LogLevel value) {
    return ::perfetto::protos::pbzero::WindowManagerConfig_LogLevel_Name(value);
  }
  static inline const LogFrequency LOG_FREQUENCY_UNSPECIFIED = LogFrequency::LOG_FREQUENCY_UNSPECIFIED;
  static inline const LogFrequency LOG_FREQUENCY_FRAME = LogFrequency::LOG_FREQUENCY_FRAME;
  static inline const LogFrequency LOG_FREQUENCY_TRANSACTION = LogFrequency::LOG_FREQUENCY_TRANSACTION;
  static inline const LogFrequency LOG_FREQUENCY_SINGLE_DUMP = LogFrequency::LOG_FREQUENCY_SINGLE_DUMP;
  static inline const LogLevel LOG_LEVEL_UNSPECIFIED = LogLevel::LOG_LEVEL_UNSPECIFIED;
  static inline const LogLevel LOG_LEVEL_VERBOSE = LogLevel::LOG_LEVEL_VERBOSE;
  static inline const LogLevel LOG_LEVEL_DEBUG = LogLevel::LOG_LEVEL_DEBUG;
  static inline const LogLevel LOG_LEVEL_CRITICAL = LogLevel::LOG_LEVEL_CRITICAL;

  using FieldMetadata_LogFrequency =
    ::protozero::proto_utils::FieldMetadata<
      1,
      ::protozero::proto_utils::RepetitionType::kNotRepeated,
      ::protozero::proto_utils::ProtoSchemaType::kEnum,
      WindowManagerConfig_LogFrequency,
      WindowManagerConfig>;

  static constexpr FieldMetadata_LogFrequency kLogFrequency{};
  void set_log_frequency(WindowManagerConfig_LogFrequency value) {
    static constexpr uint32_t field_id = FieldMetadata_LogFrequency::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_LogLevel =
    ::protozero::proto_utils::FieldMetadata<
      2,
      ::protozero::proto_utils::RepetitionType::kNotRepeated,
      ::protozero::proto_utils::ProtoSchemaType::kEnum,
      WindowManagerConfig_LogLevel,
      WindowManagerConfig>;

  static constexpr FieldMetadata_LogLevel kLogLevel{};
  void set_log_level(WindowManagerConfig_LogLevel value) {
    static constexpr uint32_t field_id = FieldMetadata_LogLevel::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);
  }
};

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