blob: 9756815ba6bc213fdd3dff12ff6c6ce8e38d4b7e [file] [log] [blame]
// Copyright 2018 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 "media/learning/mojo/public/cpp/learning_mojom_traits.h"
namespace mojo {
// static
bool StructTraits<media::learning::mojom::LabelledExampleDataView,
media::learning::LabelledExample>::
Read(media::learning::mojom::LabelledExampleDataView data,
media::learning::LabelledExample* out_example) {
out_example->features.clear();
if (!data.ReadFeatures(&out_example->features))
return false;
if (!data.ReadTargetValue(&out_example->target_value))
return false;
return true;
}
// static
bool StructTraits<media::learning::mojom::FeatureValueDataView,
media::learning::FeatureValue>::
Read(media::learning::mojom::FeatureValueDataView data,
media::learning::FeatureValue* out_feature_value) {
*out_feature_value = media::learning::FeatureValue(data.value());
return true;
}
// static
bool StructTraits<media::learning::mojom::TargetValueDataView,
media::learning::TargetValue>::
Read(media::learning::mojom::TargetValueDataView data,
media::learning::TargetValue* out_target_value) {
*out_target_value = media::learning::TargetValue(data.value());
return true;
}
// static
bool StructTraits<media::learning::mojom::ObservationCompletionDataView,
media::learning::ObservationCompletion>::
Read(media::learning::mojom::ObservationCompletionDataView data,
media::learning::ObservationCompletion* out_observation_completion) {
if (!data.ReadTargetValue(&out_observation_completion->target_value))
return false;
out_observation_completion->weight = data.weight();
return true;
}
// static
bool StructTraits<media::learning::mojom::TargetHistogramPairDataView,
media::learning::TargetHistogramPair>::
Read(media::learning::mojom::TargetHistogramPairDataView data,
media::learning::TargetHistogramPair* out_pair) {
if (!data.ReadTargetValue(&out_pair->target_value))
return false;
out_pair->count = data.count();
return true;
}
// static
bool StructTraits<media::learning::mojom::TargetHistogramDataView,
media::learning::TargetHistogram>::
Read(media::learning::mojom::TargetHistogramDataView data,
media::learning::TargetHistogram* out_target_histogram) {
ArrayDataView<media::learning::mojom::TargetHistogramPairDataView> pairs;
data.GetPairsDataView(&pairs);
if (pairs.is_null())
return false;
for (size_t i = 0; i < pairs.size(); ++i) {
media::learning::mojom::TargetHistogramPairDataView pair_data;
pairs.GetDataView(i, &pair_data);
media::learning::TargetValue value;
if (!pair_data.ReadTargetValue(&value))
return false;
out_target_histogram->counts_.emplace(std::move(value), pair_data.count());
}
return true;
}
} // namespace mojo