xdrgen 0.1.5

XDR codec generator from specification and runtime library

// GENERATED CODE
//
// Generated from arry.x.
//
// DO NOT EDIT


#[derive(Debug, Eq, PartialEq, Clone)]
pub struct foo {
    pub blop: [i32; 2i64 as usize],
}

#[derive(Debug, Eq, PartialEq, Clone)]
pub enum u { Const0([i32; 2i64 as usize]), }

impl <Out: xdr_codec::Write> xdr_codec::Pack<Out> for foo {
    fn pack(&self, out: &mut Out) -> xdr_codec::Result<usize> {
        Ok(try!(xdr_codec:: pack_array ( & self . blop , out )) + 0)
    }
}

impl <Out: xdr_codec::Write> xdr_codec::Pack<Out> for u {
    #[inline]
    fn pack(&self, out: &mut Out) -> xdr_codec::Result<usize> {
        Ok(match self {
               &u::Const0(ref val) =>
               try!(0i64 . pack ( out )) +
                   try!(xdr_codec:: pack_array ( val , out )),
           })
    }
}

impl <In: xdr_codec::Read> xdr_codec::Unpack<In> for foo {
    fn unpack(input: &mut In) -> xdr_codec::Result<(foo, usize)> {
        let mut sz = 0;
        Ok((foo{blop:
                    {
                        let (v, fsz) =
                            {
                                let mut asz = 0;
                                let v =
                                    [{
                                         let (v, esz) =
                                             try!(xdr_codec:: Unpack:: unpack
                                                  ( input ));
                                         asz += esz;
                                         v
                                     },
                                     {
                                         let (v, esz) =
                                             try!(xdr_codec:: Unpack:: unpack
                                                  ( input ));
                                         asz += esz;
                                         v
                                     }];
                                (v, asz)
                            };
                        sz += fsz;
                        v
                    },}, sz))
    }
}

impl <In: xdr_codec::Read> xdr_codec::Unpack<In> for u {
    #[inline]
    fn unpack(input: &mut In) -> xdr_codec::Result<(u, usize)> {
        let mut sz = 0;
        Ok((match {
                      let (v, dsz) =
                          try!(xdr_codec:: Unpack:: unpack ( input ));
                      sz += dsz;
                      v
                  } {
                0i32 =>
                u::Const0({
                              let (v, csz) =
                                  try!(xdr_codec:: Unpack:: unpack ( input ));
                              sz += csz;
                              v
                          }),
                _ => return Err(xdr_codec::Error::invalidcase()),
            }, sz))
    }
}