use prost::{Enumeration, Message};
#[derive(Clone, PartialEq, Message)]
pub struct ModelProto {
#[prost(int64, optional, tag = "1")]
pub ir_version: Option<i64>,
#[prost(message, repeated, tag = "8")]
pub opset_import: Vec<OperatorSetIdProto>,
#[prost(string, optional, tag = "2")]
pub producer_name: Option<String>,
#[prost(string, optional, tag = "3")]
pub producer_version: Option<String>,
#[prost(string, optional, tag = "4")]
pub domain: Option<String>,
#[prost(int64, optional, tag = "5")]
pub model_version: Option<i64>,
#[prost(string, optional, tag = "6")]
pub doc_string: Option<String>,
#[prost(message, optional, tag = "7")]
pub graph: Option<GraphProto>,
}
#[derive(Clone, PartialEq, Message)]
pub struct GraphProto {
#[prost(message, repeated, tag = "1")]
pub node: Vec<NodeProto>,
#[prost(string, optional, tag = "2")]
pub name: Option<String>,
#[prost(message, repeated, tag = "5")]
pub initializer: Vec<TensorProto>,
#[prost(message, repeated, tag = "13")]
pub value_info: Vec<ValueInfoProto>,
#[prost(message, repeated, tag = "11")]
pub input: Vec<ValueInfoProto>,
#[prost(message, repeated, tag = "12")]
pub output: Vec<ValueInfoProto>,
}
#[derive(Clone, PartialEq, Message)]
pub struct NodeProto {
#[prost(string, repeated, tag = "1")]
pub input: Vec<String>,
#[prost(string, repeated, tag = "2")]
pub output: Vec<String>,
#[prost(string, optional, tag = "3")]
pub name: Option<String>,
#[prost(string, optional, tag = "4")]
pub op_type: Option<String>,
#[prost(message, repeated, tag = "5")]
pub attribute: Vec<AttributeProto>,
}
#[derive(Clone, PartialEq, Message)]
pub struct TensorProto {
#[prost(int64, repeated, tag = "1")]
pub dims: Vec<i64>,
#[prost(int32, optional, tag = "2")]
pub data_type: Option<i32>,
#[prost(string, optional, tag = "8")]
pub name: Option<String>,
#[prost(bytes, optional, tag = "9")]
pub raw_data: Option<Vec<u8>>,
#[prost(float, repeated, packed = "false", tag = "4")]
pub float_data: Vec<f32>,
#[prost(int32, repeated, packed = "false", tag = "5")]
pub int32_data: Vec<i32>,
#[prost(int64, repeated, packed = "false", tag = "7")]
pub int64_data: Vec<i64>,
}
#[derive(Clone, PartialEq, Message)]
pub struct ValueInfoProto {
#[prost(string, optional, tag = "1")]
pub name: Option<String>,
#[prost(message, optional, tag = "2")]
pub r#type: Option<TypeProto>,
#[prost(string, optional, tag = "3")]
pub doc_string: Option<String>,
}
#[derive(Clone, PartialEq, Message)]
pub struct TypeProto {
#[prost(oneof = "type_proto::Value", tags = "1")]
pub value: Option<type_proto::Value>,
}
pub mod type_proto {
use prost::{Message, Oneof};
#[derive(Clone, PartialEq, Oneof)]
pub enum Value {
#[prost(message, tag = "1")]
TensorType(Tensor),
}
#[derive(Clone, PartialEq, Message)]
pub struct Tensor {
#[prost(int32, optional, tag = "1")]
pub elem_type: Option<i32>,
#[prost(message, optional, tag = "2")]
pub shape: Option<super::TensorShapeProto>,
}
}
#[derive(Clone, PartialEq, Message)]
pub struct TensorShapeProto {
#[prost(message, repeated, tag = "1")]
pub dim: Vec<tensor_shape_proto::Dimension>,
}
pub mod tensor_shape_proto {
use prost::{Message, Oneof};
#[derive(Clone, PartialEq, Message)]
pub struct Dimension {
#[prost(oneof = "dimension::Value", tags = "1, 2")]
pub value: Option<dimension::Value>,
}
pub mod dimension {
use prost::Oneof;
#[derive(Clone, PartialEq, Oneof)]
pub enum Value {
#[prost(int64, tag = "1")]
DimValue(i64),
#[prost(string, tag = "2")]
DimParam(String),
}
}
}
#[derive(Clone, PartialEq, Message)]
pub struct AttributeProto {
#[prost(string, optional, tag = "1")]
pub name: Option<String>,
#[prost(string, optional, tag = "13")]
pub doc_string: Option<String>,
#[prost(enumeration = "AttributeType", optional, tag = "20")]
pub r#type: Option<i32>,
#[prost(float, optional, tag = "2")]
pub f: Option<f32>,
#[prost(int64, optional, tag = "3")]
pub i: Option<i64>,
#[prost(bytes, optional, tag = "4")]
pub s: Option<Vec<u8>>,
#[prost(message, optional, tag = "5")]
pub t: Option<TensorProto>,
#[prost(float, repeated, packed = "false", tag = "6")]
pub floats: Vec<f32>,
#[prost(int64, repeated, packed = "false", tag = "7")]
pub ints: Vec<i64>,
#[prost(bytes, repeated, tag = "8")]
pub strings: Vec<Vec<u8>>,
}
#[derive(Clone, PartialEq, Message)]
pub struct OperatorSetIdProto {
#[prost(string, optional, tag = "1")]
pub domain: Option<String>,
#[prost(int64, optional, tag = "2")]
pub version: Option<i64>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Enumeration)]
#[repr(i32)]
pub enum TensorDataType {
Undefined = 0,
Float = 1,
Uint8 = 2,
Int8 = 3,
Uint16 = 4,
Int16 = 5,
Int32 = 6,
Int64 = 7,
String = 8,
Bool = 9,
Float16 = 10,
Double = 11,
Uint32 = 12,
Uint64 = 13,
Complex64 = 14,
Complex128 = 15,
Bfloat16 = 16,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, Enumeration)]
#[repr(i32)]
pub enum AttributeType {
Undefined = 0,
Float = 1,
Int = 2,
String = 3,
Tensor = 4,
Graph = 5,
SparseTensor = 11,
TypeProto = 13,
Floats = 6,
Ints = 7,
Strings = 8,
Tensors = 9,
Graphs = 10,
SparseTensors = 12,
TypeProtos = 14,
}