netcdf-c/libcdmr/ncStreamx.proto
2011-04-16 20:56:36 +00:00

145 lines
3.6 KiB
Protocol Buffer

package ncstream;
option config_h="true";
option include="nccrnode.h";
option java_package = "ucar.nc2.stream";
option java_outer_classname = "NcStreamProto";
enum DataType {
CHAR = 0;
BYTE = 1;
SHORT = 2;
INT = 3;
INT64 = 4;
FLOAT = 5;
DOUBLE = 6;
STRING = 7;
STRUCTURE = 8;
SEQUENCE = 9;
ENUM1 = 10;
ENUM2 = 11;
ENUM4 = 12;
OPAQUE = 13;
UBYTE = 14;
USHORT = 15;
UINT = 16;
UINT64 = 17;
}
message Attribute {
option extends="CRnode node";
required string name = 1;
required DataType type = 2;
required uint32 len = 3;
optional bytes data = 4; // not needed if len == 0
repeated string sdata = 5; // used for string data
}
message Dimension {
option extends="CRnode node";
optional string name = 1; // optional when private
optional uint64 length = 2; // optional when vlen
optional bool isUnlimited = 3 [default = false];
optional bool isVlen = 4 [default = false];
optional bool isPrivate = 5 [default = false];
}
message Variable {
option extends="CRnode node";
required string name = 1; // short name
required DataType dataType = 2;
repeated Dimension shape = 3; // actual dimension instead of reference
repeated Attribute atts = 4;
optional bool unsigned = 5 [default = false];
optional bytes data = 6; // "immediate" - store small data in header
optional string enumType = 7; // only for enum types
repeated uint32 dimIndex = 8; //index into Dimension list, use this or shape ???
}
message Structure {
option extends="CRnode node";
required string name = 1; // short name
required DataType dataType = 2; // struct or seq
repeated Dimension shape = 3; // actual dimension instead of reference
repeated Attribute atts = 4;
repeated Variable vars = 5;
repeated Structure structs = 6;
}
message EnumTypedef {
option extends="CRnode node";
message EnumType {
required uint32 code = 1;
required string value = 2;
}
required string name = 1;
repeated EnumType map = 2;
}
message Group {
option extends="CRnode node";
required string name = 1;
repeated Dimension dims = 2;
repeated Variable vars = 3;
repeated Structure structs = 4;
repeated Attribute atts = 5;
repeated Group groups = 6;
repeated EnumTypedef enumTypes = 7;
}
message Header {
option extends="CRnode node";
optional string location = 1;
optional string title = 2;
optional string id = 3;
required Group root = 4;
optional uint32 version = 5 [default = 0];
}
//////////////////////////////////
enum Compress {
NONE = 0;
DEFLATE = 1;
}
message Data {
option extends="CRnode node";
required string varName = 1; // change to hash or index to save space ??
required DataType dataType = 2;
optional Section section = 3; // not required for Sequence
optional bool bigend = 4 [default = true];
optional uint32 version = 5 [default = 0];
optional Compress compress = 6 [default = NONE];
optional fixed32 crc32 = 7;
}
message Range {
option extends="CRnode node";
optional uint64 start = 1 [default = 0];
required uint64 size = 2;
optional uint64 stride = 3 [default = 1];
}
message Section {
option extends="CRnode node";
repeated Range range = 1;
}
message StructureData {
option extends="CRnode node";
repeated uint32 member = 1; // optional list of members present
required bytes data = 2; // fixed length data
repeated uint32 heapCount = 3; // heap String count
repeated string sdata = 4; // Strings
optional uint64 nrows = 5 [default = 1];
}
//////////////////////////////////
message Error {
option extends="CRnode node";
required string message = 1;
}