summaryrefslogtreecommitdiff
path: root/source4/librpc/ndr/ndr.c
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2005-03-06 17:02:14 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:10:58 -0500
commitffae01d432c715961c44e499258ee2a9f7e3d5f1 (patch)
tree46ba7f1e6fdfca93581c9426c0ab68068b1d1963 /source4/librpc/ndr/ndr.c
parent5658167806a6fbe70288a22b0304a3cfd773c44f (diff)
downloadsamba-ffae01d432c715961c44e499258ee2a9f7e3d5f1.tar.gz
samba-ffae01d432c715961c44e499258ee2a9f7e3d5f1.tar.bz2
samba-ffae01d432c715961c44e499258ee2a9f7e3d5f1.zip
r5672: Use switch_type() and the token storage mechanism for unions:
- Makes union handling less special - Allows unions in arrays, etc - Compatible with midl - Pidl will warn about switch_type() and the type of the switch_is() variable being different (This used to be commit dc6b4ffc82a191631bc16a4b93a4916a39183ec6)
Diffstat (limited to 'source4/librpc/ndr/ndr.c')
-rw-r--r--source4/librpc/ndr/ndr.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/source4/librpc/ndr/ndr.c b/source4/librpc/ndr/ndr.c
index 549230bb29..2e350aa0da 100644
--- a/source4/librpc/ndr/ndr.c
+++ b/source4/librpc/ndr/ndr.c
@@ -642,6 +642,32 @@ NTSTATUS ndr_check_array_length(struct ndr_pull *ndr, void *p, uint32_t length)
}
/*
+ store a switch value
+ */
+NTSTATUS ndr_push_set_switch_value(struct ndr_push *ndr, void *p, uint32_t val)
+{
+ return ndr_token_store(ndr, &ndr->switch_list, p, val);
+}
+
+NTSTATUS ndr_pull_set_switch_value(struct ndr_pull *ndr, void *p, uint32_t val)
+{
+ return ndr_token_store(ndr, &ndr->switch_list, p, val);
+}
+
+/*
+ retrieve a switch value
+ */
+uint32_t ndr_push_get_switch_value(struct ndr_push *ndr, void *p)
+{
+ return ndr_token_peek(&ndr->switch_list, p);
+}
+
+uint32_t ndr_pull_get_switch_value(struct ndr_pull *ndr, void *p)
+{
+ return ndr_token_peek(&ndr->switch_list, p);
+}
+
+/*
pull a relative object - stage1
called during SCALARS processing
*/