| // mojo/public/interfaces/bindings/tests/test_wtf_types.mojom-shared.h is auto generated by mojom_bindings_generator.py, do not edit |
| |
| // Copyright 2016 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef MOJO_PUBLIC_INTERFACES_BINDINGS_TESTS_TEST_WTF_TYPES_MOJOM_SHARED_H_ |
| #define MOJO_PUBLIC_INTERFACES_BINDINGS_TESTS_TEST_WTF_TYPES_MOJOM_SHARED_H_ |
| |
| #include <stdint.h> |
| |
| #include <functional> |
| #include <iosfwd> |
| #include <type_traits> |
| #include <utility> |
| #include "mojo/public/cpp/bindings/array_data_view.h" |
| #include "mojo/public/cpp/bindings/enum_traits.h" |
| #include "mojo/public/cpp/bindings/interface_data_view.h" |
| #include "mojo/public/cpp/bindings/lib/bindings_internal.h" |
| #include "mojo/public/cpp/bindings/lib/serialization.h" |
| #include "mojo/public/cpp/bindings/map_data_view.h" |
| #include "mojo/public/cpp/bindings/string_data_view.h" |
| |
| #include "third_party/perfetto/include/perfetto/tracing/traced_value_forward.h" |
| |
| #include "mojo/public/interfaces/bindings/tests/test_wtf_types.mojom-shared-internal.h" |
| #include "mojo/public/cpp/bindings/lib/interface_serialization.h" |
| #include "mojo/public/cpp/system/data_pipe.h" |
| |
| |
| |
| #ifdef KYTHE_IS_RUNNING |
| #pragma kythe_inline_metadata "Metadata comment" |
| #endif |
| |
| |
| namespace mojo::test { |
| class TestWTFCodeGenerationDataView; |
| |
| class TestWTFStructDataView; |
| |
| class TestWTFStructWrapperDataView; |
| |
| class TestWTFCodeGeneration2DataView; |
| |
| |
| } // mojo::test |
| |
| namespace mojo { |
| namespace internal { |
| |
| template <> |
| struct MojomTypeTraits<::mojo::test::TestWTFCodeGenerationDataView> { |
| using Data = ::mojo::test::internal::TestWTFCodeGeneration_Data; |
| using DataAsArrayElement = Pointer<Data>; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kStruct; |
| }; |
| |
| template <> |
| struct MojomTypeTraits<::mojo::test::TestWTFStructDataView> { |
| using Data = ::mojo::test::internal::TestWTFStruct_Data; |
| using DataAsArrayElement = Pointer<Data>; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kStruct; |
| }; |
| |
| template <> |
| struct MojomTypeTraits<::mojo::test::TestWTFStructWrapperDataView> { |
| using Data = ::mojo::test::internal::TestWTFStructWrapper_Data; |
| using DataAsArrayElement = Pointer<Data>; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kStruct; |
| }; |
| |
| template <> |
| struct MojomTypeTraits<::mojo::test::TestWTFCodeGeneration2DataView> { |
| using Data = ::mojo::test::internal::TestWTFCodeGeneration2_Data; |
| using DataAsArrayElement = Data; |
| static constexpr MojomTypeCategory category = MojomTypeCategory::kUnion; |
| }; |
| |
| } // namespace internal |
| } // namespace mojo |
| |
| |
| namespace mojo::test { |
| |
| |
| // @generated_from: mojo.test.TopLevelEnum |
| enum class TopLevelEnum : int32_t { |
| |
| // @generated_from: mojo.test.TopLevelEnum.E0 |
| E0 = 0, |
| |
| // @generated_from: mojo.test.TopLevelEnum.E1 |
| E1 = 1, |
| kMinValue = 0, |
| kMaxValue = 1, |
| }; |
| |
| std::ostream& operator<<(std::ostream& os, TopLevelEnum value); |
| inline bool IsKnownEnumValue(TopLevelEnum value) { |
| return internal::TopLevelEnum_Data::IsKnownValue( |
| static_cast<int32_t>(value)); |
| } |
| |
| |
| // @generated_from: mojo.test.TestWTFStruct.NestedEnum |
| enum class TestWTFStruct_NestedEnum : int32_t { |
| |
| // @generated_from: mojo.test.TestWTFStruct.NestedEnum.E0 |
| E0 = 0, |
| |
| // @generated_from: mojo.test.TestWTFStruct.NestedEnum.E1 |
| E1 = 1, |
| kMinValue = 0, |
| kMaxValue = 1, |
| }; |
| |
| std::ostream& operator<<(std::ostream& os, TestWTFStruct_NestedEnum value); |
| inline bool IsKnownEnumValue(TestWTFStruct_NestedEnum value) { |
| return internal::TestWTFStruct_NestedEnum_Data::IsKnownValue( |
| static_cast<int32_t>(value)); |
| } |
| |
| |
| // @generated_from: mojo.test.TestWTF.NestedEnum |
| enum class TestWTF_NestedEnum : int32_t { |
| |
| // @generated_from: mojo.test.TestWTF.NestedEnum.E0 |
| E0 = 0, |
| |
| // @generated_from: mojo.test.TestWTF.NestedEnum.E1 |
| E1 = 1, |
| kMinValue = 0, |
| kMaxValue = 1, |
| }; |
| |
| std::ostream& operator<<(std::ostream& os, TestWTF_NestedEnum value); |
| inline bool IsKnownEnumValue(TestWTF_NestedEnum value) { |
| return internal::TestWTF_NestedEnum_Data::IsKnownValue( |
| static_cast<int32_t>(value)); |
| } |
| // Interface base classes. They are used for type safety check. |
| class TestWTFInterfaceBase {}; |
| |
| using TestWTFPtrDataView = |
| mojo::InterfacePtrDataView<TestWTFInterfaceBase>; |
| using TestWTFRequestDataView = |
| mojo::InterfaceRequestDataView<TestWTFInterfaceBase>; |
| using TestWTFAssociatedPtrInfoDataView = |
| mojo::AssociatedInterfacePtrInfoDataView<TestWTFInterfaceBase>; |
| using TestWTFAssociatedRequestDataView = |
| mojo::AssociatedInterfaceRequestDataView<TestWTFInterfaceBase>; |
| |
| |
| class TestWTFCodeGenerationDataView { |
| public: |
| TestWTFCodeGenerationDataView() = default; |
| |
| TestWTFCodeGenerationDataView( |
| internal::TestWTFCodeGeneration_Data* data, |
| mojo::Message* message) |
| : data_(data), message_(message) {} |
| |
| bool is_null() const { return !data_; } |
| inline void GetStrDataView( |
| mojo::StringDataView* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadStr(UserType* output) { |
| |
| auto* pointer = data_->str.Get(); |
| return mojo::internal::Deserialize<mojo::StringDataView>( |
| pointer, output, message_); |
| } |
| inline void GetNullableStrDataView( |
| mojo::StringDataView* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadNullableStr(UserType* output) { |
| |
| static_assert( |
| mojo::internal::IsValidUserTypeForOptionalValue< |
| mojo::StringDataView, UserType>(), |
| "Attempting to read the optional `nullable_str` field into a type which " |
| "cannot represent a null value. Either wrap the destination object " |
| "with std::optional, ensure that any corresponding " |
| "{Struct/Union/Array/String}Traits define the necessary IsNull and " |
| "SetToNull methods, or use `MaybeReadNullableStr` instead " |
| "of `ReadNullableStr if you're fine with null values being " |
| "silently ignored in this case."); |
| auto* pointer = data_->nullable_str.Get(); |
| return mojo::internal::Deserialize<mojo::StringDataView>( |
| pointer, output, message_); |
| } |
| inline void GetStrsDataView( |
| mojo::ArrayDataView<mojo::StringDataView>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadStrs(UserType* output) { |
| |
| auto* pointer = data_->strs.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<mojo::StringDataView>>( |
| pointer, output, message_); |
| } |
| inline void GetNullableStrsDataView( |
| mojo::ArrayDataView<mojo::StringDataView>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadNullableStrs(UserType* output) { |
| |
| auto* pointer = data_->nullable_strs.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<mojo::StringDataView>>( |
| pointer, output, message_); |
| } |
| inline void GetArraysDataView( |
| mojo::ArrayDataView<mojo::ArrayDataView<int32_t>>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadArrays(UserType* output) { |
| |
| auto* pointer = data_->arrays.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<mojo::ArrayDataView<int32_t>>>( |
| pointer, output, message_); |
| } |
| inline void GetBoolsDataView( |
| mojo::ArrayDataView<bool>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadBools(UserType* output) { |
| |
| auto* pointer = data_->bools.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<bool>>( |
| pointer, output, message_); |
| } |
| inline void GetHandlesDataView( |
| mojo::ArrayDataView<mojo::ScopedMessagePipeHandle>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadHandles(UserType* output) { |
| |
| auto* pointer = data_->handles.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<mojo::ScopedMessagePipeHandle>>( |
| pointer, output, message_); |
| } |
| inline void GetStrMapDataView( |
| mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadStrMap(UserType* output) { |
| |
| auto* pointer = data_->str_map.Get(); |
| return mojo::internal::Deserialize<mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>>( |
| pointer, output, message_); |
| } |
| inline void GetArrayMapDataView( |
| mojo::MapDataView<int32_t, mojo::ArrayDataView<int32_t>>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadArrayMap(UserType* output) { |
| |
| auto* pointer = data_->array_map.Get(); |
| return mojo::internal::Deserialize<mojo::MapDataView<int32_t, mojo::ArrayDataView<int32_t>>>( |
| pointer, output, message_); |
| } |
| inline void GetHandleMapDataView( |
| mojo::MapDataView<int32_t, mojo::ScopedMessagePipeHandle>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadHandleMap(UserType* output) { |
| |
| auto* pointer = data_->handle_map.Get(); |
| return mojo::internal::Deserialize<mojo::MapDataView<int32_t, mojo::ScopedMessagePipeHandle>>( |
| pointer, output, message_); |
| } |
| inline void GetStrMapsDataView( |
| mojo::ArrayDataView<mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadStrMaps(UserType* output) { |
| |
| auto* pointer = data_->str_maps.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>>>( |
| pointer, output, message_); |
| } |
| private: |
| internal::TestWTFCodeGeneration_Data* data_ = nullptr; |
| mojo::Message* message_ = nullptr; |
| }; |
| |
| |
| class TestWTFStructDataView { |
| public: |
| TestWTFStructDataView() = default; |
| |
| TestWTFStructDataView( |
| internal::TestWTFStruct_Data* data, |
| mojo::Message* message) |
| : data_(data), message_(message) {} |
| |
| bool is_null() const { return !data_; } |
| inline void GetStrDataView( |
| mojo::StringDataView* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadStr(UserType* output) { |
| |
| auto* pointer = data_->str.Get(); |
| return mojo::internal::Deserialize<mojo::StringDataView>( |
| pointer, output, message_); |
| } |
| int32_t integer() const { |
| return data_->integer; |
| } |
| private: |
| internal::TestWTFStruct_Data* data_ = nullptr; |
| mojo::Message* message_ = nullptr; |
| }; |
| |
| |
| class TestWTFStructWrapperDataView { |
| public: |
| TestWTFStructWrapperDataView() = default; |
| |
| TestWTFStructWrapperDataView( |
| internal::TestWTFStructWrapper_Data* data, |
| mojo::Message* message) |
| : data_(data), message_(message) {} |
| |
| bool is_null() const { return !data_; } |
| inline void GetNestedStructDataView( |
| TestWTFStructDataView* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadNestedStruct(UserType* output) { |
| |
| auto* pointer = data_->nested_struct.Get(); |
| return mojo::internal::Deserialize<::mojo::test::TestWTFStructDataView>( |
| pointer, output, message_); |
| } |
| inline void GetArrayStructDataView( |
| mojo::ArrayDataView<TestWTFStructDataView>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadArrayStruct(UserType* output) { |
| |
| auto* pointer = data_->array_struct.Get(); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<::mojo::test::TestWTFStructDataView>>( |
| pointer, output, message_); |
| } |
| inline void GetMapStructDataView( |
| mojo::MapDataView<TestWTFStructDataView, TestWTFStructDataView>* output); |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadMapStruct(UserType* output) { |
| |
| auto* pointer = data_->map_struct.Get(); |
| return mojo::internal::Deserialize<mojo::MapDataView<::mojo::test::TestWTFStructDataView, ::mojo::test::TestWTFStructDataView>>( |
| pointer, output, message_); |
| } |
| private: |
| internal::TestWTFStructWrapper_Data* data_ = nullptr; |
| mojo::Message* message_ = nullptr; |
| }; |
| |
| |
| class TestWTFCodeGeneration2DataView { |
| public: |
| using Tag = internal::TestWTFCodeGeneration2_Data::TestWTFCodeGeneration2_Tag; |
| |
| TestWTFCodeGeneration2DataView() = default; |
| |
| TestWTFCodeGeneration2DataView( |
| internal::TestWTFCodeGeneration2_Data* data, |
| mojo::Message* message) |
| : data_(data), message_(message) {} |
| |
| bool is_null() const { |
| // For inlined unions, |data_| is always non-null. In that case we need to |
| // check |data_->is_null()|. |
| return !data_ || data_->is_null(); |
| } |
| |
| Tag tag() const { return data_->tag; } |
| bool is_str() const { return data_->tag == Tag::kStr; } |
| inline void GetStrDataView( |
| mojo::StringDataView* output) const; |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadStr(UserType* output) const { |
| |
| CHECK(is_str()); |
| return mojo::internal::Deserialize<mojo::StringDataView>( |
| data_->data.f_str.Get(), output, message_); |
| } |
| bool is_strs() const { return data_->tag == Tag::kStrs; } |
| inline void GetStrsDataView( |
| mojo::ArrayDataView<mojo::StringDataView>* output) const; |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadStrs(UserType* output) const { |
| |
| CHECK(is_strs()); |
| return mojo::internal::Deserialize<mojo::ArrayDataView<mojo::StringDataView>>( |
| data_->data.f_strs.Get(), output, message_); |
| } |
| bool is_str_map() const { return data_->tag == Tag::kStrMap; } |
| inline void GetStrMapDataView( |
| mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>* output) const; |
| |
| template <typename UserType> |
| [[nodiscard]] bool ReadStrMap(UserType* output) const { |
| |
| CHECK(is_str_map()); |
| return mojo::internal::Deserialize<mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>>( |
| data_->data.f_str_map.Get(), output, message_); |
| } |
| |
| private: |
| internal::TestWTFCodeGeneration2_Data* data_ = nullptr; |
| mojo::Message* message_ = nullptr; |
| }; |
| |
| |
| |
| } // mojo::test |
| |
| namespace std { |
| |
| template <> |
| struct hash<::mojo::test::TopLevelEnum> |
| : public mojo::internal::EnumHashImpl<::mojo::test::TopLevelEnum> {}; |
| |
| template <> |
| struct hash<::mojo::test::TestWTFStruct_NestedEnum> |
| : public mojo::internal::EnumHashImpl<::mojo::test::TestWTFStruct_NestedEnum> {}; |
| |
| template <> |
| struct hash<::mojo::test::TestWTF_NestedEnum> |
| : public mojo::internal::EnumHashImpl<::mojo::test::TestWTF_NestedEnum> {}; |
| |
| } // namespace std |
| |
| namespace mojo { |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::TopLevelEnum, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = EnumTraits<::mojo::test::TopLevelEnum, UserType>; |
| |
| static void Serialize(UserType input, int32_t* output) { |
| *output = static_cast<int32_t>(Traits::ToMojom(input)); |
| } |
| |
| static bool Deserialize(int32_t input, UserType* output) { |
| return Traits::FromMojom(::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::mojo::test::TopLevelEnum>(input)), output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::TestWTFStruct_NestedEnum, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = EnumTraits<::mojo::test::TestWTFStruct_NestedEnum, UserType>; |
| |
| static void Serialize(UserType input, int32_t* output) { |
| *output = static_cast<int32_t>(Traits::ToMojom(input)); |
| } |
| |
| static bool Deserialize(int32_t input, UserType* output) { |
| return Traits::FromMojom(::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::mojo::test::TestWTFStruct_NestedEnum>(input)), output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::TestWTF_NestedEnum, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = EnumTraits<::mojo::test::TestWTF_NestedEnum, UserType>; |
| |
| static void Serialize(UserType input, int32_t* output) { |
| *output = static_cast<int32_t>(Traits::ToMojom(input)); |
| } |
| |
| static bool Deserialize(int32_t input, UserType* output) { |
| return Traits::FromMojom(::mojo::internal::ToKnownEnumValueHelper( |
| static_cast<::mojo::test::TestWTF_NestedEnum>(input)), output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::TestWTFCodeGenerationDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = StructTraits<::mojo::test::TestWTFCodeGenerationDataView, UserType>; |
| |
| static void Serialize( |
| MaybeConstUserType& input, |
| mojo::internal::MessageFragment<::mojo::test::internal::TestWTFCodeGeneration_Data>& fragment) { |
| if (CallIsNullIfExists<Traits>(input)) |
| return; |
| fragment.Allocate(); |
| decltype(Traits::str(input)) in_str = Traits::str(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->str)::BaseType> str_fragment( |
| fragment.message()); |
| mojo::internal::Serialize<mojo::StringDataView>( |
| in_str, str_fragment); |
| fragment->str.Set( |
| str_fragment.is_null() ? nullptr : str_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->str.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null str in TestWTFCodeGeneration struct"); |
| decltype(Traits::nullable_str(input)) in_nullable_str = Traits::nullable_str(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->nullable_str)::BaseType> nullable_str_fragment( |
| fragment.message()); |
| mojo::internal::Serialize<mojo::StringDataView>( |
| in_nullable_str, nullable_str_fragment); |
| fragment->nullable_str.Set( |
| nullable_str_fragment.is_null() ? nullptr : nullable_str_fragment.data()); |
| decltype(Traits::strs(input)) in_strs = Traits::strs(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->strs)::BaseType> |
| strs_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& strs_validate_params = |
| mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<mojo::StringDataView>>( |
| in_strs, strs_fragment, &strs_validate_params); |
| fragment->strs.Set( |
| strs_fragment.is_null() ? nullptr : strs_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->strs.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null strs in TestWTFCodeGeneration struct"); |
| decltype(Traits::nullable_strs(input)) in_nullable_strs = Traits::nullable_strs(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->nullable_strs)::BaseType> |
| nullable_strs_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& nullable_strs_validate_params = |
| mojo::internal::GetArrayValidator<0, true, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<mojo::StringDataView>>( |
| in_nullable_strs, nullable_strs_fragment, &nullable_strs_validate_params); |
| fragment->nullable_strs.Set( |
| nullable_strs_fragment.is_null() ? nullptr : nullable_strs_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->nullable_strs.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null nullable_strs in TestWTFCodeGeneration struct"); |
| decltype(Traits::arrays(input)) in_arrays = Traits::arrays(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->arrays)::BaseType> |
| arrays_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& arrays_validate_params = |
| mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<mojo::ArrayDataView<int32_t>>>( |
| in_arrays, arrays_fragment, &arrays_validate_params); |
| fragment->arrays.Set( |
| arrays_fragment.is_null() ? nullptr : arrays_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->arrays.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null arrays in TestWTFCodeGeneration struct"); |
| decltype(Traits::bools(input)) in_bools = Traits::bools(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->bools)::BaseType> |
| bools_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& bools_validate_params = |
| mojo::internal::GetArrayValidator<0, false, nullptr>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<bool>>( |
| in_bools, bools_fragment, &bools_validate_params); |
| fragment->bools.Set( |
| bools_fragment.is_null() ? nullptr : bools_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->bools.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null bools in TestWTFCodeGeneration struct"); |
| decltype(Traits::handles(input)) in_handles = Traits::handles(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->handles)::BaseType> |
| handles_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& handles_validate_params = |
| mojo::internal::GetArrayValidator<0, false, nullptr>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<mojo::ScopedMessagePipeHandle>>( |
| in_handles, handles_fragment, &handles_validate_params); |
| fragment->handles.Set( |
| handles_fragment.is_null() ? nullptr : handles_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->handles.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null handles in TestWTFCodeGeneration struct"); |
| decltype(Traits::str_map(input)) in_str_map = Traits::str_map(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->str_map)::BaseType> |
| str_map_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& str_map_validate_params = |
| mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(), *&mojo::internal::GetArrayValidator<0, true, &mojo::internal::GetArrayValidator<0, false, nullptr>()>()>(); |
| mojo::internal::Serialize<mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>>( |
| in_str_map, str_map_fragment, &str_map_validate_params); |
| fragment->str_map.Set( |
| str_map_fragment.is_null() ? nullptr : str_map_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->str_map.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null str_map in TestWTFCodeGeneration struct"); |
| decltype(Traits::array_map(input)) in_array_map = Traits::array_map(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->array_map)::BaseType> |
| array_map_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& array_map_validate_params = |
| mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, nullptr>(), *&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>()>(); |
| mojo::internal::Serialize<mojo::MapDataView<int32_t, mojo::ArrayDataView<int32_t>>>( |
| in_array_map, array_map_fragment, &array_map_validate_params); |
| fragment->array_map.Set( |
| array_map_fragment.is_null() ? nullptr : array_map_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->array_map.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null array_map in TestWTFCodeGeneration struct"); |
| decltype(Traits::handle_map(input)) in_handle_map = Traits::handle_map(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->handle_map)::BaseType> |
| handle_map_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& handle_map_validate_params = |
| mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, nullptr>(), *&mojo::internal::GetArrayValidator<0, false, nullptr>()>(); |
| mojo::internal::Serialize<mojo::MapDataView<int32_t, mojo::ScopedMessagePipeHandle>>( |
| in_handle_map, handle_map_fragment, &handle_map_validate_params); |
| fragment->handle_map.Set( |
| handle_map_fragment.is_null() ? nullptr : handle_map_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->handle_map.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null handle_map in TestWTFCodeGeneration struct"); |
| decltype(Traits::str_maps(input)) in_str_maps = Traits::str_maps(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->str_maps)::BaseType> |
| str_maps_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& str_maps_validate_params = |
| mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(), *&mojo::internal::GetArrayValidator<0, true, &mojo::internal::GetArrayValidator<0, false, nullptr>()>()>()>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>>>( |
| in_str_maps, str_maps_fragment, &str_maps_validate_params); |
| fragment->str_maps.Set( |
| str_maps_fragment.is_null() ? nullptr : str_maps_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->str_maps.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null str_maps in TestWTFCodeGeneration struct"); |
| } |
| |
| static bool Deserialize(::mojo::test::internal::TestWTFCodeGeneration_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::mojo::test::TestWTFCodeGenerationDataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::TestWTFStructDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = StructTraits<::mojo::test::TestWTFStructDataView, UserType>; |
| |
| static void Serialize( |
| MaybeConstUserType& input, |
| mojo::internal::MessageFragment<::mojo::test::internal::TestWTFStruct_Data>& fragment) { |
| if (CallIsNullIfExists<Traits>(input)) |
| return; |
| fragment.Allocate(); |
| decltype(Traits::str(input)) in_str = Traits::str(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->str)::BaseType> str_fragment( |
| fragment.message()); |
| mojo::internal::Serialize<mojo::StringDataView>( |
| in_str, str_fragment); |
| fragment->str.Set( |
| str_fragment.is_null() ? nullptr : str_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->str.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null str in TestWTFStruct struct"); |
| fragment->integer = Traits::integer(input); |
| } |
| |
| static bool Deserialize(::mojo::test::internal::TestWTFStruct_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::mojo::test::TestWTFStructDataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::TestWTFStructWrapperDataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = StructTraits<::mojo::test::TestWTFStructWrapperDataView, UserType>; |
| |
| static void Serialize( |
| MaybeConstUserType& input, |
| mojo::internal::MessageFragment<::mojo::test::internal::TestWTFStructWrapper_Data>& fragment) { |
| if (CallIsNullIfExists<Traits>(input)) |
| return; |
| fragment.Allocate(); |
| decltype(Traits::nested_struct(input)) in_nested_struct = Traits::nested_struct(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->nested_struct)::BaseType> nested_struct_fragment( |
| fragment.message()); |
| mojo::internal::Serialize<::mojo::test::TestWTFStructDataView>( |
| in_nested_struct, nested_struct_fragment); |
| fragment->nested_struct.Set( |
| nested_struct_fragment.is_null() ? nullptr : nested_struct_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->nested_struct.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null nested_struct in TestWTFStructWrapper struct"); |
| decltype(Traits::array_struct(input)) in_array_struct = Traits::array_struct(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->array_struct)::BaseType> |
| array_struct_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& array_struct_validate_params = |
| mojo::internal::GetArrayValidator<0, false, nullptr>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<::mojo::test::TestWTFStructDataView>>( |
| in_array_struct, array_struct_fragment, &array_struct_validate_params); |
| fragment->array_struct.Set( |
| array_struct_fragment.is_null() ? nullptr : array_struct_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->array_struct.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null array_struct in TestWTFStructWrapper struct"); |
| decltype(Traits::map_struct(input)) in_map_struct = Traits::map_struct(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->map_struct)::BaseType> |
| map_struct_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& map_struct_validate_params = |
| mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, nullptr>(), *&mojo::internal::GetArrayValidator<0, false, nullptr>()>(); |
| mojo::internal::Serialize<mojo::MapDataView<::mojo::test::TestWTFStructDataView, ::mojo::test::TestWTFStructDataView>>( |
| in_map_struct, map_struct_fragment, &map_struct_validate_params); |
| fragment->map_struct.Set( |
| map_struct_fragment.is_null() ? nullptr : map_struct_fragment.data()); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| fragment->map_struct.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null map_struct in TestWTFStructWrapper struct"); |
| } |
| |
| static bool Deserialize(::mojo::test::internal::TestWTFStructWrapper_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::mojo::test::TestWTFStructWrapperDataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| |
| namespace internal { |
| |
| template <typename MaybeConstUserType> |
| struct Serializer<::mojo::test::TestWTFCodeGeneration2DataView, MaybeConstUserType> { |
| using UserType = typename std::remove_const<MaybeConstUserType>::type; |
| using Traits = UnionTraits<::mojo::test::TestWTFCodeGeneration2DataView, UserType>; |
| |
| static void Serialize(MaybeConstUserType& input, |
| MessageFragment<::mojo::test::internal::TestWTFCodeGeneration2_Data>& fragment, |
| bool inlined) { |
| if (CallIsNullIfExists<Traits>(input)) { |
| if (inlined) |
| fragment->set_null(); |
| return; |
| } |
| |
| if (!inlined) |
| fragment.Allocate(); |
| |
| // TODO(azani): Handle unknown and objects. |
| // Set the not-null flag. |
| fragment->size = kUnionDataSize; |
| fragment->tag = Traits::GetTag(input); |
| switch (fragment->tag) { |
| case ::mojo::test::TestWTFCodeGeneration2DataView::Tag::kStr: { |
| decltype(Traits::str(input)) |
| in_str = Traits::str(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->data.f_str)::BaseType> |
| value_fragment(fragment.message()); |
| mojo::internal::Serialize<mojo::StringDataView>( |
| in_str, value_fragment); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| value_fragment.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null str in TestWTFCodeGeneration2 union"); |
| fragment->data.f_str.Set( |
| value_fragment.is_null() ? nullptr : value_fragment.data()); |
| break; |
| } |
| case ::mojo::test::TestWTFCodeGeneration2DataView::Tag::kStrs: { |
| decltype(Traits::strs(input)) |
| in_strs = Traits::strs(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->data.f_strs)::BaseType> |
| value_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& strs_validate_params = |
| mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(); |
| mojo::internal::Serialize<mojo::ArrayDataView<mojo::StringDataView>>( |
| in_strs, value_fragment, &strs_validate_params); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| value_fragment.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null strs in TestWTFCodeGeneration2 union"); |
| fragment->data.f_strs.Set( |
| value_fragment.is_null() ? nullptr : value_fragment.data()); |
| break; |
| } |
| case ::mojo::test::TestWTFCodeGeneration2DataView::Tag::kStrMap: { |
| decltype(Traits::str_map(input)) |
| in_str_map = Traits::str_map(input); |
| mojo::internal::MessageFragment< |
| typename decltype(fragment->data.f_str_map)::BaseType> |
| value_fragment(fragment.message()); |
| constexpr const mojo::internal::ContainerValidateParams& str_map_validate_params = |
| mojo::internal::GetMapValidator<*&mojo::internal::GetArrayValidator<0, false, &mojo::internal::GetArrayValidator<0, false, nullptr>()>(), *&mojo::internal::GetArrayValidator<0, true, &mojo::internal::GetArrayValidator<0, false, nullptr>()>()>(); |
| mojo::internal::Serialize<mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>>( |
| in_str_map, value_fragment, &str_map_validate_params); |
| MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING( |
| value_fragment.is_null(), |
| mojo::internal::VALIDATION_ERROR_UNEXPECTED_NULL_POINTER, |
| "null str_map in TestWTFCodeGeneration2 union"); |
| fragment->data.f_str_map.Set( |
| value_fragment.is_null() ? nullptr : value_fragment.data()); |
| break; |
| } |
| } |
| } |
| |
| static bool Deserialize(::mojo::test::internal::TestWTFCodeGeneration2_Data* input, |
| UserType* output, |
| Message* message) { |
| if (!input || input->is_null()) |
| return CallSetToNullIfExists<Traits>(output); |
| |
| ::mojo::test::TestWTFCodeGeneration2DataView data_view(input, message); |
| return Traits::Read(data_view, output); |
| } |
| }; |
| |
| } // namespace internal |
| |
| } // namespace mojo |
| |
| |
| namespace mojo::test { |
| |
| inline void TestWTFCodeGenerationDataView::GetStrDataView( |
| mojo::StringDataView* output) { |
| auto pointer = data_->str.Get(); |
| *output = mojo::StringDataView(pointer, message_); |
| } |
| inline void TestWTFCodeGenerationDataView::GetNullableStrDataView( |
| mojo::StringDataView* output) { |
| auto pointer = data_->nullable_str.Get(); |
| *output = mojo::StringDataView(pointer, message_); |
| } |
| inline void TestWTFCodeGenerationDataView::GetStrsDataView( |
| mojo::ArrayDataView<mojo::StringDataView>* output) { |
| auto pointer = data_->strs.Get(); |
| *output = mojo::ArrayDataView<mojo::StringDataView>(pointer, message_); |
| } |
| inline void TestWTFCodeGenerationDataView::GetNullableStrsDataView( |
| mojo::ArrayDataView<mojo::StringDataView>* output) { |
| auto pointer = data_->nullable_strs.Get(); |
| *output = mojo::ArrayDataView<mojo::StringDataView>(pointer, message_); |
| } |
| inline void TestWTFCodeGenerationDataView::GetArraysDataView( |
| mojo::ArrayDataView<mojo::ArrayDataView<int32_t>>* output) { |
| auto pointer = data_->arrays.Get(); |
| *output = mojo::ArrayDataView<mojo::ArrayDataView<int32_t>>(pointer, message_); |
| } |
| inline void TestWTFCodeGenerationDataView::GetBoolsDataView( |
| mojo::ArrayDataView<bool>* output) { |
| auto pointer = data_->bools.Get(); |
| *output = mojo::ArrayDataView<bool>(pointer, message_); |
| } |
| inline void TestWTFCodeGenerationDataView::GetHandlesDataView( |
| mojo::ArrayDataView<mojo::ScopedMessagePipeHandle>* output) { |
| auto pointer = data_->handles.Get(); |
| *output = mojo::ArrayDataView<mojo::ScopedMessagePipeHandle>(pointer, message_); |
| } |
| inline void TestWTFCodeGenerationDataView::GetStrMapDataView( |
| mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>* output) { |
| auto pointer = data_->str_map.Get(); |
| *output = mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>(pointer, message_); |
| } |
| inline void TestWTFCodeGenerationDataView::GetArrayMapDataView( |
| mojo::MapDataView<int32_t, mojo::ArrayDataView<int32_t>>* output) { |
| auto pointer = data_->array_map.Get(); |
| *output = mojo::MapDataView<int32_t, mojo::ArrayDataView<int32_t>>(pointer, message_); |
| } |
| inline void TestWTFCodeGenerationDataView::GetHandleMapDataView( |
| mojo::MapDataView<int32_t, mojo::ScopedMessagePipeHandle>* output) { |
| auto pointer = data_->handle_map.Get(); |
| *output = mojo::MapDataView<int32_t, mojo::ScopedMessagePipeHandle>(pointer, message_); |
| } |
| inline void TestWTFCodeGenerationDataView::GetStrMapsDataView( |
| mojo::ArrayDataView<mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>>* output) { |
| auto pointer = data_->str_maps.Get(); |
| *output = mojo::ArrayDataView<mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>>(pointer, message_); |
| } |
| |
| |
| inline void TestWTFStructDataView::GetStrDataView( |
| mojo::StringDataView* output) { |
| auto pointer = data_->str.Get(); |
| *output = mojo::StringDataView(pointer, message_); |
| } |
| |
| |
| inline void TestWTFStructWrapperDataView::GetNestedStructDataView( |
| TestWTFStructDataView* output) { |
| auto pointer = data_->nested_struct.Get(); |
| *output = TestWTFStructDataView(pointer, message_); |
| } |
| inline void TestWTFStructWrapperDataView::GetArrayStructDataView( |
| mojo::ArrayDataView<TestWTFStructDataView>* output) { |
| auto pointer = data_->array_struct.Get(); |
| *output = mojo::ArrayDataView<TestWTFStructDataView>(pointer, message_); |
| } |
| inline void TestWTFStructWrapperDataView::GetMapStructDataView( |
| mojo::MapDataView<TestWTFStructDataView, TestWTFStructDataView>* output) { |
| auto pointer = data_->map_struct.Get(); |
| *output = mojo::MapDataView<TestWTFStructDataView, TestWTFStructDataView>(pointer, message_); |
| } |
| |
| |
| inline void TestWTFCodeGeneration2DataView::GetStrDataView( |
| mojo::StringDataView* output) const { |
| CHECK(is_str()); |
| *output = mojo::StringDataView(data_->data.f_str.Get(), message_); |
| } |
| inline void TestWTFCodeGeneration2DataView::GetStrsDataView( |
| mojo::ArrayDataView<mojo::StringDataView>* output) const { |
| CHECK(is_strs()); |
| *output = mojo::ArrayDataView<mojo::StringDataView>(data_->data.f_strs.Get(), message_); |
| } |
| inline void TestWTFCodeGeneration2DataView::GetStrMapDataView( |
| mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>* output) const { |
| CHECK(is_str_map()); |
| *output = mojo::MapDataView<mojo::StringDataView, mojo::StringDataView>(data_->data.f_str_map.Get(), message_); |
| } |
| |
| |
| } // mojo::test |
| |
| // Declare TraceFormatTraits for enums, which should be defined in ::perfetto |
| // namespace. |
| |
| namespace perfetto { |
| |
| template <> |
| struct TraceFormatTraits<::mojo::test::TopLevelEnum> { |
| static void WriteIntoTrace(perfetto::TracedValue context, ::mojo::test::TopLevelEnum value); |
| }; |
| |
| } // namespace perfetto |
| |
| namespace perfetto { |
| |
| template <> |
| struct TraceFormatTraits<::mojo::test::TestWTFStruct_NestedEnum> { |
| static void WriteIntoTrace(perfetto::TracedValue context, ::mojo::test::TestWTFStruct_NestedEnum value); |
| }; |
| |
| } // namespace perfetto |
| |
| namespace perfetto { |
| |
| template <> |
| struct TraceFormatTraits<::mojo::test::TestWTF_NestedEnum> { |
| static void WriteIntoTrace(perfetto::TracedValue context, ::mojo::test::TestWTF_NestedEnum value); |
| }; |
| |
| } // namespace perfetto |
| |
| #endif // MOJO_PUBLIC_INTERFACES_BINDINGS_TESTS_TEST_WTF_TYPES_MOJOM_SHARED_H_
|
|
|
| /* Metadata comment
|
| eyJ0eXBlIjogImt5dGhlMCIsICJtZXRhIjogW3sidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIsICJi
|
| ZWdpbiI6IDI3MDYsICJlbmQiOiAyNzE4LCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9tIiwg
|
| ImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21pdW0v
|
| c3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJtb2pvLnRlc3QuVG9wTGV2ZWxFbnVtIn0sICJlZGdl
|
| IjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9kZWZpbmVzIiwg
|
| ImJlZ2luIjogMjc4MiwgImVuZCI6IDI3ODQsICJ2bmFtZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20i
|
| LCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1
|
| bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIm1vam8udGVzdC5Ub3BMZXZlbEVudW0uRTAifSwg
|
| ImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmlu
|
| ZXMiLCAiYmVnaW4iOiAyODQxLCAiZW5kIjogMjg0MywgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJt
|
| b2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2No
|
| cm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qby50ZXN0LlRvcExldmVsRW51bS5F
|
| MSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3Jf
|
| ZGVmaW5lcyIsICJiZWdpbiI6IDMxNjEsICJlbmQiOiAzMTg1LCAidm5hbWUiOiB7Imxhbmd1YWdl
|
| IjogIm1vam9tIiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFy
|
| Y2gvY2hyb21pdW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJtb2pvLnRlc3QuVGVzdFdURlN0
|
| cnVjdC5OZXN0ZWRFbnVtIn0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0
|
| eXBlIjogImFuY2hvcl9kZWZpbmVzIiwgImJlZ2luIjogMzI2MSwgImVuZCI6IDMyNjMsICJ2bmFt
|
| ZSI6IHsibGFuZ3VhZ2UiOiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJj
|
| ZS5jb20vY29kZXNlYXJjaC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIm1vam8u
|
| dGVzdC5UZXN0V1RGU3RydWN0Lk5lc3RlZEVudW0uRTAifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdl
|
| L2dlbmVyYXRlcyJ9LCB7InR5cGUiOiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAzMzMyLCAi
|
| ZW5kIjogMzMzNCwgInZuYW1lIjogeyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hy
|
| b21pdW0uZ29vZ2xlc291cmNlLmNvbS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJz
|
| aWduYXR1cmUiOiAibW9qby50ZXN0LlRlc3RXVEZTdHJ1Y3QuTmVzdGVkRW51bS5FMSJ9LCAiZWRn
|
| ZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVzIn0sIHsidHlwZSI6ICJhbmNob3JfZGVmaW5lcyIs
|
| ICJiZWdpbiI6IDM2ODIsICJlbmQiOiAzNzAwLCAidm5hbWUiOiB7Imxhbmd1YWdlIjogIm1vam9t
|
| IiwgImNvcnB1cyI6ICJjaHJvbWl1bS5nb29nbGVzb3VyY2UuY29tL2NvZGVzZWFyY2gvY2hyb21p
|
| dW0vc3JjLy9tYWluIiwgInNpZ25hdHVyZSI6ICJtb2pvLnRlc3QuVGVzdFdURi5OZXN0ZWRFbnVt
|
| In0sICJlZGdlIjogIiUva3l0aGUvZWRnZS9nZW5lcmF0ZXMifSwgeyJ0eXBlIjogImFuY2hvcl9k
|
| ZWZpbmVzIiwgImJlZ2luIjogMzc3MCwgImVuZCI6IDM3NzIsICJ2bmFtZSI6IHsibGFuZ3VhZ2Ui
|
| OiAibW9qb20iLCAiY29ycHVzIjogImNocm9taXVtLmdvb2dsZXNvdXJjZS5jb20vY29kZXNlYXJj
|
| aC9jaHJvbWl1bS9zcmMvL21haW4iLCAic2lnbmF0dXJlIjogIm1vam8udGVzdC5UZXN0V1RGLk5l
|
| c3RlZEVudW0uRTAifSwgImVkZ2UiOiAiJS9reXRoZS9lZGdlL2dlbmVyYXRlcyJ9LCB7InR5cGUi
|
| OiAiYW5jaG9yX2RlZmluZXMiLCAiYmVnaW4iOiAzODM1LCAiZW5kIjogMzgzNywgInZuYW1lIjog
|
| eyJsYW5ndWFnZSI6ICJtb2pvbSIsICJjb3JwdXMiOiAiY2hyb21pdW0uZ29vZ2xlc291cmNlLmNv
|
| bS9jb2Rlc2VhcmNoL2Nocm9taXVtL3NyYy8vbWFpbiIsICJzaWduYXR1cmUiOiAibW9qby50ZXN0
|
| LlRlc3RXVEYuTmVzdGVkRW51bS5FMSJ9LCAiZWRnZSI6ICIlL2t5dGhlL2VkZ2UvZ2VuZXJhdGVz
|
| In1dfQ==
|
| */ |