syntax = "proto2";

// generate java: protoc -I=/absolute_path/feathr/src/main/protobuf/ --java_out=/absolute_path/feathr/src/main/java/com/linkedin/feathr/common/types/ featureValue.proto
// generate python: protoc -I=/absolute_path/feathr/src/main/protobuf/ --python_out=/absolute_path/feathr/feathr_project/feathr/protobuf/ featureValue.proto


package protobuf;
option java_package= "com.linkedin.feathr.common.types.protobuf";


message FeatureValue {
    oneof FeatureValueOneOf {
        bool boolean_value = 1;
        string string_value = 2;
        float float_value = 3;
        double double_value = 4;
        int32 int_value = 5;
        int64 long_value = 6;
        BooleanArray boolean_array = 10;
        StringArray string_array = 11;
        FloatArray float_array = 12;
        DoubleArray double_array = 13;
        IntegerArray int_array = 14;
        LongArray long_array = 15;
        BytesArray byte_array = 16;
        SparseStringArray sparse_string_array = 20;
        SparseBoolArray sparse_bool_array = 21;
        SparseIntegerArray sparse_integer_array = 22;
        SparseLongArray sparse_long_array = 23;
        SparseDoubleArray sparse_double_array = 24;
        SparseFloatArray sparse_float_array = 25;
    }
}

message BooleanArray {
    repeated bool booleans=1;
}

message StringArray {
    repeated string strings=1;
}

message DoubleArray {
    repeated double doubles=1;
}

message FloatArray {
    repeated float floats=1;
}

message IntegerArray {
    repeated int32 integers=1;
}

message LongArray {
    repeated int64 longs=1;
}

message BytesArray {
    repeated bytes bytes=1;
}


message SparseStringArray {
    repeated int32 index_integers=1;
    repeated string value_strings=2;
}

message SparseBoolArray {
    repeated int32 index_integers=1;
    repeated bool value_booleans=2;
}

message SparseIntegerArray {
    repeated int32 index_integers=1;
    repeated int32 value_integers=2;
}

message SparseLongArray {
    repeated int32 index_integers=1;
    repeated int64 value_longs=2;
}

message SparseDoubleArray {
    repeated int32 index_integers=1;
    repeated double value_doubles=2;
}

message SparseFloatArray {
    repeated int32 index_integers=1;
    repeated float value_floats=2;
}
