// 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.

// Datatypes used in the Machine Learning API.
// This module is derived from the Feature proto definition of TensorFlow.
// See /tensorflow/core/example/feature.proto in the TensorFlow code.

// NOTE: This mojom exists in two places and must be kept in sync:
//       Chromium:  //chromeos/services/machine_learning/public/mojom/
//       Chrome OS: src/platform2/ml/mojom/
//       Note: Other repos downstream of Chromium might also use this mojom.
// Example: A backwards-compatible mojom change (and corresponding
// implementation change) can be made in Chrome OS first, then replicated to the
// clients (Chromium, other downstream repos) later.
// Use //chromeos/services/machine_learning/public/mojom/roll_mojom.sh to help
// replicate Chrome OS-side changes over to Chromium.

module chromeos.machine_learning.mojom;

struct StringList {
  array<string> value;
};

struct FloatList {
  array<double> value;
};

struct Int64List {
  array<int64> value;
};

// The union of all supported tensor types. Supporting a new type comprises the
// following:
//  - Adding a new struct above (e.g. BoolList),
//  - Adding this new struct to the union below,
//  - Adding template specializations for the new type to
//    platform2/ml/tensor_view.{h,cc}.
//  - Updating platform2/ml/graph_executor_impl.cc to use a TensorView of the
//    new type.
//
// TODO(chromium:836098): add new types (e.g. uint8, bool) as they become
//                        useful.
union ValueList {
  StringList string_list;
  FloatList float_list;
  Int64List int64_list;
};

// A Tensor is a multi-dimensional array with dimensions `shape`, flattened into
// the one-dimensional array `data`.
// It is used for both the inputs (in the form of a map<string, Tensor>) and
// outputs (in the form of an array<Tensor>) of ML inference.
struct Tensor {
  ValueList data;

  // Each integer is the size of that dimension.
  Int64List shape;
};
