Example #1
0
/* action for struct discovery */
int s_d_prog_struct(void *in, typ type, void *out)
{
   /* Service−agnostic, Program−specific */
   if (type == TYPE_STRUCT_tagged_union_i)
   {
      struct tagged_union *in_u = in ;
      struct tagged_union *out_u = out;
      visit (&in_u->tag, TYPE_INT_i, &out_u->tag);
      if(in_u->tag)
         visit(&in_u->u.x, TYPE_INT_i, &out_u->u.x);
      else
         visit(&in_u->u.c, TYPE_CHAR_i, &out_u->u.c);
      return 0;
   }

   /*deserialization*/
   if(is_reading() )
   {
      return deserial_struct(in, type, out);
   }
   /*serialization*/
   if(is_writing() )
   {
      return serial_struct(in, type, out);
   }
   return 0;
}
Example #2
0
 char* cur_ptr() { return is_reading() ?  gptr() : pptr(); }