text: // mojo/public/mojom/base/values.mojom-shared-internal.h is auto generated by mojom_bindings_generator.py, do not edit
  
  // Copyright 2016 The Chromium Authors. All rights reserved.
  // Use of this source code is governed by a BSD-style license that can be
  // found in the LICENSE file.
  
  #ifndef MOJO_PUBLIC_MOJOM_BASE_VALUES_MOJOM_SHARED_INTERNAL_H_
  #define MOJO_PUBLIC_MOJOM_BASE_VALUES_MOJOM_SHARED_INTERNAL_H_
  
  #include "mojo/public/cpp/bindings/lib/array_internal.h"
  #include "mojo/public/cpp/bindings/lib/bindings_internal.h"
  #include "mojo/public/cpp/bindings/lib/map_data_internal.h"
  #include "mojo/public/cpp/bindings/lib/buffer.h"
  #include "mojo/public/cpp/bindings/lib/native_enum_data.h"
  #include "mojo/public/interfaces/bindings/native_struct.mojom-shared-internal.h"
  #include "base/component_export.h"
  
  #ifdef KYTHE_IS_RUNNING
  #pragma kythe_inline_metadata "Metadata comment"
  #endif
  
  namespace mojo {
  namespace internal {
  class ValidationContext;
  }
  }
  namespace mojo_base {
  namespace mojom {
  namespace internal {
  class DictionaryValue_Data;
  class ListValue_Data;
  class Value_Data;
  
  #pragma pack(push, 1)
  
  
  class COMPONENT_EXPORT(MOJO_BASE_MOJOM_SHARED) Value_Data {
   public:
    // Used to identify Mojom Union Data Classes.
    typedef void MojomUnionDataType;
  
    Value_Data() {}
    // Do nothing in the destructor since it won't be called when it is a
    // non-inlined union.
    ~Value_Data() {}
  
    static bool Validate(const void* data,
                         mojo::internal::ValidationContext* validation_context,
                         bool inlined);
  
    bool is_null() const { return size == 0; }
  
    void set_null() {
      size = 0U;
      tag = static_cast<Value_Tag>(0);
      data.unknown = 0U;
    }
  
    // TODO(crbug.com/1148486): SHOUTY_CASE values are being deprecated per C++ code style
    // guidelines (https://google.github.io/styleguide/cppguide.html#Enumerator_Names),
    // please use kCamelCase values instead.  Cleanup NULL_VALUE, BOOL_VALUE, INT_VALUE, etc.
    // generation once codebase is transitioned to kNullValue, kBoolValue, kIntValue, etc.
    enum class Value_Tag : uint32_t {
  
      
  // @generated_from: mojo_base.mojom.Value.null_value
      NULL_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.null_value
      kNullValue = NULL_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.bool_value
      BOOL_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.bool_value
      kBoolValue = BOOL_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.int_value
      INT_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.int_value
      kIntValue = INT_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.double_value
      DOUBLE_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.double_value
      kDoubleValue = DOUBLE_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.string_value
      STRING_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.string_value
      kStringValue = STRING_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.binary_value
      BINARY_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.binary_value
      kBinaryValue = BINARY_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.dictionary_value
      DICTIONARY_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.dictionary_value
      kDictionaryValue = DICTIONARY_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.list_value
      LIST_VALUE,
      
  // @generated_from: mojo_base.mojom.Value.list_value
      kListValue = LIST_VALUE,
    };
  
    // A note on layout:
    // "Each non-static data member is allocated as if it were the sole member of
    // a struct." - Section 9.5.2 ISO/IEC 14882:2011 (The C++ Spec)
    union MOJO_ALIGNAS(8) Union_ {
      Union_() : unknown(0) {}
      uint8_t f_null_value;
      uint8_t f_bool_value : 1;
      int32_t f_int_value;
      double f_double_value;
      mojo::internal::Pointer<mojo::internal::String_Data> f_string_value;
      mojo::internal::Pointer<mojo::internal::Array_Data<uint8_t>> f_binary_value;
      mojo::internal::Pointer<internal::DictionaryValue_Data> f_dictionary_value;
      mojo::internal::Pointer<internal::ListValue_Data> f_list_value;
      uint64_t unknown;
    };
  
    uint32_t size;
    Value_Tag tag;
    Union_ data;
  };
  static_assert(sizeof(Value_Data) == mojo::internal::kUnionDataSize,
                "Bad sizeof(Value_Data)");
  class COMPONENT_EXPORT(MOJO_BASE_MOJOM_SHARED) DictionaryValue_Data {
   public:
    static bool Validate(const void* data,
                         mojo::internal::ValidationContext* validation_context);
  
    mojo::internal::StructHeader header_;
    mojo::internal::Pointer<mojo::internal::Map_Data<mojo::internal::Pointer<mojo::internal::String_Data>, internal::Value_Data>> storage;
  
   private:
    friend class mojo::internal::MessageFragment<DictionaryValue_Data>;
  
    DictionaryValue_Data();
    ~DictionaryValue_Data() = delete;
  };
  static_assert(sizeof(DictionaryValue_Data) == 16,
                "Bad sizeof(DictionaryValue_Data)");
  // Used by DictionaryValue::WrapAsMessage to lazily serialize the struct.
  template <typename UserType, typename DataView>
  struct DictionaryValue_UnserializedMessageContext
      : public mojo::internal::UnserializedMessageContext {
   public:
    static const mojo::internal::UnserializedMessageContext::Tag kMessageTag;
  
    DictionaryValue_UnserializedMessageContext(
      uint32_t message_name,
      uint32_t message_flags,
      UserType input)
        : mojo::internal::UnserializedMessageContext(&kMessageTag, message_name, message_flags)
        , user_data_(std::move(input)) {}
    ~DictionaryValue_UnserializedMessageContext() override = default;
  
    UserType TakeData() {
      return std::move(user_data_);
    }
  
   private:
    // mojo::internal::UnserializedMessageContext:
    void Serialize(mojo::Message& message) override {
      mojo::internal::MessageFragment<DictionaryValue_Data> fragment(message);
      mojo::internal::Serialize<DataView>(user_data_, fragment);
    }
  
    UserType user_data_;
  };
  
  template <typename UserType, typename DataView>
  const mojo::internal::UnserializedMessageContext::Tag
      DictionaryValue_UnserializedMessageContext<UserType, DataView>::kMessageTag = {};
  class COMPONENT_EXPORT(MOJO_BASE_MOJOM_SHARED) ListValue_Data {
   public:
    static bool Validate(const void* data,
                         mojo::internal::ValidationContext* validation_context);
  
    mojo::internal::StructHeader header_;
    mojo::internal::Pointer<mojo::internal::Array_Data<internal::Value_Data>> storage;
  
   private:
    friend class mojo::internal::MessageFragment<ListValue_Data>;
  
    ListValue_Data();
    ~ListValue_Data() = delete;
  };
  static_assert(sizeof(ListValue_Data) == 16,
                "Bad sizeof(ListValue_Data)");
  // Used by ListValue::WrapAsMessage to lazily serialize the struct.
  template <typename UserType, typename DataView>
  struct ListValue_UnserializedMessageContext
      : public mojo::internal::UnserializedMessageContext {
   public:
    static const mojo::internal::UnserializedMessageContext::Tag kMessageTag;
  
    ListValue_UnserializedMessageContext(
      uint32_t message_name,
      uint32_t message_flags,
      UserType input)
        : mojo::internal::UnserializedMessageContext(&kMessageTag, message_name, message_flags)
        , user_data_(std::move(input)) {}
    ~ListValue_UnserializedMessageContext() override = default;
  
    UserType TakeData() {
      return std::move(user_data_);
    }
  
   private:
    // mojo::internal::UnserializedMessageContext:
    void Serialize(mojo::Message& message) override {
      mojo::internal::MessageFragment<ListValue_Data> fragment(message);
      mojo::internal::Serialize<DataView>(user_data_, fragment);
    }
  
    UserType user_data_;
  };
  
  template <typename UserType, typename DataView>
  const mojo::internal::UnserializedMessageContext::Tag
      ListValue_UnserializedMessageContext<UserType, DataView>::kMessageTag = {};
  
  #pragma pack(pop)
  
  }  // namespace internal
  }  // namespace mojom
  }  // namespace mojo_base
  
  #endif  // MOJO_PUBLIC_MOJOM_BASE_VALUES_MOJOM_SHARED_INTERNAL_H_
  
  /* Metadata comment
  eyJtZXRhIjogW3siZW5kIjogMjE3MywgImJlZ2luIjogMjE2MywgImVkZ2UiOiAiJS9reXRoZS9l
  ZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3Jw
  dXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2Ui
  OiAibW9qb20iLCAic2lnbmF0dXJlIjogIm1vam9fYmFzZS5tb2pvbS5WYWx1ZS5udWxsX3ZhbHVl
  In19LCB7ImVuZCI6IDIyNjAsICJiZWdpbiI6IDIyNTAsICJlZGdlIjogIiUva3l0aGUvZWRnZS9n
  ZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjog
  ImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1v
  am9tIiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jhc2UubW9qb20uVmFsdWUubnVsbF92YWx1ZSJ9fSwg
  eyJlbmQiOiAyMzM0LCAiYmVnaW4iOiAyMzI0LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJh
  dGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUiOiB7ImNvcnB1cyI6ICJjaHJv
  bWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJsYW5ndWFnZSI6ICJtb2pvbSIs
  ICJzaWduYXR1cmUiOiAibW9qb19iYXNlLm1vam9tLlZhbHVlLmJvb2xfdmFsdWUifX0sIHsiZW5k
  IjogMjQyMSwgImJlZ2luIjogMjQxMSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyIs
  ICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1lIjogeyJjb3JwdXMiOiAiY2hyb21pdW0u
  Z29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAibGFuZ3VhZ2UiOiAibW9qb20iLCAic2ln
  bmF0dXJlIjogIm1vam9fYmFzZS5tb2pvbS5WYWx1ZS5ib29sX3ZhbHVlIn19LCB7ImVuZCI6IDI0
  OTMsICJiZWdpbiI6IDI0ODQsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlw
  ZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2ds
  ZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVy
  ZSI6ICJtb2pvX2Jhc2UubW9qb20uVmFsdWUuaW50X3ZhbHVlIn19LCB7ImVuZCI6IDI1NzcsICJi
  ZWdpbiI6IDI1NjgsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJh
  bmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
  ZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJt
  b2pvX2Jhc2UubW9qb20uVmFsdWUuaW50X3ZhbHVlIn19LCB7ImVuZCI6IDI2NTUsICJiZWdpbiI6
  IDI2NDMsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3Jf
  ZGVmaW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20v
  Y2hyb21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jh
  c2UubW9qb20uVmFsdWUuZG91YmxlX3ZhbHVlIn19LCB7ImVuZCI6IDI3NDgsICJiZWdpbiI6IDI3
  MzYsICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVm
  aW5lcyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hy
  b21pdW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jhc2Uu
  bW9qb20uVmFsdWUuZG91YmxlX3ZhbHVlIn19LCB7ImVuZCI6IDI4MjYsICJiZWdpbiI6IDI4MTQs
  ICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5l
  cyIsICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21p
  dW0vc3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jhc2UubW9q
  b20uVmFsdWUuc3RyaW5nX3ZhbHVlIn19LCB7ImVuZCI6IDI5MTksICJiZWdpbiI6IDI5MDcsICJl
  ZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs
  ICJ2bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0v
  c3JjIiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jhc2UubW9qb20u
  VmFsdWUuc3RyaW5nX3ZhbHVlIn19LCB7ImVuZCI6IDI5OTcsICJiZWdpbiI6IDI5ODUsICJlZGdl
  IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2
  bmFtZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3Jj
  IiwgImxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jhc2UubW9qb20uVmFs
  dWUuYmluYXJ5X3ZhbHVlIn19LCB7ImVuZCI6IDMwOTAsICJiZWdpbiI6IDMwNzgsICJlZGdlIjog
  IiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFt
  ZSI6IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwg
  Imxhbmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jhc2UubW9qb20uVmFsdWUu
  YmluYXJ5X3ZhbHVlIn19LCB7ImVuZCI6IDMxNzYsICJiZWdpbiI6IDMxNjAsICJlZGdlIjogIiUv
  a3l0aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6
  IHsiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxh
  bmd1YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jhc2UubW9qb20uVmFsdWUuZGlj
  dGlvbmFyeV92YWx1ZSJ9fSwgeyJlbmQiOiAzMjgxLCAiYmVnaW4iOiAzMjY1LCAiZWRnZSI6ICIl
  L2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIiwgInR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAidm5hbWUi
  OiB7ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2Nocm9taXVtL3NyYyIsICJs
  YW5ndWFnZSI6ICJtb2pvbSIsICJzaWduYXR1cmUiOiAibW9qb19iYXNlLm1vam9tLlZhbHVlLmRp
  Y3Rpb25hcnlfdmFsdWUifX0sIHsiZW5kIjogMzM1NSwgImJlZ2luIjogMzM0NSwgImVkZ2UiOiAi
  JS9reXRoZS9lZGdlL2dlbmVyYXRlcyIsICJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgInZuYW1l
  IjogeyJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMiLCAi
  bGFuZ3VhZ2UiOiAibW9qb20iLCAic2lnbmF0dXJlIjogIm1vam9fYmFzZS5tb2pvbS5WYWx1ZS5s
  aXN0X3ZhbHVlIn19LCB7ImVuZCI6IDM0NDIsICJiZWdpbiI6IDM0MzIsICJlZGdlIjogIiUva3l0
  aGUvZWRnZS9nZW5lcmF0ZXMiLCAidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJ2bmFtZSI6IHsi
  Y29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY2hyb21pdW0vc3JjIiwgImxhbmd1
  YWdlIjogIm1vam9tIiwgInNpZ25hdHVyZSI6ICJtb2pvX2Jhc2UubW9qb20uVmFsdWUubGlzdF92
  YWx1ZSJ9fV0sICJ0eXBlIjogImt5dGhlMCJ9
  */