1 // Copyright 2018 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "media/learning/mojo/public/cpp/learning_mojom_traits.h" 6 7 namespace mojo { 8 9 // static 10 bool StructTraits<media::learning::mojom::LabelledExampleDataView, 11 media::learning::LabelledExample>:: Read(media::learning::mojom::LabelledExampleDataView data,media::learning::LabelledExample * out_example)12 Read(media::learning::mojom::LabelledExampleDataView data, 13 media::learning::LabelledExample* out_example) { 14 out_example->features.clear(); 15 if (!data.ReadFeatures(&out_example->features)) 16 return false; 17 18 if (!data.ReadTargetValue(&out_example->target_value)) 19 return false; 20 21 return true; 22 } 23 24 // static 25 bool StructTraits<media::learning::mojom::FeatureValueDataView, 26 media::learning::FeatureValue>:: Read(media::learning::mojom::FeatureValueDataView data,media::learning::FeatureValue * out_feature_value)27 Read(media::learning::mojom::FeatureValueDataView data, 28 media::learning::FeatureValue* out_feature_value) { 29 *out_feature_value = media::learning::FeatureValue(data.value()); 30 return true; 31 } 32 33 // static 34 bool StructTraits<media::learning::mojom::TargetValueDataView, 35 media::learning::TargetValue>:: Read(media::learning::mojom::TargetValueDataView data,media::learning::TargetValue * out_target_value)36 Read(media::learning::mojom::TargetValueDataView data, 37 media::learning::TargetValue* out_target_value) { 38 *out_target_value = media::learning::TargetValue(data.value()); 39 return true; 40 } 41 42 // static 43 bool StructTraits<media::learning::mojom::ObservationCompletionDataView, 44 media::learning::ObservationCompletion>:: Read(media::learning::mojom::ObservationCompletionDataView data,media::learning::ObservationCompletion * out_observation_completion)45 Read(media::learning::mojom::ObservationCompletionDataView data, 46 media::learning::ObservationCompletion* out_observation_completion) { 47 if (!data.ReadTargetValue(&out_observation_completion->target_value)) 48 return false; 49 out_observation_completion->weight = data.weight(); 50 return true; 51 } 52 53 // static 54 bool StructTraits<media::learning::mojom::TargetHistogramPairDataView, 55 media::learning::TargetHistogramPair>:: Read(media::learning::mojom::TargetHistogramPairDataView data,media::learning::TargetHistogramPair * out_pair)56 Read(media::learning::mojom::TargetHistogramPairDataView data, 57 media::learning::TargetHistogramPair* out_pair) { 58 if (!data.ReadTargetValue(&out_pair->target_value)) 59 return false; 60 out_pair->count = data.count(); 61 return true; 62 } 63 64 // static 65 bool StructTraits<media::learning::mojom::TargetHistogramDataView, 66 media::learning::TargetHistogram>:: Read(media::learning::mojom::TargetHistogramDataView data,media::learning::TargetHistogram * out_target_histogram)67 Read(media::learning::mojom::TargetHistogramDataView data, 68 media::learning::TargetHistogram* out_target_histogram) { 69 ArrayDataView<media::learning::mojom::TargetHistogramPairDataView> pairs; 70 data.GetPairsDataView(&pairs); 71 if (pairs.is_null()) 72 return false; 73 74 for (size_t i = 0; i < pairs.size(); ++i) { 75 media::learning::mojom::TargetHistogramPairDataView pair_data; 76 pairs.GetDataView(i, &pair_data); 77 media::learning::TargetValue value; 78 if (!pair_data.ReadTargetValue(&value)) 79 return false; 80 81 out_target_histogram->counts_.emplace(std::move(value), pair_data.count()); 82 } 83 84 return true; 85 } 86 87 } // namespace mojo 88