package HeuristicLab.Persistence; message Bundle { repeated bytes transformer_guids = 1; repeated bytes type_guids = 2; repeated string strings = 3; repeated Box boxes = 4; required uint32 root_box_id = 5; } message Box { optional uint32 transformer_id = 1; optional uint32 type_id = 2; extensions 100 to max; } // scalar boxes message BoolBox { extend Box { required BoolBox bool = 100; } required bool value = 1; } message IntBox { extend Box { required IntBox int = 101; } required int32 value = 1; } message LongBox { extend Box { required LongBox long = 102; } required int64 value = 1; } message UnsignedIntBox { extend Box { required UnsignedIntBox unsigned_int = 103; } required uint32 value = 1; } message UnsignedLongBox { extend Box { required UnsignedLongBox unsigned_long = 104; } required uint64 value = 1; } message FloatBox { extend Box { required FloatBox float = 105; } required float value = 1; } message DoubleBox { extend Box { required DoubleBox double = 106; } required double value = 1; } message StringBox { extend Box { required StringBox string = 107; } required string value = 1; } message BytesBox { extend Box { required BytesBox bytes = 108; } required bytes value = 1; } // array boxes message BoolArrayBox { extend Box { required BoolArrayBox bool_array = 120; } repeated bool values = 1 [packed = true]; } message IntArrayBox { extend Box { required IntArrayBox int_array = 121; } repeated int32 values = 1 [packed = true]; } // matrix boxes message MatrixBox { extend Box { required MatrixBox matrix = 140; } optional uint32 element_type_id = 1; repeated uint32 lengths = 2 [packed = true]; extensions 100 to max; } message BoolMatrixBox { extend MatrixBox { required BoolMatrixBox bool_matrix = 100; } repeated bool values = 1 [packed = true]; } message IntMatrixBox { extend MatrixBox { required IntMatrixBox int_matrix = 101; } repeated int32 values = 1 [packed = true]; } // composite boxes message DictionaryBox { extend Box { required DictionaryBox dictionary = 160; } repeated uint32 key_ids = 1 [packed = true]; repeated uint32 value_ids = 2 [packed = true]; required uint32 comparer_id = 3; }