| TUnion uname ->
pr " if (!xdr_union_%s (xdrs, %s)) return FALSE;\n" uname n
-let generate_lib_proto_xdr_impl_c api =
+let generate_lib_xdr_c api =
generate_header inputs CStyle LGPLv2plus;
pr "\
+#include <config.h>
+
#include <stdlib.h>
#include <rpc/xdr.h>
iter_entry_points api (
fun ep ->
- if not ep.ep_local then (
- let name = ep.ep_name in
- let ret, req, opt = ep.ep_ftype in
-
- pr "\n";
- pr "bool_t\n";
- pr "wrap_int_xdr_%s_args (XDR *xdrs, struct wrap_int_%s_args *args)\n"
- name name;
- pr "{\n";
-
- List.iter (
- fun (n, t, _) ->
- pr_xdr_of_ptype (sprintf "args->%s" n) t
- ) req;
-
- if opt <> [] then assert false; (* XXX not implemented *)
-
- pr " return TRUE;\n";
- pr "}\n";
-
- pr "\n";
- pr "bool_t\n";
- pr "wrap_int_xdr_%s_ret (XDR *xdrs, struct wrap_int_%s_ret *ret)\n"
- name name;
- pr "{\n";
-
- (match ret with
- | RVoid -> ()
- | RStaticString ->
- assert false (* RStaticString cannot be used for remote functions. *)
- | Return t ->
- pr_xdr_of_ptype "ret->r" t
- );
-
- pr " return TRUE;\n";
- pr "}\n"
- )
+ let name = ep.ep_name in
+ let ret, req, opt = ep.ep_ftype in
+
+ pr "\n";
+ pr "bool_t\n";
+ pr "wrap_int_xdr_%s_args (XDR *xdrs, struct wrap_%s_args *args)\n"
+ name name;
+ pr "{\n";
+
+ List.iter (
+ fun (n, t, _) ->
+ pr_xdr_of_ptype (sprintf "args->%s" n) t
+ ) req;
+
+ if opt <> [] then assert false; (* XXX not implemented *)
+
+ pr " return TRUE;\n";
+ pr "}\n";
+
+ pr "\n";
+ pr "bool_t\n";
+ pr "wrap_int_xdr_%s_ret (XDR *xdrs, struct wrap_%s_ret *ret)\n"
+ name name;
+ pr "{\n";
+
+ (match ret with
+ | RVoid -> ()
+ | RStaticString ->
+ pr_xdr_of_ptype "ret->r" TString (* XXX is this right? *)
+ | Return t ->
+ pr_xdr_of_ptype "ret->r" t
+ );
+
+ pr " return TRUE;\n";
+ pr "}\n"
)
let generate api =
- output_to "lib/proto-xdr-impl.c" generate_lib_proto_xdr_impl_c api
+ output_to "lib/xdr.c" generate_lib_xdr_c api