123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172 |
- #[macro_export]
- macro_rules! get_handle_from_ptr {
- ($hptr:ident as $hval:ident) => {
- if $hptr.is_null() {
- return ZRFUErrNo::Generic_NullPointerHandle.get_return_code()
- };
- let $hval = unsafe { $hptr.read() };
- }
- }
- #[macro_export]
- macro_rules! define_err_enum {
- ($( $behv:ident for $prefix:ident as $name:ident ), * ) => {
- #[allow(non_camel_case_types)]
- #[derive(Debug, TryFromPrimitive, IntoPrimitive, Display)]
- #[repr(u32)]
- pub enum ZRFUErrNo {
- OK = 0x00000000,
- Unknown = 0x4000FFFF,
- $(
- $name = ZRFUErrPrefix::$prefix.define(ZRFUErrBehavior::$behv),
- )*
- }
- }
- }
- #[macro_export]
- macro_rules! proc_def_ar {
- ( $proc_name:ident ($args_type:ty as $argname:ident ; $ret_type:ty as $retname:ident) $code:block ) => {
- pub struct $proc_name {
- proc_name: String,
- args: ZRFUProcArgs<$args_type>,
- ret: ZRFUProcReturn<$ret_type>,
- }
- impl ZRFUProcInstanceTrait for $proc_name {
- fn decode_input(&mut self, bv: &mut ZRFUBytesVec) -> ZRFUProcResultCode {
- self.args.cbor_deserialize(bv)
- }
- fn call(&mut self) -> ZRFUProcResultCode {
- let $argname = match self.args.get_data() {
- None => { return ZRFUProcResultCode::CanNotGetArgs; },
- Some(t) => t,
- };
- $code;
- self.ret.set_data($retname);
- return ZRFUProcResultCode::Ok;
- }
- fn encode_return(&mut self, bv: &mut ZRFUBytesVec) -> ZRFUProcResultCode {
- self.ret.cbor_serialize(bv)
- }
- }
- impl $proc_name {
- fn factory(name: String) -> Box<dyn ZRFUProcInstanceTrait> {
- Box::new($proc_name{
- proc_name: name,
- args: ZRFUProcArgs::new(),
- ret: ZRFUProcReturn::new(),
- })
- }
- }
- };
- }
- #[macro_export]
- macro_rules! proc_def_a {
- ( $proc_name:ident ($args_type:ty as $argname:ident) $code:block ) => {
- pub struct $proc_name {
- proc_name: String,
- args: ZRFUProcArgs<$args_type>,
- }
- impl ZRFUProcInstanceTrait for $proc_name {
- fn decode_input(&mut self, bv: &mut ZRFUBytesVec) -> ZRFUProcResultCode {
- self.args.cbor_deserialize(bv)
- }
- fn call(&mut self) -> ZRFUProcResultCode {
- let $argname = match self.args.get_data() {
- None => { return ZRFUProcResultCode::CanNotGetArgs; },
- Some(t) => t,
- };
- $code;
- return ZRFUProcResultCode::Ok;
- }
- fn encode_return(&mut self, bv: &mut ZRFUBytesVec) -> ZRFUProcResultCode {
- ZRFUProcResultCode::NoReturnProvided
- }
- }
- impl $proc_name {
- fn factory(name: String) -> Box<dyn ZRFUProcInstanceTrait> {
- Box::new($proc_name{
- proc_name: name,
- args: ZRFUProcArgs::new(),
- })
- }
- }
- };
- }
- #[macro_export]
- macro_rules! proc_def_r {
- ( $proc_name:ident ($ret_type:ty as $retname:ident) $code:block ) => {
- pub struct $proc_name {
- proc_name: String,
- ret: ZRFUProcReturn<$ret_type>,
- }
- impl ZRFUProcInstanceTrait for $proc_name {
- fn decode_input(&mut self, bv: &mut ZRFUBytesVec) -> ZRFUProcResultCode {
- ZRFUProcResultCode::NoArgsNeed
- }
- fn call(&mut self) -> ZRFUProcResultCode {
- $code;
- self.ret.set_data($retname);
- return ZRFUProcResultCode::Ok;
- }
- fn encode_return(&mut self, bv: &mut ZRFUBytesVec) -> ZRFUProcResultCode {
- self.ret.cbor_serialize(bv)
- }
- }
- impl $proc_name {
- fn factory(name: String) -> Box<dyn ZRFUProcInstanceTrait> {
- Box::new($proc_name{
- proc_name: name,
- ret: ZRFUProcReturn::new(),
- })
- }
- }
- };
- }
- #[macro_export]
- macro_rules! proc_def_n {
- ( $proc_name:ident () $code:block ) => {
- pub struct $proc_name {
- proc_name: String,
- }
- impl ZRFUProcInstanceTrait for $proc_name {
- fn decode_input(&mut self, bv: &mut ZRFUBytesVec) -> ZRFUProcResultCode {
- ZRFUProcResultCode::NoArgsNeed
- }
- fn call(&mut self) -> ZRFUProcResultCode {
- $code;
- return ZRFUProcResultCode::Ok;
- }
- fn encode_return(&mut self, bv: &mut ZRFUBytesVec) -> ZRFUProcResultCode {
- ZRFUProcResultCode::NoReturnProvided
- }
- }
- impl $proc_name {
- fn factory(name: String) -> Box<dyn ZRFUProcInstanceTrait> {
- Box::new($proc_name{
- proc_name: name,
- })
- }
- }
- };
- }
|