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 ByteArrayBox { extend Box { required ByteArrayBox byte_array = 121; } required bytes values = 1; } message IntArrayBox { extend Box { required IntArrayBox int_array = 122; } repeated int32 values = 1 [packed = true]; } message LongArrayBox { extend Box { required LongArrayBox long_array = 123; } repeated int64 values = 1 [packed = true]; } message UnsignedIntArrayBox { extend Box { required UnsignedIntArrayBox unsigned_int_array = 124; } repeated uint32 values = 1 [packed = true]; extensions 100 to max; } message UnsignedLongArrayBox { extend Box { required UnsignedLongArrayBox unsigned_long_array = 125; } repeated uint64 values = 1 [packed = true]; } message FloatArrayBox { extend Box { required FloatArrayBox float_array = 126; } repeated float values = 1 [packed = true]; } message DoubleArrayBox { extend Box { required DoubleArrayBox double_array = 127; } repeated double values = 1 [packed = true]; } message StringArrayBox { extend Box { required StringArrayBox string_array = 128; } repeated string values = 1; } // 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; } message StorableClassBox { extend Box { required StorableClassBox storable_class = 200; } repeated uint32 key_ids = 1 [packed = true]; repeated uint32 value_ids = 2 [packed = true]; } message TypeBox { extend Box { required TypeBox type = 250; } repeated uint32 generic_type_ids = 1 [packed = true]; }