// Copyright (c) 2017, Apple Inc. All rights reserved.
//
// Use of this source code is governed by a BSD-3-clause license that can be
// found in LICENSE.txt or at https://opensource.org/licenses/BSD-3-Clause

syntax = "proto3";
option optimize_for = LITE_RUNTIME;

import public "DataStructures.proto";

package CoreML.Specification;

/**
 * Uses an index mapping to convert a dictionary to an array.
 *
 * The output array will be equal in length to the index mapping vector parameter.
 * All keys in the input dictionary must be present in the index mapping vector.
 *
 * For each item in the input dictionary, insert its value in the output array.
 * The position of the insertion is determined by the position of the item's key
 * in the index mapping. Any keys not present in the input dictionary, will be
 * zero in the output array.
 *
 * For example: if the ``stringToIndex`` parameter is set to ``["a", "c", "b", "z"]``,
 * then an input of ``{"a": 4, "c": 8}`` will produce an output of ``[4, 8, 0, 0]``.
 *
 */
message DictVectorizer {
    oneof Map {
        /// String keys to indexes
        StringVector stringToIndex = 1;

        /// Int keys to indexes
        Int64Vector int64ToIndex = 2;
    }
}
