Add EnumDescriptorProto and clap dependency
This commit is contained in:
@@ -254,6 +254,67 @@ impl<'b> DescriptorProtoBuilder<'b> {
|
||||
}
|
||||
}
|
||||
|
||||
pub struct EnumDescriptorProto<'a>(ProtoAccessor<'a>);
|
||||
|
||||
impl<'a> EnumDescriptorProto<'a> {
|
||||
pub fn new(data: &'a [u8]) -> Result<Self> {
|
||||
Ok(Self(ProtoAccessor::new(data)?))
|
||||
}
|
||||
|
||||
pub fn name(&self) -> Result<&'a str> {
|
||||
let (bytes, _) = self.0.get_value(1)?;
|
||||
str::from_utf8(bytes).map_err(|_| RotoError::WireFormatViolation)
|
||||
}
|
||||
|
||||
pub fn enum_value(&self) -> crate::RepeatedFieldIterator<'a> {
|
||||
self.0.iter_repeated(2)
|
||||
}
|
||||
|
||||
pub fn reserved_value(&self) -> crate::RepeatedFieldIterator<'a> {
|
||||
self.0.iter_repeated(3)
|
||||
}
|
||||
|
||||
pub fn options(&self) -> crate::RepeatedFieldIterator<'a> {
|
||||
self.0.iter_repeated(4)
|
||||
}
|
||||
|
||||
pub fn builder(buf: &mut [u8]) -> EnumDescriptorProtoBuilder<'_> {
|
||||
EnumDescriptorProtoBuilder {
|
||||
builder: ProtoBuilder::new(buf),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct EnumDescriptorProtoBuilder<'b> {
|
||||
builder: ProtoBuilder<'b>,
|
||||
}
|
||||
|
||||
impl<'b> EnumDescriptorProtoBuilder<'b> {
|
||||
pub fn name(mut self, value: &str) -> Result<Self> {
|
||||
self.builder.write_string(1, value)?;
|
||||
Ok(self)
|
||||
}
|
||||
|
||||
pub fn add_enum_value(mut self, data: &[u8]) -> Result<Self> {
|
||||
self.builder.write_bytes(2, data)?;
|
||||
Ok(self)
|
||||
}
|
||||
|
||||
pub fn add_reserved_value(mut self, value: i32) -> Result<Self> {
|
||||
self.builder.write_int32(3, value)?;
|
||||
Ok(self)
|
||||
}
|
||||
|
||||
pub fn add_options(mut self, data: &[u8]) -> Result<Self> {
|
||||
self.builder.write_bytes(4, data)?;
|
||||
Ok(self)
|
||||
}
|
||||
|
||||
pub fn finish(self) -> Result<&'b mut [u8]> {
|
||||
self.builder.finish()
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
pub enum FieldType {
|
||||
Double = 1,
|
||||
|
||||
Reference in New Issue
Block a user