// 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 "FeatureTypes.proto";

package CoreML.Specification;

/**
 * A mapping from a string
 * to a 64-bit integer.
 */
message StringToInt64Map {
    map<string, int64> map = 1;
}

/**
 * A mapping from a 64-bit integer
 * to a string.
 */
message Int64ToStringMap {
    map<int64, string> map = 1;
}

/**
 * A mapping from a string
 * to a double-precision floating point number.
 */
message StringToDoubleMap {
    map<string, double> map = 1;
}

/**
 * A mapping from a 64-bit integer
 * to a double-precision floating point number.
 */
message Int64ToDoubleMap {
    map<int64, double> map = 1;
}

/**
 * A vector of strings.
 */
message StringVector {
    repeated string vector = 1;
}

/**
 * A vector of 64-bit integers.
 */
message Int64Vector {
    repeated int64 vector = 1;
}

/**
 * A vector of floating point numbers.
 */
message FloatVector {
    repeated float vector = 1;
}

/**
 * A vector of double-precision floating point numbers.
 */
message DoubleVector {
    repeated double vector = 1;
}

/**
 * A range of int64 values
 */
message Int64Range {
    int64 minValue = 1;
    int64 maxValue = 2;
}

/**
 * A set of int64 values
 */
message Int64Set {
    repeated int64 values = 1;
}

/**
 * A range of double values
 */
message DoubleRange {
    double minValue = 1;
    double maxValue = 2;
}

