/* fprintf(ci->fh, "#define %s__freekids CORBA_Object__freekids\n", fullname); */
fprintf(ci->fh, "typedef forb_object %s;\n", fullname);
fprintf(ci->fh, "#define %s_serialize(codec, obj) forb_object_serialize((codec), (obj))\n", fullname);
- fprintf(ci->fh, "#define %s_deserialize(orb, codec, obj) forb_object_deserialize((orb), (codec), (obj))\n", fullname);
+ fprintf(ci->fh, "#define %s_deserialize(codec, obj, orb) forb_object_deserialize((codec), (obj), (orb))\n", fullname);
/* fprintf(ci->fh, "extern CORBA_unsigned_long %s__classid;\n", fullname); */
ch_output_impl_struct(tree, rinfo, ci);
}
-bool is_object_reference(IDL_tree parm)
-{
- return IDL_NODE_TYPE(forb_cbe_get_typespec(parm)) == IDLN_INTERFACE;
-}
-
static void ck_output_op_skel(IDL_tree op, char *intf_id, OIDL_Run_Info *rinfo, OIDL_C_Info *ci)
{
char *id, *id_plain;
char *name = IDL_IDENT(IDL_PARAM_DCL(parm).simple_declarator).str;
fprintf(ci->fh, /* " r = " */ " ");
forb_cbe_write_typespec(ci->fh, IDL_PARAM_DCL(parm).param_type_spec);
- if (is_object_reference(parm)) {
- fprintf(ci->fh, "_deserialize(_obj->orb, cin, &%s);\n", name);
+ if (IDL_NODE_TYPE(forb_cbe_get_typespec(parm)) == IDLN_INTERFACE) {
+ fprintf(ci->fh, "_deserialize(cin, &%s, _obj->orb);\n", name);
} else {
fprintf(ci->fh, "_deserialize(cin, &%s);\n", name);
}
char *name = IDL_IDENT(IDL_PARAM_DCL(parm).simple_declarator).str;
fprintf(of, " ");
forb_cbe_write_typespec(of, IDL_PARAM_DCL(parm).param_type_spec);
- fprintf(of, "_deserialize(req.cdr_reply, %s);\n", name);
+ if (IDL_NODE_TYPE(forb_cbe_get_typespec(parm)) == IDLN_INTERFACE) {
+ fprintf(ci->fh, "_deserialize(req.cdr_reply, %s, _obj->orb);\n", name);
+ } else {
+ fprintf(ci->fh, "_deserialize(req.cdr_reply, %s);\n", name);
+ }
}
}
fprintf(of, " forb_request_signal_processed(&req);\n"
* @return CORBA_TRUE on success, CORBA_FALSE on error.
*/
CORBA_boolean
-forb_object_deserialize(forb_orb orb, CDR_Codec *codec, forb_object *obj)
+forb_object_deserialize(CDR_Codec *codec, forb_object *obj, forb_orb orb)
{
forb_server_id server_id;
forb_object_key objkey;
CORBA_boolean
forb_object_serialize(CDR_Codec *codec, const forb_object *obj);
CORBA_boolean
-forb_object_deserialize(forb_orb orb, CDR_Codec *codec, forb_object *obj);
+forb_object_deserialize(CDR_Codec *codec, forb_object *obj, forb_orb orb);
#endif
void square(inout long r);
void message(in string msg);
void last_message(out string msg);
- void struct_method(in struct_t s);
- void obj_method(in myinterface mi);
-// void mytype_method(in mytype mt);
+ void struct_method(in struct_t s, out struct_t ss);
+ void obj_method(in myinterface mi, out myinterface mo);
+ void mytype_method(in mytype mt, out mytype mtt);
};