NULL XER encoding


git-svn-id: https://asn1c.svn.sourceforge.net/svnroot/asn1c/trunk@535 59561ff5-6e30-0410-9f3c-9617f08c8826
diff --git a/skeletons/NULL.c b/skeletons/NULL.c
index 3b41be2..8cccc66 100644
--- a/skeletons/NULL.c
+++ b/skeletons/NULL.c
@@ -3,6 +3,7 @@
  * Redistribution and modifications are permitted subject to BSD license.
  */
 #include <asn_internal.h>
+#include <asn_codecs_prim.h>
 #include <NULL.h>
 #include <BOOLEAN.h>	/* Implemented in terms of BOOLEAN type */
 
@@ -20,8 +21,8 @@
 	asn_generic_no_constraint,
 	BOOLEAN_decode_ber,	/* Implemented in terms of BOOLEAN */
 	NULL_encode_der,	/* Special handling of DER encoding */
-	0,				/* Not implemented yet */
-	NULL_encode_xer,	/* Special handling of DER encoding */
+	NULL_decode_xer,
+	NULL_encode_xer,
 	0, /* Use generic outmost tag fetcher */
 	asn_DEF_NULL_tags,
 	sizeof(asn_DEF_NULL_tags) / sizeof(asn_DEF_NULL_tags[0]),
@@ -65,6 +66,25 @@
 	return er;
 }
 
+
+static ssize_t
+NULL__xer_body_decode(void *sptr, void *chunk_buf, size_t chunk_size) {
+	(void)sptr;
+	if(xer_is_whitespace(chunk_buf, chunk_size))
+		return chunk_size;
+	return -1;
+}
+
+asn_dec_rval_t
+NULL_decode_xer(asn_codec_ctx_t *opt_codec_ctx,
+	asn_TYPE_descriptor_t *td, void **sptr, const char *opt_mname,
+		void *buf_ptr, size_t size) {
+
+	return xer_decode_primitive(opt_codec_ctx, td,
+		sptr, sizeof(NULL_t), opt_mname, buf_ptr, size,
+		NULL__xer_body_decode);
+}
+
 int
 NULL_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
 	asn_app_consume_bytes_f *cb, void *app_key) {
diff --git a/skeletons/NULL.h b/skeletons/NULL.h
index 1a9f703..bce436b 100644
--- a/skeletons/NULL.h
+++ b/skeletons/NULL.h
@@ -17,6 +17,7 @@
 
 asn_struct_print_f NULL_print;
 der_type_encoder_f NULL_encode_der;
+xer_type_decoder_f NULL_decode_xer;
 xer_type_encoder_f NULL_encode_xer;
 
 #endif	/* NULL_H */