/* c/zx-b-enc.c - WARNING: This file was automatically generated. DO NOT EDIT! * $Id$ */ /* Code generation design Copyright (c) 2006 Sampo Kellomaki (sampo@iki.fi), * All Rights Reserved. NO WARRANTY. See file COPYING for terms and conditions * of use. Some aspects of code generation were driven by schema * descriptions that were used as input and may be subject to their own copyright. * Code generation uses a template, whose copyright statement follows. */ /** enc-templ.c - XML encoder template, used in code generation ** Copyright (c) 2006-2007 Symlabs (symlabs@symlabs.com), All Rights Reserved. ** Author: Sampo Kellomaki (sampo@iki.fi) ** This is confidential unpublished proprietary source code of the author. ** NO WARRANTY, not even implied warranties. Contains trade secrets. ** Distribution prohibited unless authorized in writing. ** Licensed under Apache License 2.0, see file COPYING. ** Id: enc-templ.c,v 1.27 2007-10-05 22:24:28 sampo Exp $ ** ** 30.5.2006, created, Sampo Kellomaki (sampo@iki.fi) ** 6.8.2006, factored data structure walking to aux-templ.c --Sampo ** 8.8.2006, reworked namespace handling --Sampo ** 26.8.2006, some CSE --Sampo ** 23.9.2006, added WO logic --Sampo ** 30.9.2007, improvements to WO encoding --Sampo ** ** N.B: wo=wire order (needed for exc-c14n), so=schema order ** N.B2: This template is meant to be processed by pd/xsd2sg.pl. Beware ** of special markers that xsd2sg.pl expects to find and understand. **/ #include #include "errmac.h" #include "zx.h" #include "c/zx-const.h" #include "c/zx-data.h" #include "c/zx-b-data.h" #include "c/zx-ns.h" #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_ApplicationEPR #define EL_STRUCT zx_b_ApplicationEPR_s #define EL_NS b #define EL_TAG ApplicationEPR #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_ApplicationEPR) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_ApplicationEPR(struct zx_ctx* c, struct zx_b_ApplicationEPR_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->ID, sizeof("ID")-1); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->notOnOrAfter, sizeof("notOnOrAfter")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif { struct zx_a_Address_s* e; for (e = x->Address; e; e = (struct zx_a_Address_s*)e->gg.g.n) len += zx_LEN_SO_a_Address(c, e); } { struct zx_a_ReferenceParameters_s* e; for (e = x->ReferenceParameters; e; e = (struct zx_a_ReferenceParameters_s*)e->gg.g.n) len += zx_LEN_SO_a_ReferenceParameters(c, e); } { struct zx_a_Metadata_s* e; for (e = x->Metadata; e; e = (struct zx_a_Metadata_s*)e->gg.g.n) len += zx_LEN_SO_a_Metadata(c, e); } len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:ApplicationEPR", len); return len; } /* FUNC(zx_LEN_WO_b_ApplicationEPR) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_ApplicationEPR(struct zx_ctx* c, struct zx_b_ApplicationEPR_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("ApplicationEPR")-1 + 1 + 2 + sizeof("ApplicationEPR")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->ID, sizeof("ID")-1); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->notOnOrAfter, sizeof("notOnOrAfter")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif { struct zx_a_Address_s* e; for (e = x->Address; e; e = (struct zx_a_Address_s*)e->gg.g.n) len += zx_LEN_WO_a_Address(c, e); } { struct zx_a_ReferenceParameters_s* e; for (e = x->ReferenceParameters; e; e = (struct zx_a_ReferenceParameters_s*)e->gg.g.n) len += zx_LEN_WO_a_ReferenceParameters(c, e); } { struct zx_a_Metadata_s* e; for (e = x->Metadata; e; e = (struct zx_a_Metadata_s*)e->gg.g.n) len += zx_LEN_WO_a_Metadata(c, e); } len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:ApplicationEPR", len); return len; } /* FUNC(zx_ENC_SO_b_ApplicationEPR) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_ApplicationEPR(struct zx_ctx* c, struct zx_b_ApplicationEPR_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->ID, " ID=\"", sizeof(" ID=\"")-1); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->notOnOrAfter, " notOnOrAfter=\"", sizeof(" notOnOrAfter=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif { struct zx_a_Address_s* e; for (e = x->Address; e; e = (struct zx_a_Address_s*)e->gg.g.n) p = zx_ENC_SO_a_Address(c, e, p); } { struct zx_a_ReferenceParameters_s* e; for (e = x->ReferenceParameters; e; e = (struct zx_a_ReferenceParameters_s*)e->gg.g.n) p = zx_ENC_SO_a_ReferenceParameters(c, e, p); } { struct zx_a_Metadata_s* e; for (e = x->Metadata; e; e = (struct zx_a_Metadata_s*)e->gg.g.n) p = zx_ENC_SO_a_Metadata(c, e, p); } p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:ApplicationEPR", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_ApplicationEPR) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_ApplicationEPR(struct zx_ctx* c, struct zx_b_ApplicationEPR_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "ApplicationEPR", sizeof("ApplicationEPR")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->ID, "ID=\"", sizeof("ID=\"")-1); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->notOnOrAfter, "notOnOrAfter=\"", sizeof("notOnOrAfter=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:ApplicationEPR", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_ApplicationEPR) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_ApplicationEPR(struct zx_ctx* c, struct zx_b_ApplicationEPR_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_ApplicationEPR(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_ApplicationEPR(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_ApplicationEPR) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_ApplicationEPR(struct zx_ctx* c, struct zx_b_ApplicationEPR_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_ApplicationEPR(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_ApplicationEPR(c, x, buf ), buf, len); } #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_Consent #define EL_STRUCT zx_b_Consent_s #define EL_NS b #define EL_TAG Consent #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_Consent) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_Consent(struct zx_ctx* c, struct zx_b_Consent_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->timestamp, sizeof("timestamp")-1); len += zx_attr_so_len(x->uri, sizeof("uri")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:Consent", len); return len; } /* FUNC(zx_LEN_WO_b_Consent) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_Consent(struct zx_ctx* c, struct zx_b_Consent_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("Consent")-1 + 1 + 2 + sizeof("Consent")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->timestamp, sizeof("timestamp")-1); len += zx_attr_wo_len(x->uri, sizeof("uri")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:Consent", len); return len; } /* FUNC(zx_ENC_SO_b_Consent) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_Consent(struct zx_ctx* c, struct zx_b_Consent_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->timestamp, " timestamp=\"", sizeof(" timestamp=\"")-1); p = zx_attr_so_enc(p, x->uri, " uri=\"", sizeof(" uri=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:Consent", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_Consent) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_Consent(struct zx_ctx* c, struct zx_b_Consent_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "Consent", sizeof("Consent")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->timestamp, "timestamp=\"", sizeof("timestamp=\"")-1); p = zx_attr_wo_enc(p, x->uri, "uri=\"", sizeof("uri=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:Consent", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_Consent) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_Consent(struct zx_ctx* c, struct zx_b_Consent_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_Consent(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_Consent(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_Consent) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_Consent(struct zx_ctx* c, struct zx_b_Consent_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_Consent(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_Consent(c, x, buf ), buf, len); } #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_CredentialsContext #define EL_STRUCT zx_b_CredentialsContext_s #define EL_NS b #define EL_TAG CredentialsContext #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_CredentialsContext) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_CredentialsContext(struct zx_ctx* c, struct zx_b_CredentialsContext_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif { struct zx_sp_RequestedAuthnContext_s* e; for (e = x->RequestedAuthnContext; e; e = (struct zx_sp_RequestedAuthnContext_s*)e->gg.g.n) len += zx_LEN_SO_sp_RequestedAuthnContext(c, e); } for (se = x->SecurityMechID; se; se = (struct zx_elem_s*)se->g.n) len += zx_LEN_SO_simple_elem(c,se, sizeof("b:SecurityMechID")-1, zx_ns_tab+zx_xmlns_ix_b); len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:CredentialsContext", len); return len; } /* FUNC(zx_LEN_WO_b_CredentialsContext) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_CredentialsContext(struct zx_ctx* c, struct zx_b_CredentialsContext_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("CredentialsContext")-1 + 1 + 2 + sizeof("CredentialsContext")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif { struct zx_sp_RequestedAuthnContext_s* e; for (e = x->RequestedAuthnContext; e; e = (struct zx_sp_RequestedAuthnContext_s*)e->gg.g.n) len += zx_LEN_WO_sp_RequestedAuthnContext(c, e); } for (se = x->SecurityMechID; se; se = (struct zx_elem_s*)se->g.n) len += zx_LEN_WO_simple_elem(c, se, sizeof("SecurityMechID")-1); len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:CredentialsContext", len); return len; } /* FUNC(zx_ENC_SO_b_CredentialsContext) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_CredentialsContext(struct zx_ctx* c, struct zx_b_CredentialsContext_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif { struct zx_sp_RequestedAuthnContext_s* e; for (e = x->RequestedAuthnContext; e; e = (struct zx_sp_RequestedAuthnContext_s*)e->gg.g.n) p = zx_ENC_SO_sp_RequestedAuthnContext(c, e, p); } for (se = x->SecurityMechID; se; se = (struct zx_elem_s*)se->g.n) p = zx_ENC_SO_simple_elem(c, se, p, "b:SecurityMechID", sizeof("b:SecurityMechID")-1, zx_ns_tab+zx_xmlns_ix_b); p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:CredentialsContext", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_CredentialsContext) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_CredentialsContext(struct zx_ctx* c, struct zx_b_CredentialsContext_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "CredentialsContext", sizeof("CredentialsContext")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:CredentialsContext", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_CredentialsContext) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_CredentialsContext(struct zx_ctx* c, struct zx_b_CredentialsContext_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_CredentialsContext(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_CredentialsContext(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_CredentialsContext) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_CredentialsContext(struct zx_ctx* c, struct zx_b_CredentialsContext_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_CredentialsContext(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_CredentialsContext(c, x, buf ), buf, len); } #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_EndpointUpdate #define EL_STRUCT zx_b_EndpointUpdate_s #define EL_NS b #define EL_TAG EndpointUpdate #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_EndpointUpdate) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_EndpointUpdate(struct zx_ctx* c, struct zx_b_EndpointUpdate_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->ID, sizeof("ID")-1); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->notOnOrAfter, sizeof("notOnOrAfter")-1); len += zx_attr_so_len(x->updateType, sizeof("updateType")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif { struct zx_a_Address_s* e; for (e = x->Address; e; e = (struct zx_a_Address_s*)e->gg.g.n) len += zx_LEN_SO_a_Address(c, e); } { struct zx_a_ReferenceParameters_s* e; for (e = x->ReferenceParameters; e; e = (struct zx_a_ReferenceParameters_s*)e->gg.g.n) len += zx_LEN_SO_a_ReferenceParameters(c, e); } { struct zx_a_Metadata_s* e; for (e = x->Metadata; e; e = (struct zx_a_Metadata_s*)e->gg.g.n) len += zx_LEN_SO_a_Metadata(c, e); } len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:EndpointUpdate", len); return len; } /* FUNC(zx_LEN_WO_b_EndpointUpdate) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_EndpointUpdate(struct zx_ctx* c, struct zx_b_EndpointUpdate_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("EndpointUpdate")-1 + 1 + 2 + sizeof("EndpointUpdate")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->ID, sizeof("ID")-1); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->notOnOrAfter, sizeof("notOnOrAfter")-1); len += zx_attr_wo_len(x->updateType, sizeof("updateType")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif { struct zx_a_Address_s* e; for (e = x->Address; e; e = (struct zx_a_Address_s*)e->gg.g.n) len += zx_LEN_WO_a_Address(c, e); } { struct zx_a_ReferenceParameters_s* e; for (e = x->ReferenceParameters; e; e = (struct zx_a_ReferenceParameters_s*)e->gg.g.n) len += zx_LEN_WO_a_ReferenceParameters(c, e); } { struct zx_a_Metadata_s* e; for (e = x->Metadata; e; e = (struct zx_a_Metadata_s*)e->gg.g.n) len += zx_LEN_WO_a_Metadata(c, e); } len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:EndpointUpdate", len); return len; } /* FUNC(zx_ENC_SO_b_EndpointUpdate) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_EndpointUpdate(struct zx_ctx* c, struct zx_b_EndpointUpdate_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->ID, " ID=\"", sizeof(" ID=\"")-1); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->notOnOrAfter, " notOnOrAfter=\"", sizeof(" notOnOrAfter=\"")-1); p = zx_attr_so_enc(p, x->updateType, " updateType=\"", sizeof(" updateType=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif { struct zx_a_Address_s* e; for (e = x->Address; e; e = (struct zx_a_Address_s*)e->gg.g.n) p = zx_ENC_SO_a_Address(c, e, p); } { struct zx_a_ReferenceParameters_s* e; for (e = x->ReferenceParameters; e; e = (struct zx_a_ReferenceParameters_s*)e->gg.g.n) p = zx_ENC_SO_a_ReferenceParameters(c, e, p); } { struct zx_a_Metadata_s* e; for (e = x->Metadata; e; e = (struct zx_a_Metadata_s*)e->gg.g.n) p = zx_ENC_SO_a_Metadata(c, e, p); } p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:EndpointUpdate", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_EndpointUpdate) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_EndpointUpdate(struct zx_ctx* c, struct zx_b_EndpointUpdate_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "EndpointUpdate", sizeof("EndpointUpdate")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->ID, "ID=\"", sizeof("ID=\"")-1); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->notOnOrAfter, "notOnOrAfter=\"", sizeof("notOnOrAfter=\"")-1); p = zx_attr_wo_enc(p, x->updateType, "updateType=\"", sizeof("updateType=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:EndpointUpdate", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_EndpointUpdate) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_EndpointUpdate(struct zx_ctx* c, struct zx_b_EndpointUpdate_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_EndpointUpdate(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_EndpointUpdate(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_EndpointUpdate) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_EndpointUpdate(struct zx_ctx* c, struct zx_b_EndpointUpdate_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_EndpointUpdate(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_EndpointUpdate(c, x, buf ), buf, len); } #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_Framework #define EL_STRUCT zx_b_Framework_s #define EL_NS b #define EL_TAG Framework #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_Framework) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_Framework(struct zx_ctx* c, struct zx_b_Framework_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->version, sizeof("version")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:Framework", len); return len; } /* FUNC(zx_LEN_WO_b_Framework) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_Framework(struct zx_ctx* c, struct zx_b_Framework_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("Framework")-1 + 1 + 2 + sizeof("Framework")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->version, sizeof("version")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:Framework", len); return len; } /* FUNC(zx_ENC_SO_b_Framework) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_Framework(struct zx_ctx* c, struct zx_b_Framework_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->version, " version=\"", sizeof(" version=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:Framework", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_Framework) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_Framework(struct zx_ctx* c, struct zx_b_Framework_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "Framework", sizeof("Framework")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->version, "version=\"", sizeof("version=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:Framework", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_Framework) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_Framework(struct zx_ctx* c, struct zx_b_Framework_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_Framework(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_Framework(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_Framework) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_Framework(struct zx_ctx* c, struct zx_b_Framework_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_Framework(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_Framework(c, x, buf ), buf, len); } #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_InteractionService #define EL_STRUCT zx_b_InteractionService_s #define EL_NS b #define EL_TAG InteractionService #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_InteractionService) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_InteractionService(struct zx_ctx* c, struct zx_b_InteractionService_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->ID, sizeof("ID")-1); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->notOnOrAfter, sizeof("notOnOrAfter")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif { struct zx_a_Address_s* e; for (e = x->Address; e; e = (struct zx_a_Address_s*)e->gg.g.n) len += zx_LEN_SO_a_Address(c, e); } { struct zx_a_ReferenceParameters_s* e; for (e = x->ReferenceParameters; e; e = (struct zx_a_ReferenceParameters_s*)e->gg.g.n) len += zx_LEN_SO_a_ReferenceParameters(c, e); } { struct zx_a_Metadata_s* e; for (e = x->Metadata; e; e = (struct zx_a_Metadata_s*)e->gg.g.n) len += zx_LEN_SO_a_Metadata(c, e); } len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:InteractionService", len); return len; } /* FUNC(zx_LEN_WO_b_InteractionService) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_InteractionService(struct zx_ctx* c, struct zx_b_InteractionService_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("InteractionService")-1 + 1 + 2 + sizeof("InteractionService")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->ID, sizeof("ID")-1); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->notOnOrAfter, sizeof("notOnOrAfter")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif { struct zx_a_Address_s* e; for (e = x->Address; e; e = (struct zx_a_Address_s*)e->gg.g.n) len += zx_LEN_WO_a_Address(c, e); } { struct zx_a_ReferenceParameters_s* e; for (e = x->ReferenceParameters; e; e = (struct zx_a_ReferenceParameters_s*)e->gg.g.n) len += zx_LEN_WO_a_ReferenceParameters(c, e); } { struct zx_a_Metadata_s* e; for (e = x->Metadata; e; e = (struct zx_a_Metadata_s*)e->gg.g.n) len += zx_LEN_WO_a_Metadata(c, e); } len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:InteractionService", len); return len; } /* FUNC(zx_ENC_SO_b_InteractionService) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_InteractionService(struct zx_ctx* c, struct zx_b_InteractionService_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->ID, " ID=\"", sizeof(" ID=\"")-1); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->notOnOrAfter, " notOnOrAfter=\"", sizeof(" notOnOrAfter=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif { struct zx_a_Address_s* e; for (e = x->Address; e; e = (struct zx_a_Address_s*)e->gg.g.n) p = zx_ENC_SO_a_Address(c, e, p); } { struct zx_a_ReferenceParameters_s* e; for (e = x->ReferenceParameters; e; e = (struct zx_a_ReferenceParameters_s*)e->gg.g.n) p = zx_ENC_SO_a_ReferenceParameters(c, e, p); } { struct zx_a_Metadata_s* e; for (e = x->Metadata; e; e = (struct zx_a_Metadata_s*)e->gg.g.n) p = zx_ENC_SO_a_Metadata(c, e, p); } p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:InteractionService", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_InteractionService) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_InteractionService(struct zx_ctx* c, struct zx_b_InteractionService_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "InteractionService", sizeof("InteractionService")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->ID, "ID=\"", sizeof("ID=\"")-1); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->notOnOrAfter, "notOnOrAfter=\"", sizeof("notOnOrAfter=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:InteractionService", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_InteractionService) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_InteractionService(struct zx_ctx* c, struct zx_b_InteractionService_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_InteractionService(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_InteractionService(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_InteractionService) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_InteractionService(struct zx_ctx* c, struct zx_b_InteractionService_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_InteractionService(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_InteractionService(c, x, buf ), buf, len); } #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_ProcessingContext #define EL_STRUCT zx_b_ProcessingContext_s #define EL_NS b #define EL_TAG ProcessingContext #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_ProcessingContext) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_ProcessingContext(struct zx_ctx* c, struct zx_b_ProcessingContext_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:ProcessingContext", len); return len; } /* FUNC(zx_LEN_WO_b_ProcessingContext) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_ProcessingContext(struct zx_ctx* c, struct zx_b_ProcessingContext_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("ProcessingContext")-1 + 1 + 2 + sizeof("ProcessingContext")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:ProcessingContext", len); return len; } /* FUNC(zx_ENC_SO_b_ProcessingContext) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_ProcessingContext(struct zx_ctx* c, struct zx_b_ProcessingContext_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:ProcessingContext", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_ProcessingContext) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_ProcessingContext(struct zx_ctx* c, struct zx_b_ProcessingContext_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "ProcessingContext", sizeof("ProcessingContext")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:ProcessingContext", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_ProcessingContext) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_ProcessingContext(struct zx_ctx* c, struct zx_b_ProcessingContext_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_ProcessingContext(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_ProcessingContext(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_ProcessingContext) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_ProcessingContext(struct zx_ctx* c, struct zx_b_ProcessingContext_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_ProcessingContext(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_ProcessingContext(c, x, buf ), buf, len); } #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_RedirectRequest #define EL_STRUCT zx_b_RedirectRequest_s #define EL_NS b #define EL_TAG RedirectRequest #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_RedirectRequest) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_RedirectRequest(struct zx_ctx* c, struct zx_b_RedirectRequest_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->redirectURL, sizeof("redirectURL")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:RedirectRequest", len); return len; } /* FUNC(zx_LEN_WO_b_RedirectRequest) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_RedirectRequest(struct zx_ctx* c, struct zx_b_RedirectRequest_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("RedirectRequest")-1 + 1 + 2 + sizeof("RedirectRequest")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->redirectURL, sizeof("redirectURL")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:RedirectRequest", len); return len; } /* FUNC(zx_ENC_SO_b_RedirectRequest) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_RedirectRequest(struct zx_ctx* c, struct zx_b_RedirectRequest_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->redirectURL, " redirectURL=\"", sizeof(" redirectURL=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:RedirectRequest", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_RedirectRequest) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_RedirectRequest(struct zx_ctx* c, struct zx_b_RedirectRequest_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "RedirectRequest", sizeof("RedirectRequest")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->redirectURL, "redirectURL=\"", sizeof("redirectURL=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:RedirectRequest", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_RedirectRequest) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_RedirectRequest(struct zx_ctx* c, struct zx_b_RedirectRequest_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_RedirectRequest(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_RedirectRequest(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_RedirectRequest) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_RedirectRequest(struct zx_ctx* c, struct zx_b_RedirectRequest_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_RedirectRequest(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_RedirectRequest(c, x, buf ), buf, len); } #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_Sender #define EL_STRUCT zx_b_Sender_s #define EL_NS b #define EL_TAG Sender #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_Sender) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_Sender(struct zx_ctx* c, struct zx_b_Sender_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->affiliationID, sizeof("affiliationID")-1); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->providerID, sizeof("providerID")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:Sender", len); return len; } /* FUNC(zx_LEN_WO_b_Sender) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_Sender(struct zx_ctx* c, struct zx_b_Sender_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("Sender")-1 + 1 + 2 + sizeof("Sender")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->affiliationID, sizeof("affiliationID")-1); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->providerID, sizeof("providerID")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:Sender", len); return len; } /* FUNC(zx_ENC_SO_b_Sender) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_Sender(struct zx_ctx* c, struct zx_b_Sender_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->affiliationID, " affiliationID=\"", sizeof(" affiliationID=\"")-1); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->providerID, " providerID=\"", sizeof(" providerID=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:Sender", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_Sender) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_Sender(struct zx_ctx* c, struct zx_b_Sender_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "Sender", sizeof("Sender")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->affiliationID, "affiliationID=\"", sizeof("affiliationID=\"")-1); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->providerID, "providerID=\"", sizeof("providerID=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:Sender", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_Sender) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_Sender(struct zx_ctx* c, struct zx_b_Sender_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_Sender(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_Sender(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_Sender) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_Sender(struct zx_ctx* c, struct zx_b_Sender_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_Sender(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_Sender(c, x, buf ), buf, len); } #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_TargetIdentity #define EL_STRUCT zx_b_TargetIdentity_s #define EL_NS b #define EL_TAG TargetIdentity #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_TargetIdentity) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_TargetIdentity(struct zx_ctx* c, struct zx_b_TargetIdentity_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif { struct zx_sa_Assertion_s* e; for (e = x->Assertion; e; e = (struct zx_sa_Assertion_s*)e->gg.g.n) len += zx_LEN_SO_sa_Assertion(c, e); } { struct zx_sa11_Assertion_s* e; for (e = x->sa11_Assertion; e; e = (struct zx_sa11_Assertion_s*)e->gg.g.n) len += zx_LEN_SO_sa11_Assertion(c, e); } { struct zx_ff12_Assertion_s* e; for (e = x->ff12_Assertion; e; e = (struct zx_ff12_Assertion_s*)e->gg.g.n) len += zx_LEN_SO_ff12_Assertion(c, e); } len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:TargetIdentity", len); return len; } /* FUNC(zx_LEN_WO_b_TargetIdentity) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_TargetIdentity(struct zx_ctx* c, struct zx_b_TargetIdentity_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("TargetIdentity")-1 + 1 + 2 + sizeof("TargetIdentity")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif { struct zx_sa_Assertion_s* e; for (e = x->Assertion; e; e = (struct zx_sa_Assertion_s*)e->gg.g.n) len += zx_LEN_WO_sa_Assertion(c, e); } { struct zx_sa11_Assertion_s* e; for (e = x->sa11_Assertion; e; e = (struct zx_sa11_Assertion_s*)e->gg.g.n) len += zx_LEN_WO_sa11_Assertion(c, e); } { struct zx_ff12_Assertion_s* e; for (e = x->ff12_Assertion; e; e = (struct zx_ff12_Assertion_s*)e->gg.g.n) len += zx_LEN_WO_ff12_Assertion(c, e); } len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:TargetIdentity", len); return len; } /* FUNC(zx_ENC_SO_b_TargetIdentity) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_TargetIdentity(struct zx_ctx* c, struct zx_b_TargetIdentity_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif { struct zx_sa_Assertion_s* e; for (e = x->Assertion; e; e = (struct zx_sa_Assertion_s*)e->gg.g.n) p = zx_ENC_SO_sa_Assertion(c, e, p); } { struct zx_sa11_Assertion_s* e; for (e = x->sa11_Assertion; e; e = (struct zx_sa11_Assertion_s*)e->gg.g.n) p = zx_ENC_SO_sa11_Assertion(c, e, p); } { struct zx_ff12_Assertion_s* e; for (e = x->ff12_Assertion; e; e = (struct zx_ff12_Assertion_s*)e->gg.g.n) p = zx_ENC_SO_ff12_Assertion(c, e, p); } p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:TargetIdentity", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_TargetIdentity) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_TargetIdentity(struct zx_ctx* c, struct zx_b_TargetIdentity_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "TargetIdentity", sizeof("TargetIdentity")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:TargetIdentity", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_TargetIdentity) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_TargetIdentity(struct zx_ctx* c, struct zx_b_TargetIdentity_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_TargetIdentity(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_TargetIdentity(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_TargetIdentity) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_TargetIdentity(struct zx_ctx* c, struct zx_b_TargetIdentity_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_TargetIdentity(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_TargetIdentity(c, x, buf ), buf, len); } #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_Timeout #define EL_STRUCT zx_b_Timeout_s #define EL_NS b #define EL_TAG Timeout #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_Timeout) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_Timeout(struct zx_ctx* c, struct zx_b_Timeout_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->maxProcessingTime, sizeof("maxProcessingTime")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:Timeout", len); return len; } /* FUNC(zx_LEN_WO_b_Timeout) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_Timeout(struct zx_ctx* c, struct zx_b_Timeout_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("Timeout")-1 + 1 + 2 + sizeof("Timeout")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->maxProcessingTime, sizeof("maxProcessingTime")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:Timeout", len); return len; } /* FUNC(zx_ENC_SO_b_Timeout) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_Timeout(struct zx_ctx* c, struct zx_b_Timeout_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->maxProcessingTime, " maxProcessingTime=\"", sizeof(" maxProcessingTime=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:Timeout", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_Timeout) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_Timeout(struct zx_ctx* c, struct zx_b_Timeout_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "Timeout", sizeof("Timeout")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->maxProcessingTime, "maxProcessingTime=\"", sizeof("maxProcessingTime=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:Timeout", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_Timeout) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_Timeout(struct zx_ctx* c, struct zx_b_Timeout_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_Timeout(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_Timeout(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_Timeout) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_Timeout(struct zx_ctx* c, struct zx_b_Timeout_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_Timeout(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_Timeout(c, x, buf ), buf, len); } #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_UsageDirective #define EL_STRUCT zx_b_UsageDirective_s #define EL_NS b #define EL_TAG UsageDirective #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_UsageDirective) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_UsageDirective(struct zx_ctx* c, struct zx_b_UsageDirective_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->ref, sizeof("ref")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:UsageDirective", len); return len; } /* FUNC(zx_LEN_WO_b_UsageDirective) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_UsageDirective(struct zx_ctx* c, struct zx_b_UsageDirective_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("UsageDirective")-1 + 1 + 2 + sizeof("UsageDirective")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->ref, sizeof("ref")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:UsageDirective", len); return len; } /* FUNC(zx_ENC_SO_b_UsageDirective) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_UsageDirective(struct zx_ctx* c, struct zx_b_UsageDirective_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->ref, " ref=\"", sizeof(" ref=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:UsageDirective", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_UsageDirective) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_UsageDirective(struct zx_ctx* c, struct zx_b_UsageDirective_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "UsageDirective", sizeof("UsageDirective")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->ref, "ref=\"", sizeof("ref=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:UsageDirective", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_UsageDirective) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_UsageDirective(struct zx_ctx* c, struct zx_b_UsageDirective_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_UsageDirective(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_UsageDirective(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_UsageDirective) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_UsageDirective(struct zx_ctx* c, struct zx_b_UsageDirective_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_UsageDirective(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_UsageDirective(c, x, buf ), buf, len); } #ifdef EL_NAME #undef EL_NAME #endif #ifdef EL_STRUCT #undef EL_STRUCT #endif #ifdef EL_NS #undef EL_NS #endif #ifdef EL_TAG #undef EL_TAG #endif #define EL_NAME b_UserInteraction #define EL_STRUCT zx_b_UserInteraction_s #define EL_NS b #define EL_TAG UserInteraction #ifndef MAYBE_UNUSED #define MAYBE_UNUSED /* May appear as unused variable, but is needed by some generated code. */ #endif #if 0 #define ENC_LEN_DEBUG(x,tag,len) D("x=%p tag(%s) len=%d",(x),(tag),(len)) #define ENC_LEN_DEBUG_BASE char* enc_base = p #else #define ENC_LEN_DEBUG(x,tag,len) #define ENC_LEN_DEBUG_BASE #endif /* FUNC(zx_LEN_SO_b_UserInteraction) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in schema order. */ /* Called by: */ int zx_LEN_SO_b_UserInteraction(struct zx_ctx* c, struct zx_b_UserInteraction_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ /* *** in simple_elem case should output ns prefix from ns node. */ int len = sizeof("")-1; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); len += zx_attr_so_len(x->id, sizeof("id")-1); len += zx_attr_so_len(x->interact, sizeof("interact")-1); len += zx_attr_so_len(x->language, sizeof("language")-1); len += zx_attr_so_len(x->maxInteractTime, sizeof("maxInteractTime")-1); len += zx_attr_so_len(x->redirect, sizeof("redirect")-1); len += zx_attr_so_len(x->Id, sizeof("wsu:Id")-1); len += zx_attr_so_len(x->actor, sizeof("e:actor")-1); len += zx_attr_so_len(x->mustUnderstand, sizeof("e:mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif { struct zx_b_InteractionService_s* e; for (e = x->InteractionService; e; e = (struct zx_b_InteractionService_s*)e->gg.g.n) len += zx_LEN_SO_b_InteractionService(c, e); } len += zx_len_so_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:UserInteraction", len); return len; } /* FUNC(zx_LEN_WO_b_UserInteraction) */ /* Compute length of an element (and its subelements). The XML attributes * and elements are processed in wire order and no assumptions * are made about namespace prefixes. */ /* Called by: */ int zx_LEN_WO_b_UserInteraction(struct zx_ctx* c, struct zx_b_UserInteraction_s* x ) { struct zx_ns_s* pop_seen = 0; struct zx_elem_s* se MAYBE_UNUSED; #if 1 /* NORMALMODE */ int len = 1 + sizeof("UserInteraction")-1 + 1 + 2 + sizeof("UserInteraction")-1 + 1; if (x->gg.g.ns && x->gg.g.ns->prefix_len) len += (x->gg.g.ns->prefix_len + 1) * 2; if (c->inc_ns_len) len += zx_len_inc_ns(c, &pop_seen); len += zx_len_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) len += zx_len_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) len += zx_len_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) len += zx_len_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); len += zx_attr_wo_len(x->id, sizeof("id")-1); len += zx_attr_wo_len(x->interact, sizeof("interact")-1); len += zx_attr_wo_len(x->language, sizeof("language")-1); len += zx_attr_wo_len(x->maxInteractTime, sizeof("maxInteractTime")-1); len += zx_attr_wo_len(x->redirect, sizeof("redirect")-1); len += zx_attr_wo_len(x->Id, sizeof("Id")-1); len += zx_attr_wo_len(x->actor, sizeof("actor")-1); len += zx_attr_wo_len(x->mustUnderstand, sizeof("mustUnderstand")-1); #else /* root node has no begin tag */ int len = 0; #endif { struct zx_b_InteractionService_s* e; for (e = x->InteractionService; e; e = (struct zx_b_InteractionService_s*)e->gg.g.n) len += zx_LEN_WO_b_InteractionService(c, e); } len += zx_len_wo_common(c, &x->gg); zx_pop_seen(pop_seen); ENC_LEN_DEBUG(x, "b:UserInteraction", len); return len; } /* FUNC(zx_ENC_SO_b_UserInteraction) */ /* Render element into string. The XML attributes and elements are * processed in schema order. This is what you generally want for * rendering new data structure to a string. The wo pointers are not used. */ /* Called by: */ char* zx_ENC_SO_b_UserInteraction(struct zx_ctx* c, struct zx_b_UserInteraction_s* x, char* p ) { struct zx_elem_s* se MAYBE_UNUSED; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; /* *** in simple_elem case should output ns prefix from ns node. */ ZX_OUT_TAG(p, "inc_ns) p = zx_enc_inc_ns(c, p, &pop_seen); p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_b, &pop_seen); if (x->actor || x->mustUnderstand) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_e, &pop_seen); if (x->Id) p = zx_enc_xmlns_if_not_seen(c, p, zx_ns_tab+zx_xmlns_ix_wsu, &pop_seen); p = zx_attr_so_enc(p, x->id, " id=\"", sizeof(" id=\"")-1); p = zx_attr_so_enc(p, x->interact, " interact=\"", sizeof(" interact=\"")-1); p = zx_attr_so_enc(p, x->language, " language=\"", sizeof(" language=\"")-1); p = zx_attr_so_enc(p, x->maxInteractTime, " maxInteractTime=\"", sizeof(" maxInteractTime=\"")-1); p = zx_attr_so_enc(p, x->redirect, " redirect=\"", sizeof(" redirect=\"")-1); p = zx_attr_so_enc(p, x->Id, " wsu:Id=\"", sizeof(" wsu:Id=\"")-1); p = zx_attr_so_enc(p, x->actor, " e:actor=\"", sizeof(" e:actor=\"")-1); p = zx_attr_so_enc(p, x->mustUnderstand, " e:mustUnderstand=\"", sizeof(" e:mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif { struct zx_b_InteractionService_s* e; for (e = x->InteractionService; e; e = (struct zx_b_InteractionService_s*)e->gg.g.n) p = zx_ENC_SO_b_InteractionService(c, e, p); } p = zx_enc_so_unknown_elems_and_content(c, p, &x->gg); #if 1 /* NORMALMODE */ ZX_OUT_CLOSE_TAG(p, ""); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:UserInteraction", p-enc_base); return p; } /* FUNC(zx_ENC_WO_b_UserInteraction) */ /* Render element into string. The XML attributes and elements are * processed in wire order by chasing wo pointers. This is what you want for * validating signatures on other people's XML documents. */ /* Called by: */ char* zx_ENC_WO_b_UserInteraction(struct zx_ctx* c, struct zx_b_UserInteraction_s* x, char* p ) { struct zx_elem_s* kid; ENC_LEN_DEBUG_BASE; #if 1 /* NORMALMODE */ struct zx_ns_s* pop_seen = 0; char* q; char* qq; ZX_OUT_CH(p, '<'); q = p; if (x->gg.g.ns && x->gg.g.ns->prefix_len) { ZX_OUT_MEM(p, x->gg.g.ns->prefix, x->gg.g.ns->prefix_len); ZX_OUT_CH(p, ':'); } ZX_OUT_MEM(p, "UserInteraction", sizeof("UserInteraction")-1); qq = p; /* *** sort the namespaces */ if (c->inc_ns) zx_add_inc_ns(c, &pop_seen); zx_add_xmlns_if_not_seen(c, x->gg.g.ns, &pop_seen); if (x->actor) zx_add_xmlns_if_not_seen(c, x->actor->g.ns, &pop_seen); if (x->mustUnderstand) zx_add_xmlns_if_not_seen(c, x->mustUnderstand->g.ns, &pop_seen); if (x->Id) zx_add_xmlns_if_not_seen(c, x->Id->g.ns, &pop_seen); p = zx_enc_seen(p, pop_seen); p = zx_attr_wo_enc(p, x->id, "id=\"", sizeof("id=\"")-1); p = zx_attr_wo_enc(p, x->interact, "interact=\"", sizeof("interact=\"")-1); p = zx_attr_wo_enc(p, x->language, "language=\"", sizeof("language=\"")-1); p = zx_attr_wo_enc(p, x->maxInteractTime, "maxInteractTime=\"", sizeof("maxInteractTime=\"")-1); p = zx_attr_wo_enc(p, x->redirect, "redirect=\"", sizeof("redirect=\"")-1); p = zx_attr_wo_enc(p, x->Id, "Id=\"", sizeof("Id=\"")-1); p = zx_attr_wo_enc(p, x->actor, "actor=\"", sizeof("actor=\"")-1); p = zx_attr_wo_enc(p, x->mustUnderstand, "mustUnderstand=\"", sizeof("mustUnderstand=\"")-1); p = zx_enc_unknown_attrs(p, x->gg.any_attr); #else /* root node has no begin tag */ #endif for (kid = x->gg.kids; kid; kid = ((struct zx_elem_s*)(kid->g.wo))) p = zx_ENC_WO_any_elem(c, kid, p); #if 1 /* NORMALMODE */ ZX_OUT_CH(p, '<'); ZX_OUT_CH(p, '/'); ZX_OUT_MEM(p, q, qq-q); ZX_OUT_CH(p, '>'); zx_pop_seen(pop_seen); #else /* root node has no end tag either */ #endif ENC_LEN_DEBUG(x, "b:UserInteraction", p-enc_base); return p; } /* FUNC(zx_EASY_ENC_SO_b_UserInteraction) */ /* Called by: */ struct zx_str* zx_EASY_ENC_SO_b_UserInteraction(struct zx_ctx* c, struct zx_b_UserInteraction_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_SO_b_UserInteraction(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_SO_b_UserInteraction(c, x, buf ), buf, len); } /* FUNC(zx_EASY_ENC_WO_b_UserInteraction) */ /* Called by: */ struct zx_str* zx_EASY_ENC_WO_b_UserInteraction(struct zx_ctx* c, struct zx_b_UserInteraction_s* x ) { int len; char* buf; c->ns_tab = ZX_ALLOC(c, sizeof(zx_ns_tab)); memcpy(c->ns_tab, zx_ns_tab, sizeof(zx_ns_tab)); len = zx_LEN_WO_b_UserInteraction(c, x ); buf = ZX_ALLOC(c, len+1); return zx_easy_enc_common(c, zx_ENC_WO_b_UserInteraction(c, x, buf ), buf, len); } /* EOF -- c/zx-b-enc.c */