if (util::is_fixed_array($e)) {
ParseElementPrintBuffer($e, $var_prefix);
- } elsif (util::has_direct_buffers($e)) {
+ } elsif ($e->{POINTERS} || util::array_size($e)) {
pidl "\tndr_print_ptr(ndr, \"$e->{NAME}\", $var_prefix$e->{NAME});\n";
pidl "\tndr->depth++;\n";
ParseElementPrintBuffer($e, $var_prefix);
#define NDR_PUSH_ALLOC(ndr, s) NDR_PUSH_ALLOC_SIZE(ndr, s, sizeof(*(s)))
/* these are used when generic fn pointers are needed for ndr push/pull fns */
-typedef NTSTATUS (*ndr_push_fn_t)(struct ndr_push *, void *);
-typedef NTSTATUS (*ndr_pull_fn_t)(struct ndr_pull *, void *);
-
typedef NTSTATUS (*ndr_push_flags_fn_t)(struct ndr_push *, int ndr_flags, void *);
typedef NTSTATUS (*ndr_push_const_fn_t)(struct ndr_push *, int ndr_flags, const void *);
typedef NTSTATUS (*ndr_pull_flags_fn_t)(struct ndr_pull *, int ndr_flags, void *);
handle subcontext buffers, which in midl land are user-marshalled, but
we use magic in pidl to make them easier to cope with
*/
-NTSTATUS ndr_pull_subcontext_fn(struct ndr_pull *ndr, size_t sub_size,
- void *base, ndr_pull_fn_t fn)
-{
- struct ndr_pull *ndr2;
- NDR_ALLOC(ndr, ndr2);
- NDR_CHECK(ndr_pull_subcontext_header(ndr, sub_size, ndr2));
- NDR_CHECK(fn(ndr2, base));
- if (sub_size) {
- NDR_CHECK(ndr_pull_advance(ndr, ndr2->data_size));
- } else {
- NDR_CHECK(ndr_pull_advance(ndr, ndr2->offset));
- }
- return NT_STATUS_OK;
-}
-
-
NTSTATUS ndr_pull_subcontext_flags_fn(struct ndr_pull *ndr, size_t sub_size,
void *base, ndr_pull_flags_fn_t fn)
{
handle subcontext buffers, which in midl land are user-marshalled, but
we use magic in pidl to make them easier to cope with
*/
-NTSTATUS ndr_push_subcontext_fn(struct ndr_push *ndr, size_t sub_size,
- void *base, ndr_push_fn_t fn)
-{
- struct ndr_push *ndr2;
-
- ndr2 = ndr_push_init_ctx(ndr);
- if (!ndr2) return NT_STATUS_NO_MEMORY;
-
- ndr2->flags = ndr->flags;
- NDR_CHECK(fn(ndr2, base));
- NDR_CHECK(ndr_push_subcontext_header(ndr, sub_size, ndr2));
- NDR_CHECK(ndr_push_bytes(ndr, ndr2->data, ndr2->offset));
- return NT_STATUS_OK;
-}
-
-/*
- handle subcontext buffers for function that take a flags arg
-*/
NTSTATUS ndr_push_subcontext_flags_fn(struct ndr_push *ndr, size_t sub_size,
void *base, ndr_push_flags_fn_t fn)
{