use bytes::{Buf, BufMut};
use DecodeError;
use Message;
use encoding::*;
impl Message for bool {
fn encode_raw<B>(&self, buf: &mut B) where B: BufMut {
if *self {
bool::encode(1, self, buf)
}
}
fn merge_field<B>(&mut self, buf: &mut B) -> Result<(), DecodeError> where B: Buf {
let (tag, wire_type) = decode_key(buf)?;
if tag == 1 {
bool::merge(wire_type, self, buf)
} else {
skip_field(wire_type, buf)
}
}
fn encoded_len(&self) -> usize {
if *self { 2 } else { 0 }
}
fn clear(&mut self) {
*self = false;
}
}
impl Message for u32 {
fn encode_raw<B>(&self, buf: &mut B) where B: BufMut {
if *self != 0 {
uint32::encode(1, self, buf)
}
}
fn merge_field<B>(&mut self, buf: &mut B) -> Result<(), DecodeError> where B: Buf {
let (tag, wire_type) = decode_key(buf)?;
if tag == 1 {
uint32::merge(wire_type, self, buf)
} else {
skip_field(wire_type, buf)
}
}
fn encoded_len(&self) -> usize {
if *self != 0 { uint32::encoded_len(1, self) } else { 0 }
}
fn clear(&mut self) {
*self = 0;
}
}
impl Message for u64 {
fn encode_raw<B>(&self, buf: &mut B) where B: BufMut {
if *self != 0 {
uint64::encode(1, self, buf)
}
}
fn merge_field<B>(&mut self, buf: &mut B) -> Result<(), DecodeError> where B: Buf {
let (tag, wire_type) = decode_key(buf)?;
if tag == 1 {
uint64::merge(wire_type, self, buf)
} else {
skip_field(wire_type, buf)
}
}
fn encoded_len(&self) -> usize {
if *self != 0 { uint64::encoded_len(1, self) } else { 0 }
}
fn clear(&mut self) {
*self = 0;
}
}
impl Message for i32 {
fn encode_raw<B>(&self, buf: &mut B) where B: BufMut {
if *self != 0 {
int32::encode(1, self, buf)
}
}
fn merge_field<B>(&mut self, buf: &mut B) -> Result<(), DecodeError> where B: Buf {
let (tag, wire_type) = decode_key(buf)?;
if tag == 1 {
int32::merge(wire_type, self, buf)
} else {
skip_field(wire_type, buf)
}
}
fn encoded_len(&self) -> usize {
if *self != 0 { int32::encoded_len(1, self) } else { 0 }
}
fn clear(&mut self) {
*self = 0;
}
}
impl Message for i64 {
fn encode_raw<B>(&self, buf: &mut B) where B: BufMut {
if *self != 0 {
int64::encode(1, self, buf)
}
}
fn merge_field<B>(&mut self, buf: &mut B) -> Result<(), DecodeError> where B: Buf {
let (tag, wire_type) = decode_key(buf)?;
if tag == 1 {
int64::merge(wire_type, self, buf)
} else {
skip_field(wire_type, buf)
}
}
fn encoded_len(&self) -> usize {
if *self != 0 { int64::encoded_len(1, self) } else { 0 }
}
fn clear(&mut self) {
*self = 0;
}
}
impl Message for f32 {
fn encode_raw<B>(&self, buf: &mut B) where B: BufMut {
if *self != 0.0 {
float::encode(1, self, buf)
}
}
fn merge_field<B>(&mut self, buf: &mut B) -> Result<(), DecodeError> where B: Buf {
let (tag, wire_type) = decode_key(buf)?;
if tag == 1 {
float::merge(wire_type, self, buf)
} else {
skip_field(wire_type, buf)
}
}
fn encoded_len(&self) -> usize {
if *self != 0.0 { float::encoded_len(1, self) } else { 0 }
}
fn clear(&mut self) {
*self = 0.0;
}
}
impl Message for f64 {
fn encode_raw<B>(&self, buf: &mut B) where B: BufMut {
if *self != 0.0 {
double::encode(1, self, buf)
}
}
fn merge_field<B>(&mut self, buf: &mut B) -> Result<(), DecodeError> where B: Buf {
let (tag, wire_type) = decode_key(buf)?;
if tag == 1 {
double::merge(wire_type, self, buf)
} else {
skip_field(wire_type, buf)
}
}
fn encoded_len(&self) -> usize {
if *self != 0.0 { double::encoded_len(1, self) } else { 0 }
}
fn clear(&mut self) {
*self = 0.0;
}
}
impl Message for String {
fn encode_raw<B>(&self, buf: &mut B) where B: BufMut {
if !self.is_empty() {
string::encode(1, self, buf)
}
}
fn merge_field<B>(&mut self, buf: &mut B) -> Result<(), DecodeError> where B: Buf {
let (tag, wire_type) = decode_key(buf)?;
if tag == 1 {
string::merge(wire_type, self, buf)
} else {
skip_field(wire_type, buf)
}
}
fn encoded_len(&self) -> usize {
if !self.is_empty() { string::encoded_len(1, self) } else { 0 }
}
fn clear(&mut self) {
self.clear();
}
}
impl Message for Vec<u8> {
fn encode_raw<B>(&self, buf: &mut B) where B: BufMut {
if !self.is_empty() {
bytes::encode(1, self, buf)
}
}
fn merge_field<B>(&mut self, buf: &mut B) -> Result<(), DecodeError> where B: Buf {
let (tag, wire_type) = decode_key(buf)?;
if tag == 1 {
bytes::merge(wire_type, self, buf)
} else {
skip_field(wire_type, buf)
}
}
fn encoded_len(&self) -> usize {
if !self.is_empty() { bytes::encoded_len(1, self) } else { 0 }
}
fn clear(&mut self) {
self.clear();
}
}
impl Message for () {
fn encode_raw<B>(&self, _buf: &mut B) where B: BufMut { }
fn merge_field<B>(&mut self, buf: &mut B) -> Result<(), DecodeError> where B: Buf {
let (_, wire_type) = decode_key(buf)?;
skip_field(wire_type, buf)
}
fn encoded_len(&self) -> usize { 0 }
fn clear(&mut self) { }
}