// 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. #include "mojo/public/cpp/bindings/tests/struct_with_traits_impl_traits.h" namespace mojo { // static int32_t StructTraits:: value(const test::NestedStructWithTraitsImpl& input) { return input.value; } // static bool StructTraits:: Read(test::NestedStructWithTraits::DataView data, test::NestedStructWithTraitsImpl* output) { output->value = data.value(); return true; } test::EnumWithTraits EnumTraits::ToMojom( test::EnumWithTraitsImpl input) { switch (input) { case test::EnumWithTraitsImpl::CUSTOM_VALUE_0: return test::EnumWithTraits::VALUE_0; case test::EnumWithTraitsImpl::CUSTOM_VALUE_1: return test::EnumWithTraits::VALUE_1; }; NOTREACHED(); return test::EnumWithTraits::VALUE_0; } bool EnumTraits::FromMojom( test::EnumWithTraits input, test::EnumWithTraitsImpl* output) { switch (input) { case test::EnumWithTraits::VALUE_0: *output = test::EnumWithTraitsImpl::CUSTOM_VALUE_0; return true; case test::EnumWithTraits::VALUE_1: *output = test::EnumWithTraitsImpl::CUSTOM_VALUE_1; return true; }; return false; } // static bool StructTraits:: Read(test::StructWithTraits::DataView data, test::StructWithTraitsImpl* out) { test::EnumWithTraitsImpl f_enum; if (!data.ReadFEnum(&f_enum)) return false; out->set_enum(f_enum); out->set_bool(data.f_bool()); out->set_uint32(data.f_uint32()); out->set_uint64(data.f_uint64()); base::StringPiece f_string; std::string f_string2; if (!data.ReadFString(&f_string) || !data.ReadFString2(&f_string2) || f_string != f_string2) { return false; } out->set_string(f_string2); if (!data.ReadFStringArray(&out->get_mutable_string_array())) return false; // We can't deserialize as a std::set, so we have to manually copy from the // data view. ArrayDataView string_set_data_view; data.GetFStringSetDataView(&string_set_data_view); for (size_t i = 0; i < string_set_data_view.size(); ++i) { std::string value; string_set_data_view.Read(i, &value); out->get_mutable_string_set().insert(value); } if (!data.ReadFStruct(&out->get_mutable_struct())) return false; if (!data.ReadFStructArray(&out->get_mutable_struct_array())) return false; if (!data.ReadFStructMap(&out->get_mutable_struct_map())) return false; return true; } // static bool StructTraits:: Read(test::MoveOnlyStructWithTraits::DataView data, test::MoveOnlyStructWithTraitsImpl* out) { out->get_mutable_handle() = data.TakeFHandle(); return true; } } // namespace mojo