Added routines for arrays of uint16s.
[samba.git] / source / librpc / ndr / ndr_basic.c
index 0300bdd3fbd7cbe30f159a62170e6952c1d918a6..3b5aea60ca7e58388c9471fb7d68c84068b0d708 100644 (file)
@@ -278,6 +278,21 @@ NTSTATUS ndr_push_array_uint8(struct ndr_push *ndr, int ndr_flags, const char *d
        return ndr_push_bytes(ndr, data, n);
 }
 
+/*
+  push an array of uint16
+*/
+NTSTATUS ndr_push_array_uint16(struct ndr_push *ndr, int ndr_flags, const uint16 *data, uint32 n)
+{
+       int i;
+       if (!(ndr_flags & NDR_SCALARS)) {
+               return NT_STATUS_OK;
+       }
+       for (i=0;i<n;i++) {
+               NDR_CHECK(ndr_push_uint16(ndr, data[i]));
+       }
+       return NT_STATUS_OK;
+}
+
 /*
   push an array of uint32
 */
@@ -702,6 +717,24 @@ void ndr_print_array_uint32(struct ndr_print *ndr, const char *name,
        ndr->depth--;   
 }
 
+void ndr_print_array_uint16(struct ndr_print *ndr, const char *name, 
+                           const uint16 *data, uint32 count)
+{
+       int i;
+
+       ndr->print(ndr, "%s: ARRAY(%d)", name, count);
+       ndr->depth++;
+       for (i=0;i<count;i++) {
+               char *idx=NULL;
+               asprintf(&idx, "[%d]", i);
+               if (idx) {
+                       ndr_print_uint16(ndr, idx, data[i]);
+                       free(idx);
+               }
+       }
+       ndr->depth--;   
+}
+
 void ndr_print_array_uint8(struct ndr_print *ndr, const char *name, 
                           const uint8 *data, uint32 count)
 {