/* uddiH.h
   Generated by gSOAP 2.7.1 from uddi_v2.h
   Copyright (C) 2000-2005, Robert van Engelen, Genivia Inc. All Rights Reserved.
   This part of the software is released under one of the following licenses:
   GPL, the gSOAP public license, or Genivia's license for commercial use.
*/
#ifndef uddiH_H
#define uddiH_H
#include "uddiStub.h"

SOAP_BEGIN_NAMESPACE(uddi)
SOAP_FMAC3 int SOAP_FMAC4 soap_ignore_element(struct soap*);
#ifndef WITH_NOIDREF
SOAP_FMAC3 int SOAP_FMAC4 soap_putindependent(struct soap*);
SOAP_FMAC3 int SOAP_FMAC4 soap_getindependent(struct soap*);
SOAP_FMAC3 void SOAP_FMAC4 soap_markelement(struct soap*, const void*, int);
SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap*, const void*, const char*, int, int);
SOAP_FMAC3 void * SOAP_FMAC4 soap_getelement(struct soap*, int*);
#endif
SOAP_FMAC3 int SOAP_FMAC4 soap_resolve_attachments(struct soap*);

SOAP_FMAC3 void * SOAP_FMAC4 soap_instantiate(struct soap*, int, const char*, const char*, size_t*);

SOAP_FMAC3 void SOAP_FMAC4 soap_fdelete(struct soap_clist*);

SOAP_FMAC3 void* SOAP_FMAC4 soap_class_id_enter(struct soap*, const char*, void*, int, size_t, const char*, const char*);

SOAP_FMAC3 void* SOAP_FMAC4 soap_container_id_forward(struct soap*, const char*, void*, int, int, size_t, unsigned int);

SOAP_FMAC3 void SOAP_FMAC4 soap_container_insert(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_byte
#define SOAP_TYPE_byte (2)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_byte(struct soap*, char *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_byte(struct soap*, const char *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_byte(struct soap*, const char*, int, const char *, const char*);
SOAP_FMAC3 char * SOAP_FMAC4 soap_get_byte(struct soap*, char *, const char*, const char*);
SOAP_FMAC3 char * SOAP_FMAC4 soap_in_byte(struct soap*, const char*, char *, const char*);

#ifndef SOAP_TYPE_int
#define SOAP_TYPE_int (1)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_int(struct soap*, int *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_int(struct soap*, const int *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_int(struct soap*, const char*, int, const int *, const char*);
SOAP_FMAC3 int * SOAP_FMAC4 soap_get_int(struct soap*, int *, const char*, const char*);
SOAP_FMAC3 int * SOAP_FMAC4 soap_in_int(struct soap*, const char*, int *, const char*);

#ifndef SOAP_TYPE_uddi2__keyType
#define SOAP_TYPE_uddi2__keyType (99)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_uddi2__keyType(struct soap*, enum uddi2__keyType *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_uddi2__keyType(struct soap*, const enum uddi2__keyType *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__keyType(struct soap*, const char*, int, const enum uddi2__keyType *, const char*);

SOAP_FMAC3S const char* SOAP_FMAC4S soap_uddi2__keyType2s(struct soap*, enum uddi2__keyType);
SOAP_FMAC3 enum uddi2__keyType * SOAP_FMAC4 soap_get_uddi2__keyType(struct soap*, enum uddi2__keyType *, const char*, const char*);
SOAP_FMAC3 enum uddi2__keyType * SOAP_FMAC4 soap_in_uddi2__keyType(struct soap*, const char*, enum uddi2__keyType *, const char*);

SOAP_FMAC3S int SOAP_FMAC4S soap_s2uddi2__keyType(struct soap*, const char*, enum uddi2__keyType *);

#ifndef SOAP_TYPE_uddi2__URLType
#define SOAP_TYPE_uddi2__URLType (98)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_uddi2__URLType(struct soap*, enum uddi2__URLType *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_uddi2__URLType(struct soap*, const enum uddi2__URLType *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__URLType(struct soap*, const char*, int, const enum uddi2__URLType *, const char*);

SOAP_FMAC3S const char* SOAP_FMAC4S soap_uddi2__URLType2s(struct soap*, enum uddi2__URLType);
SOAP_FMAC3 enum uddi2__URLType * SOAP_FMAC4 soap_get_uddi2__URLType(struct soap*, enum uddi2__URLType *, const char*, const char*);
SOAP_FMAC3 enum uddi2__URLType * SOAP_FMAC4 soap_in_uddi2__URLType(struct soap*, const char*, enum uddi2__URLType *, const char*);

SOAP_FMAC3S int SOAP_FMAC4S soap_s2uddi2__URLType(struct soap*, const char*, enum uddi2__URLType *);

#ifndef SOAP_TYPE_uddi2__truncated
#define SOAP_TYPE_uddi2__truncated (97)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_uddi2__truncated(struct soap*, enum uddi2__truncated *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_uddi2__truncated(struct soap*, const enum uddi2__truncated *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__truncated(struct soap*, const char*, int, const enum uddi2__truncated *, const char*);

SOAP_FMAC3S const char* SOAP_FMAC4S soap_uddi2__truncated2s(struct soap*, enum uddi2__truncated);
SOAP_FMAC3 enum uddi2__truncated * SOAP_FMAC4 soap_get_uddi2__truncated(struct soap*, enum uddi2__truncated *, const char*, const char*);
SOAP_FMAC3 enum uddi2__truncated * SOAP_FMAC4 soap_in_uddi2__truncated(struct soap*, const char*, enum uddi2__truncated *, const char*);

SOAP_FMAC3S int SOAP_FMAC4S soap_s2uddi2__truncated(struct soap*, const char*, enum uddi2__truncated *);

#ifndef SOAP_TYPE_uddi2__direction
#define SOAP_TYPE_uddi2__direction (96)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_uddi2__direction(struct soap*, enum uddi2__direction *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_uddi2__direction(struct soap*, const enum uddi2__direction *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__direction(struct soap*, const char*, int, const enum uddi2__direction *, const char*);

SOAP_FMAC3S const char* SOAP_FMAC4S soap_uddi2__direction2s(struct soap*, enum uddi2__direction);
SOAP_FMAC3 enum uddi2__direction * SOAP_FMAC4 soap_get_uddi2__direction(struct soap*, enum uddi2__direction *, const char*, const char*);
SOAP_FMAC3 enum uddi2__direction * SOAP_FMAC4 soap_in_uddi2__direction(struct soap*, const char*, enum uddi2__direction *, const char*);

SOAP_FMAC3S int SOAP_FMAC4S soap_s2uddi2__direction(struct soap*, const char*, enum uddi2__direction *);

#ifndef SOAP_TYPE__dispositionReport
#define SOAP_TYPE__dispositionReport (306)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out__dispositionReport(struct soap*, const char*, int, const _dispositionReport *, const char*);
SOAP_FMAC3 _dispositionReport * SOAP_FMAC4 soap_get__dispositionReport(struct soap*, _dispositionReport *, const char*, const char*);
SOAP_FMAC3 _dispositionReport * SOAP_FMAC4 soap_in__dispositionReport(struct soap*, const char*, _dispositionReport *, const char*);

SOAP_FMAC5 _dispositionReport * SOAP_FMAC6 soap_new__dispositionReport(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete__dispositionReport(struct soap*, _dispositionReport*);
SOAP_FMAC5 _dispositionReport * SOAP_FMAC6 soap_instantiate__dispositionReport(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy__dispositionReport(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__tModelList
#define SOAP_TYPE_uddi2__tModelList (91)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__tModelList(struct soap*, const char*, int, const uddi2__tModelList *, const char*);
SOAP_FMAC3 uddi2__tModelList * SOAP_FMAC4 soap_get_uddi2__tModelList(struct soap*, uddi2__tModelList *, const char*, const char*);
SOAP_FMAC3 uddi2__tModelList * SOAP_FMAC4 soap_in_uddi2__tModelList(struct soap*, const char*, uddi2__tModelList *, const char*);

SOAP_FMAC5 uddi2__tModelList * SOAP_FMAC6 soap_new_uddi2__tModelList(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__tModelList(struct soap*, uddi2__tModelList*);
SOAP_FMAC5 uddi2__tModelList * SOAP_FMAC6 soap_instantiate_uddi2__tModelList(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__tModelList(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__tModelDetail
#define SOAP_TYPE_uddi2__tModelDetail (90)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__tModelDetail(struct soap*, const char*, int, const uddi2__tModelDetail *, const char*);
SOAP_FMAC3 uddi2__tModelDetail * SOAP_FMAC4 soap_get_uddi2__tModelDetail(struct soap*, uddi2__tModelDetail *, const char*, const char*);
SOAP_FMAC3 uddi2__tModelDetail * SOAP_FMAC4 soap_in_uddi2__tModelDetail(struct soap*, const char*, uddi2__tModelDetail *, const char*);

SOAP_FMAC5 uddi2__tModelDetail * SOAP_FMAC6 soap_new_uddi2__tModelDetail(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__tModelDetail(struct soap*, uddi2__tModelDetail*);
SOAP_FMAC5 uddi2__tModelDetail * SOAP_FMAC6 soap_instantiate_uddi2__tModelDetail(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__tModelDetail(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__serviceList
#define SOAP_TYPE_uddi2__serviceList (89)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__serviceList(struct soap*, const char*, int, const uddi2__serviceList *, const char*);
SOAP_FMAC3 uddi2__serviceList * SOAP_FMAC4 soap_get_uddi2__serviceList(struct soap*, uddi2__serviceList *, const char*, const char*);
SOAP_FMAC3 uddi2__serviceList * SOAP_FMAC4 soap_in_uddi2__serviceList(struct soap*, const char*, uddi2__serviceList *, const char*);

SOAP_FMAC5 uddi2__serviceList * SOAP_FMAC6 soap_new_uddi2__serviceList(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__serviceList(struct soap*, uddi2__serviceList*);
SOAP_FMAC5 uddi2__serviceList * SOAP_FMAC6 soap_instantiate_uddi2__serviceList(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__serviceList(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__serviceDetail
#define SOAP_TYPE_uddi2__serviceDetail (88)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__serviceDetail(struct soap*, const char*, int, const uddi2__serviceDetail *, const char*);
SOAP_FMAC3 uddi2__serviceDetail * SOAP_FMAC4 soap_get_uddi2__serviceDetail(struct soap*, uddi2__serviceDetail *, const char*, const char*);
SOAP_FMAC3 uddi2__serviceDetail * SOAP_FMAC4 soap_in_uddi2__serviceDetail(struct soap*, const char*, uddi2__serviceDetail *, const char*);

SOAP_FMAC5 uddi2__serviceDetail * SOAP_FMAC6 soap_new_uddi2__serviceDetail(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__serviceDetail(struct soap*, uddi2__serviceDetail*);
SOAP_FMAC5 uddi2__serviceDetail * SOAP_FMAC6 soap_instantiate_uddi2__serviceDetail(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__serviceDetail(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__relatedBusinessesList
#define SOAP_TYPE_uddi2__relatedBusinessesList (87)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__relatedBusinessesList(struct soap*, const char*, int, const uddi2__relatedBusinessesList *, const char*);
SOAP_FMAC3 uddi2__relatedBusinessesList * SOAP_FMAC4 soap_get_uddi2__relatedBusinessesList(struct soap*, uddi2__relatedBusinessesList *, const char*, const char*);
SOAP_FMAC3 uddi2__relatedBusinessesList * SOAP_FMAC4 soap_in_uddi2__relatedBusinessesList(struct soap*, const char*, uddi2__relatedBusinessesList *, const char*);

SOAP_FMAC5 uddi2__relatedBusinessesList * SOAP_FMAC6 soap_new_uddi2__relatedBusinessesList(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__relatedBusinessesList(struct soap*, uddi2__relatedBusinessesList*);
SOAP_FMAC5 uddi2__relatedBusinessesList * SOAP_FMAC6 soap_instantiate_uddi2__relatedBusinessesList(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__relatedBusinessesList(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__registeredInfo
#define SOAP_TYPE_uddi2__registeredInfo (86)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__registeredInfo(struct soap*, const char*, int, const uddi2__registeredInfo *, const char*);
SOAP_FMAC3 uddi2__registeredInfo * SOAP_FMAC4 soap_get_uddi2__registeredInfo(struct soap*, uddi2__registeredInfo *, const char*, const char*);
SOAP_FMAC3 uddi2__registeredInfo * SOAP_FMAC4 soap_in_uddi2__registeredInfo(struct soap*, const char*, uddi2__registeredInfo *, const char*);

SOAP_FMAC5 uddi2__registeredInfo * SOAP_FMAC6 soap_new_uddi2__registeredInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__registeredInfo(struct soap*, uddi2__registeredInfo*);
SOAP_FMAC5 uddi2__registeredInfo * SOAP_FMAC6 soap_instantiate_uddi2__registeredInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__registeredInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__publisherAssertions
#define SOAP_TYPE_uddi2__publisherAssertions (85)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__publisherAssertions(struct soap*, const char*, int, const uddi2__publisherAssertions *, const char*);
SOAP_FMAC3 uddi2__publisherAssertions * SOAP_FMAC4 soap_get_uddi2__publisherAssertions(struct soap*, uddi2__publisherAssertions *, const char*, const char*);
SOAP_FMAC3 uddi2__publisherAssertions * SOAP_FMAC4 soap_in_uddi2__publisherAssertions(struct soap*, const char*, uddi2__publisherAssertions *, const char*);

SOAP_FMAC5 uddi2__publisherAssertions * SOAP_FMAC6 soap_new_uddi2__publisherAssertions(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__publisherAssertions(struct soap*, uddi2__publisherAssertions*);
SOAP_FMAC5 uddi2__publisherAssertions * SOAP_FMAC6 soap_instantiate_uddi2__publisherAssertions(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__publisherAssertions(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__businessList
#define SOAP_TYPE_uddi2__businessList (84)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__businessList(struct soap*, const char*, int, const uddi2__businessList *, const char*);
SOAP_FMAC3 uddi2__businessList * SOAP_FMAC4 soap_get_uddi2__businessList(struct soap*, uddi2__businessList *, const char*, const char*);
SOAP_FMAC3 uddi2__businessList * SOAP_FMAC4 soap_in_uddi2__businessList(struct soap*, const char*, uddi2__businessList *, const char*);

SOAP_FMAC5 uddi2__businessList * SOAP_FMAC6 soap_new_uddi2__businessList(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__businessList(struct soap*, uddi2__businessList*);
SOAP_FMAC5 uddi2__businessList * SOAP_FMAC6 soap_instantiate_uddi2__businessList(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__businessList(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__businessDetailExt
#define SOAP_TYPE_uddi2__businessDetailExt (83)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__businessDetailExt(struct soap*, const char*, int, const uddi2__businessDetailExt *, const char*);
SOAP_FMAC3 uddi2__businessDetailExt * SOAP_FMAC4 soap_get_uddi2__businessDetailExt(struct soap*, uddi2__businessDetailExt *, const char*, const char*);
SOAP_FMAC3 uddi2__businessDetailExt * SOAP_FMAC4 soap_in_uddi2__businessDetailExt(struct soap*, const char*, uddi2__businessDetailExt *, const char*);

SOAP_FMAC5 uddi2__businessDetailExt * SOAP_FMAC6 soap_new_uddi2__businessDetailExt(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__businessDetailExt(struct soap*, uddi2__businessDetailExt*);
SOAP_FMAC5 uddi2__businessDetailExt * SOAP_FMAC6 soap_instantiate_uddi2__businessDetailExt(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__businessDetailExt(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__businessDetail
#define SOAP_TYPE_uddi2__businessDetail (82)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__businessDetail(struct soap*, const char*, int, const uddi2__businessDetail *, const char*);
SOAP_FMAC3 uddi2__businessDetail * SOAP_FMAC4 soap_get_uddi2__businessDetail(struct soap*, uddi2__businessDetail *, const char*, const char*);
SOAP_FMAC3 uddi2__businessDetail * SOAP_FMAC4 soap_in_uddi2__businessDetail(struct soap*, const char*, uddi2__businessDetail *, const char*);

SOAP_FMAC5 uddi2__businessDetail * SOAP_FMAC6 soap_new_uddi2__businessDetail(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__businessDetail(struct soap*, uddi2__businessDetail*);
SOAP_FMAC5 uddi2__businessDetail * SOAP_FMAC6 soap_instantiate_uddi2__businessDetail(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__businessDetail(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__bindingDetail
#define SOAP_TYPE_uddi2__bindingDetail (81)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__bindingDetail(struct soap*, const char*, int, const uddi2__bindingDetail *, const char*);
SOAP_FMAC3 uddi2__bindingDetail * SOAP_FMAC4 soap_get_uddi2__bindingDetail(struct soap*, uddi2__bindingDetail *, const char*, const char*);
SOAP_FMAC3 uddi2__bindingDetail * SOAP_FMAC4 soap_in_uddi2__bindingDetail(struct soap*, const char*, uddi2__bindingDetail *, const char*);

SOAP_FMAC5 uddi2__bindingDetail * SOAP_FMAC6 soap_new_uddi2__bindingDetail(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__bindingDetail(struct soap*, uddi2__bindingDetail*);
SOAP_FMAC5 uddi2__bindingDetail * SOAP_FMAC6 soap_instantiate_uddi2__bindingDetail(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__bindingDetail(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__authToken
#define SOAP_TYPE_uddi2__authToken (80)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__authToken(struct soap*, const char*, int, const uddi2__authToken *, const char*);
SOAP_FMAC3 uddi2__authToken * SOAP_FMAC4 soap_get_uddi2__authToken(struct soap*, uddi2__authToken *, const char*, const char*);
SOAP_FMAC3 uddi2__authToken * SOAP_FMAC4 soap_in_uddi2__authToken(struct soap*, const char*, uddi2__authToken *, const char*);

SOAP_FMAC5 uddi2__authToken * SOAP_FMAC6 soap_new_uddi2__authToken(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__authToken(struct soap*, uddi2__authToken*);
SOAP_FMAC5 uddi2__authToken * SOAP_FMAC6 soap_instantiate_uddi2__authToken(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__authToken(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__assertionStatusReport
#define SOAP_TYPE_uddi2__assertionStatusReport (79)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__assertionStatusReport(struct soap*, const char*, int, const uddi2__assertionStatusReport *, const char*);
SOAP_FMAC3 uddi2__assertionStatusReport * SOAP_FMAC4 soap_get_uddi2__assertionStatusReport(struct soap*, uddi2__assertionStatusReport *, const char*, const char*);
SOAP_FMAC3 uddi2__assertionStatusReport * SOAP_FMAC4 soap_in_uddi2__assertionStatusReport(struct soap*, const char*, uddi2__assertionStatusReport *, const char*);

SOAP_FMAC5 uddi2__assertionStatusReport * SOAP_FMAC6 soap_new_uddi2__assertionStatusReport(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__assertionStatusReport(struct soap*, uddi2__assertionStatusReport*);
SOAP_FMAC5 uddi2__assertionStatusReport * SOAP_FMAC6 soap_instantiate_uddi2__assertionStatusReport(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__assertionStatusReport(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__validate_USCOREvalues
#define SOAP_TYPE_uddi2__validate_USCOREvalues (78)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__validate_USCOREvalues(struct soap*, const char*, int, const uddi2__validate_USCOREvalues *, const char*);
SOAP_FMAC3 uddi2__validate_USCOREvalues * SOAP_FMAC4 soap_get_uddi2__validate_USCOREvalues(struct soap*, uddi2__validate_USCOREvalues *, const char*, const char*);
SOAP_FMAC3 uddi2__validate_USCOREvalues * SOAP_FMAC4 soap_in_uddi2__validate_USCOREvalues(struct soap*, const char*, uddi2__validate_USCOREvalues *, const char*);

SOAP_FMAC5 uddi2__validate_USCOREvalues * SOAP_FMAC6 soap_new_uddi2__validate_USCOREvalues(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__validate_USCOREvalues(struct soap*, uddi2__validate_USCOREvalues*);
SOAP_FMAC5 uddi2__validate_USCOREvalues * SOAP_FMAC6 soap_instantiate_uddi2__validate_USCOREvalues(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__validate_USCOREvalues(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__set_USCOREpublisherAssertions
#define SOAP_TYPE_uddi2__set_USCOREpublisherAssertions (77)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__set_USCOREpublisherAssertions(struct soap*, const char*, int, const uddi2__set_USCOREpublisherAssertions *, const char*);
SOAP_FMAC3 uddi2__set_USCOREpublisherAssertions * SOAP_FMAC4 soap_get_uddi2__set_USCOREpublisherAssertions(struct soap*, uddi2__set_USCOREpublisherAssertions *, const char*, const char*);
SOAP_FMAC3 uddi2__set_USCOREpublisherAssertions * SOAP_FMAC4 soap_in_uddi2__set_USCOREpublisherAssertions(struct soap*, const char*, uddi2__set_USCOREpublisherAssertions *, const char*);

SOAP_FMAC5 uddi2__set_USCOREpublisherAssertions * SOAP_FMAC6 soap_new_uddi2__set_USCOREpublisherAssertions(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__set_USCOREpublisherAssertions(struct soap*, uddi2__set_USCOREpublisherAssertions*);
SOAP_FMAC5 uddi2__set_USCOREpublisherAssertions * SOAP_FMAC6 soap_instantiate_uddi2__set_USCOREpublisherAssertions(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__set_USCOREpublisherAssertions(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__save_USCOREtModel
#define SOAP_TYPE_uddi2__save_USCOREtModel (76)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__save_USCOREtModel(struct soap*, const char*, int, const uddi2__save_USCOREtModel *, const char*);
SOAP_FMAC3 uddi2__save_USCOREtModel * SOAP_FMAC4 soap_get_uddi2__save_USCOREtModel(struct soap*, uddi2__save_USCOREtModel *, const char*, const char*);
SOAP_FMAC3 uddi2__save_USCOREtModel * SOAP_FMAC4 soap_in_uddi2__save_USCOREtModel(struct soap*, const char*, uddi2__save_USCOREtModel *, const char*);

SOAP_FMAC5 uddi2__save_USCOREtModel * SOAP_FMAC6 soap_new_uddi2__save_USCOREtModel(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__save_USCOREtModel(struct soap*, uddi2__save_USCOREtModel*);
SOAP_FMAC5 uddi2__save_USCOREtModel * SOAP_FMAC6 soap_instantiate_uddi2__save_USCOREtModel(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__save_USCOREtModel(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__save_USCOREservice
#define SOAP_TYPE_uddi2__save_USCOREservice (75)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__save_USCOREservice(struct soap*, const char*, int, const uddi2__save_USCOREservice *, const char*);
SOAP_FMAC3 uddi2__save_USCOREservice * SOAP_FMAC4 soap_get_uddi2__save_USCOREservice(struct soap*, uddi2__save_USCOREservice *, const char*, const char*);
SOAP_FMAC3 uddi2__save_USCOREservice * SOAP_FMAC4 soap_in_uddi2__save_USCOREservice(struct soap*, const char*, uddi2__save_USCOREservice *, const char*);

SOAP_FMAC5 uddi2__save_USCOREservice * SOAP_FMAC6 soap_new_uddi2__save_USCOREservice(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__save_USCOREservice(struct soap*, uddi2__save_USCOREservice*);
SOAP_FMAC5 uddi2__save_USCOREservice * SOAP_FMAC6 soap_instantiate_uddi2__save_USCOREservice(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__save_USCOREservice(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__save_USCOREbusiness
#define SOAP_TYPE_uddi2__save_USCOREbusiness (74)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__save_USCOREbusiness(struct soap*, const char*, int, const uddi2__save_USCOREbusiness *, const char*);
SOAP_FMAC3 uddi2__save_USCOREbusiness * SOAP_FMAC4 soap_get_uddi2__save_USCOREbusiness(struct soap*, uddi2__save_USCOREbusiness *, const char*, const char*);
SOAP_FMAC3 uddi2__save_USCOREbusiness * SOAP_FMAC4 soap_in_uddi2__save_USCOREbusiness(struct soap*, const char*, uddi2__save_USCOREbusiness *, const char*);

SOAP_FMAC5 uddi2__save_USCOREbusiness * SOAP_FMAC6 soap_new_uddi2__save_USCOREbusiness(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__save_USCOREbusiness(struct soap*, uddi2__save_USCOREbusiness*);
SOAP_FMAC5 uddi2__save_USCOREbusiness * SOAP_FMAC6 soap_instantiate_uddi2__save_USCOREbusiness(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__save_USCOREbusiness(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__save_USCOREbinding
#define SOAP_TYPE_uddi2__save_USCOREbinding (73)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__save_USCOREbinding(struct soap*, const char*, int, const uddi2__save_USCOREbinding *, const char*);
SOAP_FMAC3 uddi2__save_USCOREbinding * SOAP_FMAC4 soap_get_uddi2__save_USCOREbinding(struct soap*, uddi2__save_USCOREbinding *, const char*, const char*);
SOAP_FMAC3 uddi2__save_USCOREbinding * SOAP_FMAC4 soap_in_uddi2__save_USCOREbinding(struct soap*, const char*, uddi2__save_USCOREbinding *, const char*);

SOAP_FMAC5 uddi2__save_USCOREbinding * SOAP_FMAC6 soap_new_uddi2__save_USCOREbinding(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__save_USCOREbinding(struct soap*, uddi2__save_USCOREbinding*);
SOAP_FMAC5 uddi2__save_USCOREbinding * SOAP_FMAC6 soap_instantiate_uddi2__save_USCOREbinding(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__save_USCOREbinding(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__get_USCOREtModelDetail
#define SOAP_TYPE_uddi2__get_USCOREtModelDetail (72)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__get_USCOREtModelDetail(struct soap*, const char*, int, const uddi2__get_USCOREtModelDetail *, const char*);
SOAP_FMAC3 uddi2__get_USCOREtModelDetail * SOAP_FMAC4 soap_get_uddi2__get_USCOREtModelDetail(struct soap*, uddi2__get_USCOREtModelDetail *, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREtModelDetail * SOAP_FMAC4 soap_in_uddi2__get_USCOREtModelDetail(struct soap*, const char*, uddi2__get_USCOREtModelDetail *, const char*);

SOAP_FMAC5 uddi2__get_USCOREtModelDetail * SOAP_FMAC6 soap_new_uddi2__get_USCOREtModelDetail(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__get_USCOREtModelDetail(struct soap*, uddi2__get_USCOREtModelDetail*);
SOAP_FMAC5 uddi2__get_USCOREtModelDetail * SOAP_FMAC6 soap_instantiate_uddi2__get_USCOREtModelDetail(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__get_USCOREtModelDetail(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__get_USCOREserviceDetail
#define SOAP_TYPE_uddi2__get_USCOREserviceDetail (71)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__get_USCOREserviceDetail(struct soap*, const char*, int, const uddi2__get_USCOREserviceDetail *, const char*);
SOAP_FMAC3 uddi2__get_USCOREserviceDetail * SOAP_FMAC4 soap_get_uddi2__get_USCOREserviceDetail(struct soap*, uddi2__get_USCOREserviceDetail *, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREserviceDetail * SOAP_FMAC4 soap_in_uddi2__get_USCOREserviceDetail(struct soap*, const char*, uddi2__get_USCOREserviceDetail *, const char*);

SOAP_FMAC5 uddi2__get_USCOREserviceDetail * SOAP_FMAC6 soap_new_uddi2__get_USCOREserviceDetail(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__get_USCOREserviceDetail(struct soap*, uddi2__get_USCOREserviceDetail*);
SOAP_FMAC5 uddi2__get_USCOREserviceDetail * SOAP_FMAC6 soap_instantiate_uddi2__get_USCOREserviceDetail(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__get_USCOREserviceDetail(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__get_USCOREregisteredInfo
#define SOAP_TYPE_uddi2__get_USCOREregisteredInfo (70)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__get_USCOREregisteredInfo(struct soap*, const char*, int, const uddi2__get_USCOREregisteredInfo *, const char*);
SOAP_FMAC3 uddi2__get_USCOREregisteredInfo * SOAP_FMAC4 soap_get_uddi2__get_USCOREregisteredInfo(struct soap*, uddi2__get_USCOREregisteredInfo *, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREregisteredInfo * SOAP_FMAC4 soap_in_uddi2__get_USCOREregisteredInfo(struct soap*, const char*, uddi2__get_USCOREregisteredInfo *, const char*);

SOAP_FMAC5 uddi2__get_USCOREregisteredInfo * SOAP_FMAC6 soap_new_uddi2__get_USCOREregisteredInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__get_USCOREregisteredInfo(struct soap*, uddi2__get_USCOREregisteredInfo*);
SOAP_FMAC5 uddi2__get_USCOREregisteredInfo * SOAP_FMAC6 soap_instantiate_uddi2__get_USCOREregisteredInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__get_USCOREregisteredInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__get_USCOREpublisherAssertions
#define SOAP_TYPE_uddi2__get_USCOREpublisherAssertions (69)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__get_USCOREpublisherAssertions(struct soap*, const char*, int, const uddi2__get_USCOREpublisherAssertions *, const char*);
SOAP_FMAC3 uddi2__get_USCOREpublisherAssertions * SOAP_FMAC4 soap_get_uddi2__get_USCOREpublisherAssertions(struct soap*, uddi2__get_USCOREpublisherAssertions *, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREpublisherAssertions * SOAP_FMAC4 soap_in_uddi2__get_USCOREpublisherAssertions(struct soap*, const char*, uddi2__get_USCOREpublisherAssertions *, const char*);

SOAP_FMAC5 uddi2__get_USCOREpublisherAssertions * SOAP_FMAC6 soap_new_uddi2__get_USCOREpublisherAssertions(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__get_USCOREpublisherAssertions(struct soap*, uddi2__get_USCOREpublisherAssertions*);
SOAP_FMAC5 uddi2__get_USCOREpublisherAssertions * SOAP_FMAC6 soap_instantiate_uddi2__get_USCOREpublisherAssertions(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__get_USCOREpublisherAssertions(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__get_USCOREbusinessDetailExt
#define SOAP_TYPE_uddi2__get_USCOREbusinessDetailExt (68)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__get_USCOREbusinessDetailExt(struct soap*, const char*, int, const uddi2__get_USCOREbusinessDetailExt *, const char*);
SOAP_FMAC3 uddi2__get_USCOREbusinessDetailExt * SOAP_FMAC4 soap_get_uddi2__get_USCOREbusinessDetailExt(struct soap*, uddi2__get_USCOREbusinessDetailExt *, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREbusinessDetailExt * SOAP_FMAC4 soap_in_uddi2__get_USCOREbusinessDetailExt(struct soap*, const char*, uddi2__get_USCOREbusinessDetailExt *, const char*);

SOAP_FMAC5 uddi2__get_USCOREbusinessDetailExt * SOAP_FMAC6 soap_new_uddi2__get_USCOREbusinessDetailExt(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__get_USCOREbusinessDetailExt(struct soap*, uddi2__get_USCOREbusinessDetailExt*);
SOAP_FMAC5 uddi2__get_USCOREbusinessDetailExt * SOAP_FMAC6 soap_instantiate_uddi2__get_USCOREbusinessDetailExt(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__get_USCOREbusinessDetailExt(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__get_USCOREbusinessDetail
#define SOAP_TYPE_uddi2__get_USCOREbusinessDetail (67)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__get_USCOREbusinessDetail(struct soap*, const char*, int, const uddi2__get_USCOREbusinessDetail *, const char*);
SOAP_FMAC3 uddi2__get_USCOREbusinessDetail * SOAP_FMAC4 soap_get_uddi2__get_USCOREbusinessDetail(struct soap*, uddi2__get_USCOREbusinessDetail *, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREbusinessDetail * SOAP_FMAC4 soap_in_uddi2__get_USCOREbusinessDetail(struct soap*, const char*, uddi2__get_USCOREbusinessDetail *, const char*);

SOAP_FMAC5 uddi2__get_USCOREbusinessDetail * SOAP_FMAC6 soap_new_uddi2__get_USCOREbusinessDetail(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__get_USCOREbusinessDetail(struct soap*, uddi2__get_USCOREbusinessDetail*);
SOAP_FMAC5 uddi2__get_USCOREbusinessDetail * SOAP_FMAC6 soap_instantiate_uddi2__get_USCOREbusinessDetail(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__get_USCOREbusinessDetail(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__get_USCOREbindingDetail
#define SOAP_TYPE_uddi2__get_USCOREbindingDetail (66)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__get_USCOREbindingDetail(struct soap*, const char*, int, const uddi2__get_USCOREbindingDetail *, const char*);
SOAP_FMAC3 uddi2__get_USCOREbindingDetail * SOAP_FMAC4 soap_get_uddi2__get_USCOREbindingDetail(struct soap*, uddi2__get_USCOREbindingDetail *, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREbindingDetail * SOAP_FMAC4 soap_in_uddi2__get_USCOREbindingDetail(struct soap*, const char*, uddi2__get_USCOREbindingDetail *, const char*);

SOAP_FMAC5 uddi2__get_USCOREbindingDetail * SOAP_FMAC6 soap_new_uddi2__get_USCOREbindingDetail(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__get_USCOREbindingDetail(struct soap*, uddi2__get_USCOREbindingDetail*);
SOAP_FMAC5 uddi2__get_USCOREbindingDetail * SOAP_FMAC6 soap_instantiate_uddi2__get_USCOREbindingDetail(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__get_USCOREbindingDetail(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__get_USCOREauthToken
#define SOAP_TYPE_uddi2__get_USCOREauthToken (65)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__get_USCOREauthToken(struct soap*, const char*, int, const uddi2__get_USCOREauthToken *, const char*);
SOAP_FMAC3 uddi2__get_USCOREauthToken * SOAP_FMAC4 soap_get_uddi2__get_USCOREauthToken(struct soap*, uddi2__get_USCOREauthToken *, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREauthToken * SOAP_FMAC4 soap_in_uddi2__get_USCOREauthToken(struct soap*, const char*, uddi2__get_USCOREauthToken *, const char*);

SOAP_FMAC5 uddi2__get_USCOREauthToken * SOAP_FMAC6 soap_new_uddi2__get_USCOREauthToken(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__get_USCOREauthToken(struct soap*, uddi2__get_USCOREauthToken*);
SOAP_FMAC5 uddi2__get_USCOREauthToken * SOAP_FMAC6 soap_instantiate_uddi2__get_USCOREauthToken(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__get_USCOREauthToken(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__get_USCOREassertionStatusReport
#define SOAP_TYPE_uddi2__get_USCOREassertionStatusReport (64)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__get_USCOREassertionStatusReport(struct soap*, const char*, int, const uddi2__get_USCOREassertionStatusReport *, const char*);
SOAP_FMAC3 uddi2__get_USCOREassertionStatusReport * SOAP_FMAC4 soap_get_uddi2__get_USCOREassertionStatusReport(struct soap*, uddi2__get_USCOREassertionStatusReport *, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREassertionStatusReport * SOAP_FMAC4 soap_in_uddi2__get_USCOREassertionStatusReport(struct soap*, const char*, uddi2__get_USCOREassertionStatusReport *, const char*);

SOAP_FMAC5 uddi2__get_USCOREassertionStatusReport * SOAP_FMAC6 soap_new_uddi2__get_USCOREassertionStatusReport(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__get_USCOREassertionStatusReport(struct soap*, uddi2__get_USCOREassertionStatusReport*);
SOAP_FMAC5 uddi2__get_USCOREassertionStatusReport * SOAP_FMAC6 soap_instantiate_uddi2__get_USCOREassertionStatusReport(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__get_USCOREassertionStatusReport(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__find_USCOREtModel
#define SOAP_TYPE_uddi2__find_USCOREtModel (63)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__find_USCOREtModel(struct soap*, const char*, int, const uddi2__find_USCOREtModel *, const char*);
SOAP_FMAC3 uddi2__find_USCOREtModel * SOAP_FMAC4 soap_get_uddi2__find_USCOREtModel(struct soap*, uddi2__find_USCOREtModel *, const char*, const char*);
SOAP_FMAC3 uddi2__find_USCOREtModel * SOAP_FMAC4 soap_in_uddi2__find_USCOREtModel(struct soap*, const char*, uddi2__find_USCOREtModel *, const char*);

SOAP_FMAC5 uddi2__find_USCOREtModel * SOAP_FMAC6 soap_new_uddi2__find_USCOREtModel(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__find_USCOREtModel(struct soap*, uddi2__find_USCOREtModel*);
SOAP_FMAC5 uddi2__find_USCOREtModel * SOAP_FMAC6 soap_instantiate_uddi2__find_USCOREtModel(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__find_USCOREtModel(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__find_USCOREservice
#define SOAP_TYPE_uddi2__find_USCOREservice (62)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__find_USCOREservice(struct soap*, const char*, int, const uddi2__find_USCOREservice *, const char*);
SOAP_FMAC3 uddi2__find_USCOREservice * SOAP_FMAC4 soap_get_uddi2__find_USCOREservice(struct soap*, uddi2__find_USCOREservice *, const char*, const char*);
SOAP_FMAC3 uddi2__find_USCOREservice * SOAP_FMAC4 soap_in_uddi2__find_USCOREservice(struct soap*, const char*, uddi2__find_USCOREservice *, const char*);

SOAP_FMAC5 uddi2__find_USCOREservice * SOAP_FMAC6 soap_new_uddi2__find_USCOREservice(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__find_USCOREservice(struct soap*, uddi2__find_USCOREservice*);
SOAP_FMAC5 uddi2__find_USCOREservice * SOAP_FMAC6 soap_instantiate_uddi2__find_USCOREservice(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__find_USCOREservice(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__find_USCORErelatedBusinesses
#define SOAP_TYPE_uddi2__find_USCORErelatedBusinesses (61)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__find_USCORErelatedBusinesses(struct soap*, const char*, int, const uddi2__find_USCORErelatedBusinesses *, const char*);
SOAP_FMAC3 uddi2__find_USCORErelatedBusinesses * SOAP_FMAC4 soap_get_uddi2__find_USCORErelatedBusinesses(struct soap*, uddi2__find_USCORErelatedBusinesses *, const char*, const char*);
SOAP_FMAC3 uddi2__find_USCORErelatedBusinesses * SOAP_FMAC4 soap_in_uddi2__find_USCORErelatedBusinesses(struct soap*, const char*, uddi2__find_USCORErelatedBusinesses *, const char*);

SOAP_FMAC5 uddi2__find_USCORErelatedBusinesses * SOAP_FMAC6 soap_new_uddi2__find_USCORErelatedBusinesses(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__find_USCORErelatedBusinesses(struct soap*, uddi2__find_USCORErelatedBusinesses*);
SOAP_FMAC5 uddi2__find_USCORErelatedBusinesses * SOAP_FMAC6 soap_instantiate_uddi2__find_USCORErelatedBusinesses(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__find_USCORErelatedBusinesses(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__find_USCOREbusiness
#define SOAP_TYPE_uddi2__find_USCOREbusiness (60)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__find_USCOREbusiness(struct soap*, const char*, int, const uddi2__find_USCOREbusiness *, const char*);
SOAP_FMAC3 uddi2__find_USCOREbusiness * SOAP_FMAC4 soap_get_uddi2__find_USCOREbusiness(struct soap*, uddi2__find_USCOREbusiness *, const char*, const char*);
SOAP_FMAC3 uddi2__find_USCOREbusiness * SOAP_FMAC4 soap_in_uddi2__find_USCOREbusiness(struct soap*, const char*, uddi2__find_USCOREbusiness *, const char*);

SOAP_FMAC5 uddi2__find_USCOREbusiness * SOAP_FMAC6 soap_new_uddi2__find_USCOREbusiness(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__find_USCOREbusiness(struct soap*, uddi2__find_USCOREbusiness*);
SOAP_FMAC5 uddi2__find_USCOREbusiness * SOAP_FMAC6 soap_instantiate_uddi2__find_USCOREbusiness(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__find_USCOREbusiness(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__find_USCOREbinding
#define SOAP_TYPE_uddi2__find_USCOREbinding (59)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__find_USCOREbinding(struct soap*, const char*, int, const uddi2__find_USCOREbinding *, const char*);
SOAP_FMAC3 uddi2__find_USCOREbinding * SOAP_FMAC4 soap_get_uddi2__find_USCOREbinding(struct soap*, uddi2__find_USCOREbinding *, const char*, const char*);
SOAP_FMAC3 uddi2__find_USCOREbinding * SOAP_FMAC4 soap_in_uddi2__find_USCOREbinding(struct soap*, const char*, uddi2__find_USCOREbinding *, const char*);

SOAP_FMAC5 uddi2__find_USCOREbinding * SOAP_FMAC6 soap_new_uddi2__find_USCOREbinding(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__find_USCOREbinding(struct soap*, uddi2__find_USCOREbinding*);
SOAP_FMAC5 uddi2__find_USCOREbinding * SOAP_FMAC6 soap_instantiate_uddi2__find_USCOREbinding(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__find_USCOREbinding(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__discard_USCOREauthToken
#define SOAP_TYPE_uddi2__discard_USCOREauthToken (58)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__discard_USCOREauthToken(struct soap*, const char*, int, const uddi2__discard_USCOREauthToken *, const char*);
SOAP_FMAC3 uddi2__discard_USCOREauthToken * SOAP_FMAC4 soap_get_uddi2__discard_USCOREauthToken(struct soap*, uddi2__discard_USCOREauthToken *, const char*, const char*);
SOAP_FMAC3 uddi2__discard_USCOREauthToken * SOAP_FMAC4 soap_in_uddi2__discard_USCOREauthToken(struct soap*, const char*, uddi2__discard_USCOREauthToken *, const char*);

SOAP_FMAC5 uddi2__discard_USCOREauthToken * SOAP_FMAC6 soap_new_uddi2__discard_USCOREauthToken(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__discard_USCOREauthToken(struct soap*, uddi2__discard_USCOREauthToken*);
SOAP_FMAC5 uddi2__discard_USCOREauthToken * SOAP_FMAC6 soap_instantiate_uddi2__discard_USCOREauthToken(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__discard_USCOREauthToken(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__delete_USCOREtModel
#define SOAP_TYPE_uddi2__delete_USCOREtModel (57)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__delete_USCOREtModel(struct soap*, const char*, int, const uddi2__delete_USCOREtModel *, const char*);
SOAP_FMAC3 uddi2__delete_USCOREtModel * SOAP_FMAC4 soap_get_uddi2__delete_USCOREtModel(struct soap*, uddi2__delete_USCOREtModel *, const char*, const char*);
SOAP_FMAC3 uddi2__delete_USCOREtModel * SOAP_FMAC4 soap_in_uddi2__delete_USCOREtModel(struct soap*, const char*, uddi2__delete_USCOREtModel *, const char*);

SOAP_FMAC5 uddi2__delete_USCOREtModel * SOAP_FMAC6 soap_new_uddi2__delete_USCOREtModel(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__delete_USCOREtModel(struct soap*, uddi2__delete_USCOREtModel*);
SOAP_FMAC5 uddi2__delete_USCOREtModel * SOAP_FMAC6 soap_instantiate_uddi2__delete_USCOREtModel(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__delete_USCOREtModel(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__delete_USCOREservice
#define SOAP_TYPE_uddi2__delete_USCOREservice (56)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__delete_USCOREservice(struct soap*, const char*, int, const uddi2__delete_USCOREservice *, const char*);
SOAP_FMAC3 uddi2__delete_USCOREservice * SOAP_FMAC4 soap_get_uddi2__delete_USCOREservice(struct soap*, uddi2__delete_USCOREservice *, const char*, const char*);
SOAP_FMAC3 uddi2__delete_USCOREservice * SOAP_FMAC4 soap_in_uddi2__delete_USCOREservice(struct soap*, const char*, uddi2__delete_USCOREservice *, const char*);

SOAP_FMAC5 uddi2__delete_USCOREservice * SOAP_FMAC6 soap_new_uddi2__delete_USCOREservice(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__delete_USCOREservice(struct soap*, uddi2__delete_USCOREservice*);
SOAP_FMAC5 uddi2__delete_USCOREservice * SOAP_FMAC6 soap_instantiate_uddi2__delete_USCOREservice(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__delete_USCOREservice(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__delete_USCOREpublisherAssertions
#define SOAP_TYPE_uddi2__delete_USCOREpublisherAssertions (55)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__delete_USCOREpublisherAssertions(struct soap*, const char*, int, const uddi2__delete_USCOREpublisherAssertions *, const char*);
SOAP_FMAC3 uddi2__delete_USCOREpublisherAssertions * SOAP_FMAC4 soap_get_uddi2__delete_USCOREpublisherAssertions(struct soap*, uddi2__delete_USCOREpublisherAssertions *, const char*, const char*);
SOAP_FMAC3 uddi2__delete_USCOREpublisherAssertions * SOAP_FMAC4 soap_in_uddi2__delete_USCOREpublisherAssertions(struct soap*, const char*, uddi2__delete_USCOREpublisherAssertions *, const char*);

SOAP_FMAC5 uddi2__delete_USCOREpublisherAssertions * SOAP_FMAC6 soap_new_uddi2__delete_USCOREpublisherAssertions(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__delete_USCOREpublisherAssertions(struct soap*, uddi2__delete_USCOREpublisherAssertions*);
SOAP_FMAC5 uddi2__delete_USCOREpublisherAssertions * SOAP_FMAC6 soap_instantiate_uddi2__delete_USCOREpublisherAssertions(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__delete_USCOREpublisherAssertions(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__delete_USCOREbusiness
#define SOAP_TYPE_uddi2__delete_USCOREbusiness (54)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__delete_USCOREbusiness(struct soap*, const char*, int, const uddi2__delete_USCOREbusiness *, const char*);
SOAP_FMAC3 uddi2__delete_USCOREbusiness * SOAP_FMAC4 soap_get_uddi2__delete_USCOREbusiness(struct soap*, uddi2__delete_USCOREbusiness *, const char*, const char*);
SOAP_FMAC3 uddi2__delete_USCOREbusiness * SOAP_FMAC4 soap_in_uddi2__delete_USCOREbusiness(struct soap*, const char*, uddi2__delete_USCOREbusiness *, const char*);

SOAP_FMAC5 uddi2__delete_USCOREbusiness * SOAP_FMAC6 soap_new_uddi2__delete_USCOREbusiness(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__delete_USCOREbusiness(struct soap*, uddi2__delete_USCOREbusiness*);
SOAP_FMAC5 uddi2__delete_USCOREbusiness * SOAP_FMAC6 soap_instantiate_uddi2__delete_USCOREbusiness(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__delete_USCOREbusiness(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__delete_USCOREbinding
#define SOAP_TYPE_uddi2__delete_USCOREbinding (53)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__delete_USCOREbinding(struct soap*, const char*, int, const uddi2__delete_USCOREbinding *, const char*);
SOAP_FMAC3 uddi2__delete_USCOREbinding * SOAP_FMAC4 soap_get_uddi2__delete_USCOREbinding(struct soap*, uddi2__delete_USCOREbinding *, const char*, const char*);
SOAP_FMAC3 uddi2__delete_USCOREbinding * SOAP_FMAC4 soap_in_uddi2__delete_USCOREbinding(struct soap*, const char*, uddi2__delete_USCOREbinding *, const char*);

SOAP_FMAC5 uddi2__delete_USCOREbinding * SOAP_FMAC6 soap_new_uddi2__delete_USCOREbinding(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__delete_USCOREbinding(struct soap*, uddi2__delete_USCOREbinding*);
SOAP_FMAC5 uddi2__delete_USCOREbinding * SOAP_FMAC6 soap_instantiate_uddi2__delete_USCOREbinding(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__delete_USCOREbinding(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__add_USCOREpublisherAssertions
#define SOAP_TYPE_uddi2__add_USCOREpublisherAssertions (52)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__add_USCOREpublisherAssertions(struct soap*, const char*, int, const uddi2__add_USCOREpublisherAssertions *, const char*);
SOAP_FMAC3 uddi2__add_USCOREpublisherAssertions * SOAP_FMAC4 soap_get_uddi2__add_USCOREpublisherAssertions(struct soap*, uddi2__add_USCOREpublisherAssertions *, const char*, const char*);
SOAP_FMAC3 uddi2__add_USCOREpublisherAssertions * SOAP_FMAC4 soap_in_uddi2__add_USCOREpublisherAssertions(struct soap*, const char*, uddi2__add_USCOREpublisherAssertions *, const char*);

SOAP_FMAC5 uddi2__add_USCOREpublisherAssertions * SOAP_FMAC6 soap_new_uddi2__add_USCOREpublisherAssertions(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__add_USCOREpublisherAssertions(struct soap*, uddi2__add_USCOREpublisherAssertions*);
SOAP_FMAC5 uddi2__add_USCOREpublisherAssertions * SOAP_FMAC6 soap_instantiate_uddi2__add_USCOREpublisherAssertions(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__add_USCOREpublisherAssertions(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__tModelInstanceInfo
#define SOAP_TYPE_uddi2__tModelInstanceInfo (51)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__tModelInstanceInfo(struct soap*, const char*, int, const uddi2__tModelInstanceInfo *, const char*);
SOAP_FMAC3 uddi2__tModelInstanceInfo * SOAP_FMAC4 soap_get_uddi2__tModelInstanceInfo(struct soap*, uddi2__tModelInstanceInfo *, const char*, const char*);
SOAP_FMAC3 uddi2__tModelInstanceInfo * SOAP_FMAC4 soap_in_uddi2__tModelInstanceInfo(struct soap*, const char*, uddi2__tModelInstanceInfo *, const char*);

SOAP_FMAC5 uddi2__tModelInstanceInfo * SOAP_FMAC6 soap_new_uddi2__tModelInstanceInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__tModelInstanceInfo(struct soap*, uddi2__tModelInstanceInfo*);
SOAP_FMAC5 uddi2__tModelInstanceInfo * SOAP_FMAC6 soap_instantiate_uddi2__tModelInstanceInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__tModelInstanceInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__tModelInstanceDetails
#define SOAP_TYPE_uddi2__tModelInstanceDetails (50)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__tModelInstanceDetails(struct soap*, const char*, int, const uddi2__tModelInstanceDetails *, const char*);
SOAP_FMAC3 uddi2__tModelInstanceDetails * SOAP_FMAC4 soap_get_uddi2__tModelInstanceDetails(struct soap*, uddi2__tModelInstanceDetails *, const char*, const char*);
SOAP_FMAC3 uddi2__tModelInstanceDetails * SOAP_FMAC4 soap_in_uddi2__tModelInstanceDetails(struct soap*, const char*, uddi2__tModelInstanceDetails *, const char*);

SOAP_FMAC5 uddi2__tModelInstanceDetails * SOAP_FMAC6 soap_new_uddi2__tModelInstanceDetails(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__tModelInstanceDetails(struct soap*, uddi2__tModelInstanceDetails*);
SOAP_FMAC5 uddi2__tModelInstanceDetails * SOAP_FMAC6 soap_instantiate_uddi2__tModelInstanceDetails(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__tModelInstanceDetails(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__tModelInfos
#define SOAP_TYPE_uddi2__tModelInfos (49)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__tModelInfos(struct soap*, const char*, int, const uddi2__tModelInfos *, const char*);
SOAP_FMAC3 uddi2__tModelInfos * SOAP_FMAC4 soap_get_uddi2__tModelInfos(struct soap*, uddi2__tModelInfos *, const char*, const char*);
SOAP_FMAC3 uddi2__tModelInfos * SOAP_FMAC4 soap_in_uddi2__tModelInfos(struct soap*, const char*, uddi2__tModelInfos *, const char*);

SOAP_FMAC5 uddi2__tModelInfos * SOAP_FMAC6 soap_new_uddi2__tModelInfos(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__tModelInfos(struct soap*, uddi2__tModelInfos*);
SOAP_FMAC5 uddi2__tModelInfos * SOAP_FMAC6 soap_instantiate_uddi2__tModelInfos(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__tModelInfos(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__tModelInfo
#define SOAP_TYPE_uddi2__tModelInfo (48)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__tModelInfo(struct soap*, const char*, int, const uddi2__tModelInfo *, const char*);
SOAP_FMAC3 uddi2__tModelInfo * SOAP_FMAC4 soap_get_uddi2__tModelInfo(struct soap*, uddi2__tModelInfo *, const char*, const char*);
SOAP_FMAC3 uddi2__tModelInfo * SOAP_FMAC4 soap_in_uddi2__tModelInfo(struct soap*, const char*, uddi2__tModelInfo *, const char*);

SOAP_FMAC5 uddi2__tModelInfo * SOAP_FMAC6 soap_new_uddi2__tModelInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__tModelInfo(struct soap*, uddi2__tModelInfo*);
SOAP_FMAC5 uddi2__tModelInfo * SOAP_FMAC6 soap_instantiate_uddi2__tModelInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__tModelInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__tModelBag
#define SOAP_TYPE_uddi2__tModelBag (47)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__tModelBag(struct soap*, const char*, int, const uddi2__tModelBag *, const char*);
SOAP_FMAC3 uddi2__tModelBag * SOAP_FMAC4 soap_get_uddi2__tModelBag(struct soap*, uddi2__tModelBag *, const char*, const char*);
SOAP_FMAC3 uddi2__tModelBag * SOAP_FMAC4 soap_in_uddi2__tModelBag(struct soap*, const char*, uddi2__tModelBag *, const char*);

SOAP_FMAC5 uddi2__tModelBag * SOAP_FMAC6 soap_new_uddi2__tModelBag(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__tModelBag(struct soap*, uddi2__tModelBag*);
SOAP_FMAC5 uddi2__tModelBag * SOAP_FMAC6 soap_instantiate_uddi2__tModelBag(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__tModelBag(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__tModel
#define SOAP_TYPE_uddi2__tModel (46)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__tModel(struct soap*, const char*, int, const uddi2__tModel *, const char*);
SOAP_FMAC3 uddi2__tModel * SOAP_FMAC4 soap_get_uddi2__tModel(struct soap*, uddi2__tModel *, const char*, const char*);
SOAP_FMAC3 uddi2__tModel * SOAP_FMAC4 soap_in_uddi2__tModel(struct soap*, const char*, uddi2__tModel *, const char*);

SOAP_FMAC5 uddi2__tModel * SOAP_FMAC6 soap_new_uddi2__tModel(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__tModel(struct soap*, uddi2__tModel*);
SOAP_FMAC5 uddi2__tModel * SOAP_FMAC6 soap_instantiate_uddi2__tModel(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__tModel(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__sharedRelationships
#define SOAP_TYPE_uddi2__sharedRelationships (45)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__sharedRelationships(struct soap*, const char*, int, const uddi2__sharedRelationships *, const char*);
SOAP_FMAC3 uddi2__sharedRelationships * SOAP_FMAC4 soap_get_uddi2__sharedRelationships(struct soap*, uddi2__sharedRelationships *, const char*, const char*);
SOAP_FMAC3 uddi2__sharedRelationships * SOAP_FMAC4 soap_in_uddi2__sharedRelationships(struct soap*, const char*, uddi2__sharedRelationships *, const char*);

SOAP_FMAC5 uddi2__sharedRelationships * SOAP_FMAC6 soap_new_uddi2__sharedRelationships(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__sharedRelationships(struct soap*, uddi2__sharedRelationships*);
SOAP_FMAC5 uddi2__sharedRelationships * SOAP_FMAC6 soap_instantiate_uddi2__sharedRelationships(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__sharedRelationships(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__serviceInfos
#define SOAP_TYPE_uddi2__serviceInfos (44)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__serviceInfos(struct soap*, const char*, int, const uddi2__serviceInfos *, const char*);
SOAP_FMAC3 uddi2__serviceInfos * SOAP_FMAC4 soap_get_uddi2__serviceInfos(struct soap*, uddi2__serviceInfos *, const char*, const char*);
SOAP_FMAC3 uddi2__serviceInfos * SOAP_FMAC4 soap_in_uddi2__serviceInfos(struct soap*, const char*, uddi2__serviceInfos *, const char*);

SOAP_FMAC5 uddi2__serviceInfos * SOAP_FMAC6 soap_new_uddi2__serviceInfos(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__serviceInfos(struct soap*, uddi2__serviceInfos*);
SOAP_FMAC5 uddi2__serviceInfos * SOAP_FMAC6 soap_instantiate_uddi2__serviceInfos(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__serviceInfos(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__serviceInfo
#define SOAP_TYPE_uddi2__serviceInfo (43)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__serviceInfo(struct soap*, const char*, int, const uddi2__serviceInfo *, const char*);
SOAP_FMAC3 uddi2__serviceInfo * SOAP_FMAC4 soap_get_uddi2__serviceInfo(struct soap*, uddi2__serviceInfo *, const char*, const char*);
SOAP_FMAC3 uddi2__serviceInfo * SOAP_FMAC4 soap_in_uddi2__serviceInfo(struct soap*, const char*, uddi2__serviceInfo *, const char*);

SOAP_FMAC5 uddi2__serviceInfo * SOAP_FMAC6 soap_new_uddi2__serviceInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__serviceInfo(struct soap*, uddi2__serviceInfo*);
SOAP_FMAC5 uddi2__serviceInfo * SOAP_FMAC6 soap_instantiate_uddi2__serviceInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__serviceInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__result
#define SOAP_TYPE_uddi2__result (42)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__result(struct soap*, const char*, int, const uddi2__result *, const char*);
SOAP_FMAC3 uddi2__result * SOAP_FMAC4 soap_get_uddi2__result(struct soap*, uddi2__result *, const char*, const char*);
SOAP_FMAC3 uddi2__result * SOAP_FMAC4 soap_in_uddi2__result(struct soap*, const char*, uddi2__result *, const char*);

SOAP_FMAC5 uddi2__result * SOAP_FMAC6 soap_new_uddi2__result(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__result(struct soap*, uddi2__result*);
SOAP_FMAC5 uddi2__result * SOAP_FMAC6 soap_instantiate_uddi2__result(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__result(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__relatedBusinessInfos
#define SOAP_TYPE_uddi2__relatedBusinessInfos (41)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__relatedBusinessInfos(struct soap*, const char*, int, const uddi2__relatedBusinessInfos *, const char*);
SOAP_FMAC3 uddi2__relatedBusinessInfos * SOAP_FMAC4 soap_get_uddi2__relatedBusinessInfos(struct soap*, uddi2__relatedBusinessInfos *, const char*, const char*);
SOAP_FMAC3 uddi2__relatedBusinessInfos * SOAP_FMAC4 soap_in_uddi2__relatedBusinessInfos(struct soap*, const char*, uddi2__relatedBusinessInfos *, const char*);

SOAP_FMAC5 uddi2__relatedBusinessInfos * SOAP_FMAC6 soap_new_uddi2__relatedBusinessInfos(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__relatedBusinessInfos(struct soap*, uddi2__relatedBusinessInfos*);
SOAP_FMAC5 uddi2__relatedBusinessInfos * SOAP_FMAC6 soap_instantiate_uddi2__relatedBusinessInfos(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__relatedBusinessInfos(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__relatedBusinessInfo
#define SOAP_TYPE_uddi2__relatedBusinessInfo (40)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__relatedBusinessInfo(struct soap*, const char*, int, const uddi2__relatedBusinessInfo *, const char*);
SOAP_FMAC3 uddi2__relatedBusinessInfo * SOAP_FMAC4 soap_get_uddi2__relatedBusinessInfo(struct soap*, uddi2__relatedBusinessInfo *, const char*, const char*);
SOAP_FMAC3 uddi2__relatedBusinessInfo * SOAP_FMAC4 soap_in_uddi2__relatedBusinessInfo(struct soap*, const char*, uddi2__relatedBusinessInfo *, const char*);

SOAP_FMAC5 uddi2__relatedBusinessInfo * SOAP_FMAC6 soap_new_uddi2__relatedBusinessInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__relatedBusinessInfo(struct soap*, uddi2__relatedBusinessInfo*);
SOAP_FMAC5 uddi2__relatedBusinessInfo * SOAP_FMAC6 soap_instantiate_uddi2__relatedBusinessInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__relatedBusinessInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__publisherAssertion
#define SOAP_TYPE_uddi2__publisherAssertion (39)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__publisherAssertion(struct soap*, const char*, int, const uddi2__publisherAssertion *, const char*);
SOAP_FMAC3 uddi2__publisherAssertion * SOAP_FMAC4 soap_get_uddi2__publisherAssertion(struct soap*, uddi2__publisherAssertion *, const char*, const char*);
SOAP_FMAC3 uddi2__publisherAssertion * SOAP_FMAC4 soap_in_uddi2__publisherAssertion(struct soap*, const char*, uddi2__publisherAssertion *, const char*);

SOAP_FMAC5 uddi2__publisherAssertion * SOAP_FMAC6 soap_new_uddi2__publisherAssertion(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__publisherAssertion(struct soap*, uddi2__publisherAssertion*);
SOAP_FMAC5 uddi2__publisherAssertion * SOAP_FMAC6 soap_instantiate_uddi2__publisherAssertion(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__publisherAssertion(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__phone
#define SOAP_TYPE_uddi2__phone (38)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__phone(struct soap*, const char*, int, const uddi2__phone *, const char*);
SOAP_FMAC3 uddi2__phone * SOAP_FMAC4 soap_get_uddi2__phone(struct soap*, uddi2__phone *, const char*, const char*);
SOAP_FMAC3 uddi2__phone * SOAP_FMAC4 soap_in_uddi2__phone(struct soap*, const char*, uddi2__phone *, const char*);

SOAP_FMAC5 uddi2__phone * SOAP_FMAC6 soap_new_uddi2__phone(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__phone(struct soap*, uddi2__phone*);
SOAP_FMAC5 uddi2__phone * SOAP_FMAC6 soap_instantiate_uddi2__phone(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__phone(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__overviewDoc
#define SOAP_TYPE_uddi2__overviewDoc (37)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__overviewDoc(struct soap*, const char*, int, const uddi2__overviewDoc *, const char*);
SOAP_FMAC3 uddi2__overviewDoc * SOAP_FMAC4 soap_get_uddi2__overviewDoc(struct soap*, uddi2__overviewDoc *, const char*, const char*);
SOAP_FMAC3 uddi2__overviewDoc * SOAP_FMAC4 soap_in_uddi2__overviewDoc(struct soap*, const char*, uddi2__overviewDoc *, const char*);

SOAP_FMAC5 uddi2__overviewDoc * SOAP_FMAC6 soap_new_uddi2__overviewDoc(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__overviewDoc(struct soap*, uddi2__overviewDoc*);
SOAP_FMAC5 uddi2__overviewDoc * SOAP_FMAC6 soap_instantiate_uddi2__overviewDoc(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__overviewDoc(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__name
#define SOAP_TYPE_uddi2__name (36)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__name(struct soap*, const char*, int, const uddi2__name *, const char*);
SOAP_FMAC3 uddi2__name * SOAP_FMAC4 soap_get_uddi2__name(struct soap*, uddi2__name *, const char*, const char*);
SOAP_FMAC3 uddi2__name * SOAP_FMAC4 soap_in_uddi2__name(struct soap*, const char*, uddi2__name *, const char*);

SOAP_FMAC5 uddi2__name * SOAP_FMAC6 soap_new_uddi2__name(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__name(struct soap*, uddi2__name*);
SOAP_FMAC5 uddi2__name * SOAP_FMAC6 soap_instantiate_uddi2__name(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__name(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__keysOwned
#define SOAP_TYPE_uddi2__keysOwned (35)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__keysOwned(struct soap*, const char*, int, const uddi2__keysOwned *, const char*);
SOAP_FMAC3 uddi2__keysOwned * SOAP_FMAC4 soap_get_uddi2__keysOwned(struct soap*, uddi2__keysOwned *, const char*, const char*);
SOAP_FMAC3 uddi2__keysOwned * SOAP_FMAC4 soap_in_uddi2__keysOwned(struct soap*, const char*, uddi2__keysOwned *, const char*);

SOAP_FMAC5 uddi2__keysOwned * SOAP_FMAC6 soap_new_uddi2__keysOwned(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__keysOwned(struct soap*, uddi2__keysOwned*);
SOAP_FMAC5 uddi2__keysOwned * SOAP_FMAC6 soap_instantiate_uddi2__keysOwned(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__keysOwned(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__keyedReference
#define SOAP_TYPE_uddi2__keyedReference (34)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__keyedReference(struct soap*, const char*, int, const uddi2__keyedReference *, const char*);
SOAP_FMAC3 uddi2__keyedReference * SOAP_FMAC4 soap_get_uddi2__keyedReference(struct soap*, uddi2__keyedReference *, const char*, const char*);
SOAP_FMAC3 uddi2__keyedReference * SOAP_FMAC4 soap_in_uddi2__keyedReference(struct soap*, const char*, uddi2__keyedReference *, const char*);

SOAP_FMAC5 uddi2__keyedReference * SOAP_FMAC6 soap_new_uddi2__keyedReference(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__keyedReference(struct soap*, uddi2__keyedReference*);
SOAP_FMAC5 uddi2__keyedReference * SOAP_FMAC6 soap_instantiate_uddi2__keyedReference(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__keyedReference(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__instanceDetails
#define SOAP_TYPE_uddi2__instanceDetails (33)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__instanceDetails(struct soap*, const char*, int, const uddi2__instanceDetails *, const char*);
SOAP_FMAC3 uddi2__instanceDetails * SOAP_FMAC4 soap_get_uddi2__instanceDetails(struct soap*, uddi2__instanceDetails *, const char*, const char*);
SOAP_FMAC3 uddi2__instanceDetails * SOAP_FMAC4 soap_in_uddi2__instanceDetails(struct soap*, const char*, uddi2__instanceDetails *, const char*);

SOAP_FMAC5 uddi2__instanceDetails * SOAP_FMAC6 soap_new_uddi2__instanceDetails(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__instanceDetails(struct soap*, uddi2__instanceDetails*);
SOAP_FMAC5 uddi2__instanceDetails * SOAP_FMAC6 soap_instantiate_uddi2__instanceDetails(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__instanceDetails(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__identifierBag
#define SOAP_TYPE_uddi2__identifierBag (32)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__identifierBag(struct soap*, const char*, int, const uddi2__identifierBag *, const char*);
SOAP_FMAC3 uddi2__identifierBag * SOAP_FMAC4 soap_get_uddi2__identifierBag(struct soap*, uddi2__identifierBag *, const char*, const char*);
SOAP_FMAC3 uddi2__identifierBag * SOAP_FMAC4 soap_in_uddi2__identifierBag(struct soap*, const char*, uddi2__identifierBag *, const char*);

SOAP_FMAC5 uddi2__identifierBag * SOAP_FMAC6 soap_new_uddi2__identifierBag(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__identifierBag(struct soap*, uddi2__identifierBag*);
SOAP_FMAC5 uddi2__identifierBag * SOAP_FMAC6 soap_instantiate_uddi2__identifierBag(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__identifierBag(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__hostingRedirector
#define SOAP_TYPE_uddi2__hostingRedirector (31)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__hostingRedirector(struct soap*, const char*, int, const uddi2__hostingRedirector *, const char*);
SOAP_FMAC3 uddi2__hostingRedirector * SOAP_FMAC4 soap_get_uddi2__hostingRedirector(struct soap*, uddi2__hostingRedirector *, const char*, const char*);
SOAP_FMAC3 uddi2__hostingRedirector * SOAP_FMAC4 soap_in_uddi2__hostingRedirector(struct soap*, const char*, uddi2__hostingRedirector *, const char*);

SOAP_FMAC5 uddi2__hostingRedirector * SOAP_FMAC6 soap_new_uddi2__hostingRedirector(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__hostingRedirector(struct soap*, uddi2__hostingRedirector*);
SOAP_FMAC5 uddi2__hostingRedirector * SOAP_FMAC6 soap_instantiate_uddi2__hostingRedirector(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__hostingRedirector(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__findQualifiers
#define SOAP_TYPE_uddi2__findQualifiers (30)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__findQualifiers(struct soap*, const char*, int, const uddi2__findQualifiers *, const char*);
SOAP_FMAC3 uddi2__findQualifiers * SOAP_FMAC4 soap_get_uddi2__findQualifiers(struct soap*, uddi2__findQualifiers *, const char*, const char*);
SOAP_FMAC3 uddi2__findQualifiers * SOAP_FMAC4 soap_in_uddi2__findQualifiers(struct soap*, const char*, uddi2__findQualifiers *, const char*);

SOAP_FMAC5 uddi2__findQualifiers * SOAP_FMAC6 soap_new_uddi2__findQualifiers(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__findQualifiers(struct soap*, uddi2__findQualifiers*);
SOAP_FMAC5 uddi2__findQualifiers * SOAP_FMAC6 soap_instantiate_uddi2__findQualifiers(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__findQualifiers(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__errInfo
#define SOAP_TYPE_uddi2__errInfo (29)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__errInfo(struct soap*, const char*, int, const uddi2__errInfo *, const char*);
SOAP_FMAC3 uddi2__errInfo * SOAP_FMAC4 soap_get_uddi2__errInfo(struct soap*, uddi2__errInfo *, const char*, const char*);
SOAP_FMAC3 uddi2__errInfo * SOAP_FMAC4 soap_in_uddi2__errInfo(struct soap*, const char*, uddi2__errInfo *, const char*);

SOAP_FMAC5 uddi2__errInfo * SOAP_FMAC6 soap_new_uddi2__errInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__errInfo(struct soap*, uddi2__errInfo*);
SOAP_FMAC5 uddi2__errInfo * SOAP_FMAC6 soap_instantiate_uddi2__errInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__errInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__email
#define SOAP_TYPE_uddi2__email (28)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__email(struct soap*, const char*, int, const uddi2__email *, const char*);
SOAP_FMAC3 uddi2__email * SOAP_FMAC4 soap_get_uddi2__email(struct soap*, uddi2__email *, const char*, const char*);
SOAP_FMAC3 uddi2__email * SOAP_FMAC4 soap_in_uddi2__email(struct soap*, const char*, uddi2__email *, const char*);

SOAP_FMAC5 uddi2__email * SOAP_FMAC6 soap_new_uddi2__email(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__email(struct soap*, uddi2__email*);
SOAP_FMAC5 uddi2__email * SOAP_FMAC6 soap_instantiate_uddi2__email(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__email(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__dispositionReport
#define SOAP_TYPE_uddi2__dispositionReport (27)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__dispositionReport(struct soap*, const char*, int, const uddi2__dispositionReport *, const char*);
SOAP_FMAC3 uddi2__dispositionReport * SOAP_FMAC4 soap_get_uddi2__dispositionReport(struct soap*, uddi2__dispositionReport *, const char*, const char*);
SOAP_FMAC3 uddi2__dispositionReport * SOAP_FMAC4 soap_in_uddi2__dispositionReport(struct soap*, const char*, uddi2__dispositionReport *, const char*);

SOAP_FMAC5 uddi2__dispositionReport * SOAP_FMAC6 soap_new_uddi2__dispositionReport(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__dispositionReport(struct soap*, uddi2__dispositionReport*);
SOAP_FMAC5 uddi2__dispositionReport * SOAP_FMAC6 soap_instantiate_uddi2__dispositionReport(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__dispositionReport(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__discoveryURLs
#define SOAP_TYPE_uddi2__discoveryURLs (26)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__discoveryURLs(struct soap*, const char*, int, const uddi2__discoveryURLs *, const char*);
SOAP_FMAC3 uddi2__discoveryURLs * SOAP_FMAC4 soap_get_uddi2__discoveryURLs(struct soap*, uddi2__discoveryURLs *, const char*, const char*);
SOAP_FMAC3 uddi2__discoveryURLs * SOAP_FMAC4 soap_in_uddi2__discoveryURLs(struct soap*, const char*, uddi2__discoveryURLs *, const char*);

SOAP_FMAC5 uddi2__discoveryURLs * SOAP_FMAC6 soap_new_uddi2__discoveryURLs(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__discoveryURLs(struct soap*, uddi2__discoveryURLs*);
SOAP_FMAC5 uddi2__discoveryURLs * SOAP_FMAC6 soap_instantiate_uddi2__discoveryURLs(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__discoveryURLs(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__discoveryURL
#define SOAP_TYPE_uddi2__discoveryURL (25)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__discoveryURL(struct soap*, const char*, int, const uddi2__discoveryURL *, const char*);
SOAP_FMAC3 uddi2__discoveryURL * SOAP_FMAC4 soap_get_uddi2__discoveryURL(struct soap*, uddi2__discoveryURL *, const char*, const char*);
SOAP_FMAC3 uddi2__discoveryURL * SOAP_FMAC4 soap_in_uddi2__discoveryURL(struct soap*, const char*, uddi2__discoveryURL *, const char*);

SOAP_FMAC5 uddi2__discoveryURL * SOAP_FMAC6 soap_new_uddi2__discoveryURL(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__discoveryURL(struct soap*, uddi2__discoveryURL*);
SOAP_FMAC5 uddi2__discoveryURL * SOAP_FMAC6 soap_instantiate_uddi2__discoveryURL(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__discoveryURL(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__description
#define SOAP_TYPE_uddi2__description (24)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__description(struct soap*, const char*, int, const uddi2__description *, const char*);
SOAP_FMAC3 uddi2__description * SOAP_FMAC4 soap_get_uddi2__description(struct soap*, uddi2__description *, const char*, const char*);
SOAP_FMAC3 uddi2__description * SOAP_FMAC4 soap_in_uddi2__description(struct soap*, const char*, uddi2__description *, const char*);

SOAP_FMAC5 uddi2__description * SOAP_FMAC6 soap_new_uddi2__description(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__description(struct soap*, uddi2__description*);
SOAP_FMAC5 uddi2__description * SOAP_FMAC6 soap_instantiate_uddi2__description(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__description(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__contacts
#define SOAP_TYPE_uddi2__contacts (23)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__contacts(struct soap*, const char*, int, const uddi2__contacts *, const char*);
SOAP_FMAC3 uddi2__contacts * SOAP_FMAC4 soap_get_uddi2__contacts(struct soap*, uddi2__contacts *, const char*, const char*);
SOAP_FMAC3 uddi2__contacts * SOAP_FMAC4 soap_in_uddi2__contacts(struct soap*, const char*, uddi2__contacts *, const char*);

SOAP_FMAC5 uddi2__contacts * SOAP_FMAC6 soap_new_uddi2__contacts(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__contacts(struct soap*, uddi2__contacts*);
SOAP_FMAC5 uddi2__contacts * SOAP_FMAC6 soap_instantiate_uddi2__contacts(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__contacts(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__contact
#define SOAP_TYPE_uddi2__contact (22)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__contact(struct soap*, const char*, int, const uddi2__contact *, const char*);
SOAP_FMAC3 uddi2__contact * SOAP_FMAC4 soap_get_uddi2__contact(struct soap*, uddi2__contact *, const char*, const char*);
SOAP_FMAC3 uddi2__contact * SOAP_FMAC4 soap_in_uddi2__contact(struct soap*, const char*, uddi2__contact *, const char*);

SOAP_FMAC5 uddi2__contact * SOAP_FMAC6 soap_new_uddi2__contact(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__contact(struct soap*, uddi2__contact*);
SOAP_FMAC5 uddi2__contact * SOAP_FMAC6 soap_instantiate_uddi2__contact(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__contact(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__categoryBag
#define SOAP_TYPE_uddi2__categoryBag (21)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__categoryBag(struct soap*, const char*, int, const uddi2__categoryBag *, const char*);
SOAP_FMAC3 uddi2__categoryBag * SOAP_FMAC4 soap_get_uddi2__categoryBag(struct soap*, uddi2__categoryBag *, const char*, const char*);
SOAP_FMAC3 uddi2__categoryBag * SOAP_FMAC4 soap_in_uddi2__categoryBag(struct soap*, const char*, uddi2__categoryBag *, const char*);

SOAP_FMAC5 uddi2__categoryBag * SOAP_FMAC6 soap_new_uddi2__categoryBag(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__categoryBag(struct soap*, uddi2__categoryBag*);
SOAP_FMAC5 uddi2__categoryBag * SOAP_FMAC6 soap_instantiate_uddi2__categoryBag(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__categoryBag(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__businessServices
#define SOAP_TYPE_uddi2__businessServices (20)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__businessServices(struct soap*, const char*, int, const uddi2__businessServices *, const char*);
SOAP_FMAC3 uddi2__businessServices * SOAP_FMAC4 soap_get_uddi2__businessServices(struct soap*, uddi2__businessServices *, const char*, const char*);
SOAP_FMAC3 uddi2__businessServices * SOAP_FMAC4 soap_in_uddi2__businessServices(struct soap*, const char*, uddi2__businessServices *, const char*);

SOAP_FMAC5 uddi2__businessServices * SOAP_FMAC6 soap_new_uddi2__businessServices(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__businessServices(struct soap*, uddi2__businessServices*);
SOAP_FMAC5 uddi2__businessServices * SOAP_FMAC6 soap_instantiate_uddi2__businessServices(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__businessServices(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__businessService
#define SOAP_TYPE_uddi2__businessService (19)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__businessService(struct soap*, const char*, int, const uddi2__businessService *, const char*);
SOAP_FMAC3 uddi2__businessService * SOAP_FMAC4 soap_get_uddi2__businessService(struct soap*, uddi2__businessService *, const char*, const char*);
SOAP_FMAC3 uddi2__businessService * SOAP_FMAC4 soap_in_uddi2__businessService(struct soap*, const char*, uddi2__businessService *, const char*);

SOAP_FMAC5 uddi2__businessService * SOAP_FMAC6 soap_new_uddi2__businessService(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__businessService(struct soap*, uddi2__businessService*);
SOAP_FMAC5 uddi2__businessService * SOAP_FMAC6 soap_instantiate_uddi2__businessService(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__businessService(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__businessInfos
#define SOAP_TYPE_uddi2__businessInfos (18)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__businessInfos(struct soap*, const char*, int, const uddi2__businessInfos *, const char*);
SOAP_FMAC3 uddi2__businessInfos * SOAP_FMAC4 soap_get_uddi2__businessInfos(struct soap*, uddi2__businessInfos *, const char*, const char*);
SOAP_FMAC3 uddi2__businessInfos * SOAP_FMAC4 soap_in_uddi2__businessInfos(struct soap*, const char*, uddi2__businessInfos *, const char*);

SOAP_FMAC5 uddi2__businessInfos * SOAP_FMAC6 soap_new_uddi2__businessInfos(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__businessInfos(struct soap*, uddi2__businessInfos*);
SOAP_FMAC5 uddi2__businessInfos * SOAP_FMAC6 soap_instantiate_uddi2__businessInfos(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__businessInfos(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__businessInfo
#define SOAP_TYPE_uddi2__businessInfo (17)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__businessInfo(struct soap*, const char*, int, const uddi2__businessInfo *, const char*);
SOAP_FMAC3 uddi2__businessInfo * SOAP_FMAC4 soap_get_uddi2__businessInfo(struct soap*, uddi2__businessInfo *, const char*, const char*);
SOAP_FMAC3 uddi2__businessInfo * SOAP_FMAC4 soap_in_uddi2__businessInfo(struct soap*, const char*, uddi2__businessInfo *, const char*);

SOAP_FMAC5 uddi2__businessInfo * SOAP_FMAC6 soap_new_uddi2__businessInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__businessInfo(struct soap*, uddi2__businessInfo*);
SOAP_FMAC5 uddi2__businessInfo * SOAP_FMAC6 soap_instantiate_uddi2__businessInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__businessInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__businessEntityExt
#define SOAP_TYPE_uddi2__businessEntityExt (16)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__businessEntityExt(struct soap*, const char*, int, const uddi2__businessEntityExt *, const char*);
SOAP_FMAC3 uddi2__businessEntityExt * SOAP_FMAC4 soap_get_uddi2__businessEntityExt(struct soap*, uddi2__businessEntityExt *, const char*, const char*);
SOAP_FMAC3 uddi2__businessEntityExt * SOAP_FMAC4 soap_in_uddi2__businessEntityExt(struct soap*, const char*, uddi2__businessEntityExt *, const char*);

SOAP_FMAC5 uddi2__businessEntityExt * SOAP_FMAC6 soap_new_uddi2__businessEntityExt(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__businessEntityExt(struct soap*, uddi2__businessEntityExt*);
SOAP_FMAC5 uddi2__businessEntityExt * SOAP_FMAC6 soap_instantiate_uddi2__businessEntityExt(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__businessEntityExt(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__businessEntity
#define SOAP_TYPE_uddi2__businessEntity (15)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__businessEntity(struct soap*, const char*, int, const uddi2__businessEntity *, const char*);
SOAP_FMAC3 uddi2__businessEntity * SOAP_FMAC4 soap_get_uddi2__businessEntity(struct soap*, uddi2__businessEntity *, const char*, const char*);
SOAP_FMAC3 uddi2__businessEntity * SOAP_FMAC4 soap_in_uddi2__businessEntity(struct soap*, const char*, uddi2__businessEntity *, const char*);

SOAP_FMAC5 uddi2__businessEntity * SOAP_FMAC6 soap_new_uddi2__businessEntity(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__businessEntity(struct soap*, uddi2__businessEntity*);
SOAP_FMAC5 uddi2__businessEntity * SOAP_FMAC6 soap_instantiate_uddi2__businessEntity(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__businessEntity(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__bindingTemplates
#define SOAP_TYPE_uddi2__bindingTemplates (14)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__bindingTemplates(struct soap*, const char*, int, const uddi2__bindingTemplates *, const char*);
SOAP_FMAC3 uddi2__bindingTemplates * SOAP_FMAC4 soap_get_uddi2__bindingTemplates(struct soap*, uddi2__bindingTemplates *, const char*, const char*);
SOAP_FMAC3 uddi2__bindingTemplates * SOAP_FMAC4 soap_in_uddi2__bindingTemplates(struct soap*, const char*, uddi2__bindingTemplates *, const char*);

SOAP_FMAC5 uddi2__bindingTemplates * SOAP_FMAC6 soap_new_uddi2__bindingTemplates(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__bindingTemplates(struct soap*, uddi2__bindingTemplates*);
SOAP_FMAC5 uddi2__bindingTemplates * SOAP_FMAC6 soap_instantiate_uddi2__bindingTemplates(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__bindingTemplates(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__bindingTemplate
#define SOAP_TYPE_uddi2__bindingTemplate (13)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__bindingTemplate(struct soap*, const char*, int, const uddi2__bindingTemplate *, const char*);
SOAP_FMAC3 uddi2__bindingTemplate * SOAP_FMAC4 soap_get_uddi2__bindingTemplate(struct soap*, uddi2__bindingTemplate *, const char*, const char*);
SOAP_FMAC3 uddi2__bindingTemplate * SOAP_FMAC4 soap_in_uddi2__bindingTemplate(struct soap*, const char*, uddi2__bindingTemplate *, const char*);

SOAP_FMAC5 uddi2__bindingTemplate * SOAP_FMAC6 soap_new_uddi2__bindingTemplate(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__bindingTemplate(struct soap*, uddi2__bindingTemplate*);
SOAP_FMAC5 uddi2__bindingTemplate * SOAP_FMAC6 soap_instantiate_uddi2__bindingTemplate(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__bindingTemplate(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__assertionStatusItem
#define SOAP_TYPE_uddi2__assertionStatusItem (12)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__assertionStatusItem(struct soap*, const char*, int, const uddi2__assertionStatusItem *, const char*);
SOAP_FMAC3 uddi2__assertionStatusItem * SOAP_FMAC4 soap_get_uddi2__assertionStatusItem(struct soap*, uddi2__assertionStatusItem *, const char*, const char*);
SOAP_FMAC3 uddi2__assertionStatusItem * SOAP_FMAC4 soap_in_uddi2__assertionStatusItem(struct soap*, const char*, uddi2__assertionStatusItem *, const char*);

SOAP_FMAC5 uddi2__assertionStatusItem * SOAP_FMAC6 soap_new_uddi2__assertionStatusItem(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__assertionStatusItem(struct soap*, uddi2__assertionStatusItem*);
SOAP_FMAC5 uddi2__assertionStatusItem * SOAP_FMAC6 soap_instantiate_uddi2__assertionStatusItem(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__assertionStatusItem(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__addressLine
#define SOAP_TYPE_uddi2__addressLine (11)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__addressLine(struct soap*, const char*, int, const uddi2__addressLine *, const char*);
SOAP_FMAC3 uddi2__addressLine * SOAP_FMAC4 soap_get_uddi2__addressLine(struct soap*, uddi2__addressLine *, const char*, const char*);
SOAP_FMAC3 uddi2__addressLine * SOAP_FMAC4 soap_in_uddi2__addressLine(struct soap*, const char*, uddi2__addressLine *, const char*);

SOAP_FMAC5 uddi2__addressLine * SOAP_FMAC6 soap_new_uddi2__addressLine(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__addressLine(struct soap*, uddi2__addressLine*);
SOAP_FMAC5 uddi2__addressLine * SOAP_FMAC6 soap_instantiate_uddi2__addressLine(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__addressLine(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__address
#define SOAP_TYPE_uddi2__address (10)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__address(struct soap*, const char*, int, const uddi2__address *, const char*);
SOAP_FMAC3 uddi2__address * SOAP_FMAC4 soap_get_uddi2__address(struct soap*, uddi2__address *, const char*, const char*);
SOAP_FMAC3 uddi2__address * SOAP_FMAC4 soap_in_uddi2__address(struct soap*, const char*, uddi2__address *, const char*);

SOAP_FMAC5 uddi2__address * SOAP_FMAC6 soap_new_uddi2__address(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__address(struct soap*, uddi2__address*);
SOAP_FMAC5 uddi2__address * SOAP_FMAC6 soap_instantiate_uddi2__address(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__address(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_uddi2__accessPoint
#define SOAP_TYPE_uddi2__accessPoint (9)
#endif

SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__accessPoint(struct soap*, const char*, int, const uddi2__accessPoint *, const char*);
SOAP_FMAC3 uddi2__accessPoint * SOAP_FMAC4 soap_get_uddi2__accessPoint(struct soap*, uddi2__accessPoint *, const char*, const char*);
SOAP_FMAC3 uddi2__accessPoint * SOAP_FMAC4 soap_in_uddi2__accessPoint(struct soap*, const char*, uddi2__accessPoint *, const char*);

SOAP_FMAC5 uddi2__accessPoint * SOAP_FMAC6 soap_new_uddi2__accessPoint(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_uddi2__accessPoint(struct soap*, uddi2__accessPoint*);
SOAP_FMAC5 uddi2__accessPoint * SOAP_FMAC6 soap_instantiate_uddi2__accessPoint(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_uddi2__accessPoint(struct soap*, int, int, void*, const void*, size_t);

#ifndef WITH_NOGLOBAL

#ifndef SOAP_TYPE_SOAP_ENV__Fault
#define SOAP_TYPE_SOAP_ENV__Fault (389)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Fault(struct soap*, const struct SOAP_ENV__Fault *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Fault(struct soap*, const char*, int, const struct SOAP_ENV__Fault *, const char*);
SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_get_SOAP_ENV__Fault(struct soap*, struct SOAP_ENV__Fault *, const char*, const char*);
SOAP_FMAC3 struct SOAP_ENV__Fault * SOAP_FMAC4 soap_in_SOAP_ENV__Fault(struct soap*, const char*, struct SOAP_ENV__Fault *, const char*);

#endif

#ifndef WITH_NOGLOBAL

#ifndef SOAP_TYPE_SOAP_ENV__Detail
#define SOAP_TYPE_SOAP_ENV__Detail (388)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Detail(struct soap*, const struct SOAP_ENV__Detail *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Detail(struct soap*, const char*, int, const struct SOAP_ENV__Detail *, const char*);
SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_get_SOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *, const char*, const char*);
SOAP_FMAC3 struct SOAP_ENV__Detail * SOAP_FMAC4 soap_in_SOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail *, const char*);

#endif

#ifndef WITH_NOGLOBAL

#ifndef SOAP_TYPE_SOAP_ENV__Code
#define SOAP_TYPE_SOAP_ENV__Code (387)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Code(struct soap*, const struct SOAP_ENV__Code *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Code(struct soap*, const char*, int, const struct SOAP_ENV__Code *, const char*);
SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_get_SOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *, const char*, const char*);
SOAP_FMAC3 struct SOAP_ENV__Code * SOAP_FMAC4 soap_in_SOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code *, const char*);

#endif

#ifndef WITH_NOGLOBAL

#ifndef SOAP_TYPE_SOAP_ENV__Header
#define SOAP_TYPE_SOAP_ENV__Header (386)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_SOAP_ENV__Header(struct soap*, const struct SOAP_ENV__Header *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_SOAP_ENV__Header(struct soap*, const char*, int, const struct SOAP_ENV__Header *, const char*);
SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_get_SOAP_ENV__Header(struct soap*, struct SOAP_ENV__Header *, const char*, const char*);
SOAP_FMAC3 struct SOAP_ENV__Header * SOAP_FMAC4 soap_in_SOAP_ENV__Header(struct soap*, const char*, struct SOAP_ENV__Header *, const char*);

#endif

#ifndef SOAP_TYPE___pub2__set_USCOREpublisherAssertions
#define SOAP_TYPE___pub2__set_USCOREpublisherAssertions (384)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__set_USCOREpublisherAssertions(struct soap*, const struct __pub2__set_USCOREpublisherAssertions *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__set_USCOREpublisherAssertions(struct soap*, struct __pub2__set_USCOREpublisherAssertions *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__set_USCOREpublisherAssertions(struct soap*, const struct __pub2__set_USCOREpublisherAssertions *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__set_USCOREpublisherAssertions(struct soap*, const char*, int, const struct __pub2__set_USCOREpublisherAssertions *, const char*);
SOAP_FMAC3 struct __pub2__set_USCOREpublisherAssertions * SOAP_FMAC4 soap_get___pub2__set_USCOREpublisherAssertions(struct soap*, struct __pub2__set_USCOREpublisherAssertions *, const char*, const char*);
SOAP_FMAC3 struct __pub2__set_USCOREpublisherAssertions * SOAP_FMAC4 soap_in___pub2__set_USCOREpublisherAssertions(struct soap*, const char*, struct __pub2__set_USCOREpublisherAssertions *, const char*);

#ifndef SOAP_TYPE___pub2__save_USCOREtModel
#define SOAP_TYPE___pub2__save_USCOREtModel (381)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__save_USCOREtModel(struct soap*, const struct __pub2__save_USCOREtModel *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__save_USCOREtModel(struct soap*, struct __pub2__save_USCOREtModel *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__save_USCOREtModel(struct soap*, const struct __pub2__save_USCOREtModel *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__save_USCOREtModel(struct soap*, const char*, int, const struct __pub2__save_USCOREtModel *, const char*);
SOAP_FMAC3 struct __pub2__save_USCOREtModel * SOAP_FMAC4 soap_get___pub2__save_USCOREtModel(struct soap*, struct __pub2__save_USCOREtModel *, const char*, const char*);
SOAP_FMAC3 struct __pub2__save_USCOREtModel * SOAP_FMAC4 soap_in___pub2__save_USCOREtModel(struct soap*, const char*, struct __pub2__save_USCOREtModel *, const char*);

#ifndef SOAP_TYPE___pub2__save_USCOREservice
#define SOAP_TYPE___pub2__save_USCOREservice (378)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__save_USCOREservice(struct soap*, const struct __pub2__save_USCOREservice *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__save_USCOREservice(struct soap*, struct __pub2__save_USCOREservice *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__save_USCOREservice(struct soap*, const struct __pub2__save_USCOREservice *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__save_USCOREservice(struct soap*, const char*, int, const struct __pub2__save_USCOREservice *, const char*);
SOAP_FMAC3 struct __pub2__save_USCOREservice * SOAP_FMAC4 soap_get___pub2__save_USCOREservice(struct soap*, struct __pub2__save_USCOREservice *, const char*, const char*);
SOAP_FMAC3 struct __pub2__save_USCOREservice * SOAP_FMAC4 soap_in___pub2__save_USCOREservice(struct soap*, const char*, struct __pub2__save_USCOREservice *, const char*);

#ifndef SOAP_TYPE___pub2__save_USCOREbusiness
#define SOAP_TYPE___pub2__save_USCOREbusiness (375)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__save_USCOREbusiness(struct soap*, const struct __pub2__save_USCOREbusiness *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__save_USCOREbusiness(struct soap*, struct __pub2__save_USCOREbusiness *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__save_USCOREbusiness(struct soap*, const struct __pub2__save_USCOREbusiness *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__save_USCOREbusiness(struct soap*, const char*, int, const struct __pub2__save_USCOREbusiness *, const char*);
SOAP_FMAC3 struct __pub2__save_USCOREbusiness * SOAP_FMAC4 soap_get___pub2__save_USCOREbusiness(struct soap*, struct __pub2__save_USCOREbusiness *, const char*, const char*);
SOAP_FMAC3 struct __pub2__save_USCOREbusiness * SOAP_FMAC4 soap_in___pub2__save_USCOREbusiness(struct soap*, const char*, struct __pub2__save_USCOREbusiness *, const char*);

#ifndef SOAP_TYPE___pub2__save_USCOREbinding
#define SOAP_TYPE___pub2__save_USCOREbinding (372)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__save_USCOREbinding(struct soap*, const struct __pub2__save_USCOREbinding *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__save_USCOREbinding(struct soap*, struct __pub2__save_USCOREbinding *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__save_USCOREbinding(struct soap*, const struct __pub2__save_USCOREbinding *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__save_USCOREbinding(struct soap*, const char*, int, const struct __pub2__save_USCOREbinding *, const char*);
SOAP_FMAC3 struct __pub2__save_USCOREbinding * SOAP_FMAC4 soap_get___pub2__save_USCOREbinding(struct soap*, struct __pub2__save_USCOREbinding *, const char*, const char*);
SOAP_FMAC3 struct __pub2__save_USCOREbinding * SOAP_FMAC4 soap_in___pub2__save_USCOREbinding(struct soap*, const char*, struct __pub2__save_USCOREbinding *, const char*);

#ifndef SOAP_TYPE___pub2__get_USCOREregisteredInfo
#define SOAP_TYPE___pub2__get_USCOREregisteredInfo (369)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__get_USCOREregisteredInfo(struct soap*, const struct __pub2__get_USCOREregisteredInfo *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__get_USCOREregisteredInfo(struct soap*, struct __pub2__get_USCOREregisteredInfo *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__get_USCOREregisteredInfo(struct soap*, const struct __pub2__get_USCOREregisteredInfo *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__get_USCOREregisteredInfo(struct soap*, const char*, int, const struct __pub2__get_USCOREregisteredInfo *, const char*);
SOAP_FMAC3 struct __pub2__get_USCOREregisteredInfo * SOAP_FMAC4 soap_get___pub2__get_USCOREregisteredInfo(struct soap*, struct __pub2__get_USCOREregisteredInfo *, const char*, const char*);
SOAP_FMAC3 struct __pub2__get_USCOREregisteredInfo * SOAP_FMAC4 soap_in___pub2__get_USCOREregisteredInfo(struct soap*, const char*, struct __pub2__get_USCOREregisteredInfo *, const char*);

#ifndef SOAP_TYPE___pub2__get_USCOREpublisherAssertions
#define SOAP_TYPE___pub2__get_USCOREpublisherAssertions (366)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__get_USCOREpublisherAssertions(struct soap*, const struct __pub2__get_USCOREpublisherAssertions *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__get_USCOREpublisherAssertions(struct soap*, struct __pub2__get_USCOREpublisherAssertions *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__get_USCOREpublisherAssertions(struct soap*, const struct __pub2__get_USCOREpublisherAssertions *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__get_USCOREpublisherAssertions(struct soap*, const char*, int, const struct __pub2__get_USCOREpublisherAssertions *, const char*);
SOAP_FMAC3 struct __pub2__get_USCOREpublisherAssertions * SOAP_FMAC4 soap_get___pub2__get_USCOREpublisherAssertions(struct soap*, struct __pub2__get_USCOREpublisherAssertions *, const char*, const char*);
SOAP_FMAC3 struct __pub2__get_USCOREpublisherAssertions * SOAP_FMAC4 soap_in___pub2__get_USCOREpublisherAssertions(struct soap*, const char*, struct __pub2__get_USCOREpublisherAssertions *, const char*);

#ifndef SOAP_TYPE___pub2__get_USCOREauthToken
#define SOAP_TYPE___pub2__get_USCOREauthToken (363)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__get_USCOREauthToken(struct soap*, const struct __pub2__get_USCOREauthToken *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__get_USCOREauthToken(struct soap*, struct __pub2__get_USCOREauthToken *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__get_USCOREauthToken(struct soap*, const struct __pub2__get_USCOREauthToken *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__get_USCOREauthToken(struct soap*, const char*, int, const struct __pub2__get_USCOREauthToken *, const char*);
SOAP_FMAC3 struct __pub2__get_USCOREauthToken * SOAP_FMAC4 soap_get___pub2__get_USCOREauthToken(struct soap*, struct __pub2__get_USCOREauthToken *, const char*, const char*);
SOAP_FMAC3 struct __pub2__get_USCOREauthToken * SOAP_FMAC4 soap_in___pub2__get_USCOREauthToken(struct soap*, const char*, struct __pub2__get_USCOREauthToken *, const char*);

#ifndef SOAP_TYPE___pub2__get_USCOREassertionStatusReport
#define SOAP_TYPE___pub2__get_USCOREassertionStatusReport (360)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__get_USCOREassertionStatusReport(struct soap*, const struct __pub2__get_USCOREassertionStatusReport *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__get_USCOREassertionStatusReport(struct soap*, struct __pub2__get_USCOREassertionStatusReport *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__get_USCOREassertionStatusReport(struct soap*, const struct __pub2__get_USCOREassertionStatusReport *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__get_USCOREassertionStatusReport(struct soap*, const char*, int, const struct __pub2__get_USCOREassertionStatusReport *, const char*);
SOAP_FMAC3 struct __pub2__get_USCOREassertionStatusReport * SOAP_FMAC4 soap_get___pub2__get_USCOREassertionStatusReport(struct soap*, struct __pub2__get_USCOREassertionStatusReport *, const char*, const char*);
SOAP_FMAC3 struct __pub2__get_USCOREassertionStatusReport * SOAP_FMAC4 soap_in___pub2__get_USCOREassertionStatusReport(struct soap*, const char*, struct __pub2__get_USCOREassertionStatusReport *, const char*);

#ifndef SOAP_TYPE___pub2__discard_USCOREauthToken
#define SOAP_TYPE___pub2__discard_USCOREauthToken (357)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__discard_USCOREauthToken(struct soap*, const struct __pub2__discard_USCOREauthToken *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__discard_USCOREauthToken(struct soap*, struct __pub2__discard_USCOREauthToken *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__discard_USCOREauthToken(struct soap*, const struct __pub2__discard_USCOREauthToken *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__discard_USCOREauthToken(struct soap*, const char*, int, const struct __pub2__discard_USCOREauthToken *, const char*);
SOAP_FMAC3 struct __pub2__discard_USCOREauthToken * SOAP_FMAC4 soap_get___pub2__discard_USCOREauthToken(struct soap*, struct __pub2__discard_USCOREauthToken *, const char*, const char*);
SOAP_FMAC3 struct __pub2__discard_USCOREauthToken * SOAP_FMAC4 soap_in___pub2__discard_USCOREauthToken(struct soap*, const char*, struct __pub2__discard_USCOREauthToken *, const char*);

#ifndef SOAP_TYPE___pub2__delete_USCOREtModel
#define SOAP_TYPE___pub2__delete_USCOREtModel (354)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__delete_USCOREtModel(struct soap*, const struct __pub2__delete_USCOREtModel *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__delete_USCOREtModel(struct soap*, struct __pub2__delete_USCOREtModel *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__delete_USCOREtModel(struct soap*, const struct __pub2__delete_USCOREtModel *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__delete_USCOREtModel(struct soap*, const char*, int, const struct __pub2__delete_USCOREtModel *, const char*);
SOAP_FMAC3 struct __pub2__delete_USCOREtModel * SOAP_FMAC4 soap_get___pub2__delete_USCOREtModel(struct soap*, struct __pub2__delete_USCOREtModel *, const char*, const char*);
SOAP_FMAC3 struct __pub2__delete_USCOREtModel * SOAP_FMAC4 soap_in___pub2__delete_USCOREtModel(struct soap*, const char*, struct __pub2__delete_USCOREtModel *, const char*);

#ifndef SOAP_TYPE___pub2__delete_USCOREservice
#define SOAP_TYPE___pub2__delete_USCOREservice (351)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__delete_USCOREservice(struct soap*, const struct __pub2__delete_USCOREservice *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__delete_USCOREservice(struct soap*, struct __pub2__delete_USCOREservice *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__delete_USCOREservice(struct soap*, const struct __pub2__delete_USCOREservice *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__delete_USCOREservice(struct soap*, const char*, int, const struct __pub2__delete_USCOREservice *, const char*);
SOAP_FMAC3 struct __pub2__delete_USCOREservice * SOAP_FMAC4 soap_get___pub2__delete_USCOREservice(struct soap*, struct __pub2__delete_USCOREservice *, const char*, const char*);
SOAP_FMAC3 struct __pub2__delete_USCOREservice * SOAP_FMAC4 soap_in___pub2__delete_USCOREservice(struct soap*, const char*, struct __pub2__delete_USCOREservice *, const char*);

#ifndef SOAP_TYPE___pub2__delete_USCOREpublisherAssertions
#define SOAP_TYPE___pub2__delete_USCOREpublisherAssertions (348)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__delete_USCOREpublisherAssertions(struct soap*, const struct __pub2__delete_USCOREpublisherAssertions *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__delete_USCOREpublisherAssertions(struct soap*, struct __pub2__delete_USCOREpublisherAssertions *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__delete_USCOREpublisherAssertions(struct soap*, const struct __pub2__delete_USCOREpublisherAssertions *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__delete_USCOREpublisherAssertions(struct soap*, const char*, int, const struct __pub2__delete_USCOREpublisherAssertions *, const char*);
SOAP_FMAC3 struct __pub2__delete_USCOREpublisherAssertions * SOAP_FMAC4 soap_get___pub2__delete_USCOREpublisherAssertions(struct soap*, struct __pub2__delete_USCOREpublisherAssertions *, const char*, const char*);
SOAP_FMAC3 struct __pub2__delete_USCOREpublisherAssertions * SOAP_FMAC4 soap_in___pub2__delete_USCOREpublisherAssertions(struct soap*, const char*, struct __pub2__delete_USCOREpublisherAssertions *, const char*);

#ifndef SOAP_TYPE___pub2__delete_USCOREbusiness
#define SOAP_TYPE___pub2__delete_USCOREbusiness (345)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__delete_USCOREbusiness(struct soap*, const struct __pub2__delete_USCOREbusiness *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__delete_USCOREbusiness(struct soap*, struct __pub2__delete_USCOREbusiness *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__delete_USCOREbusiness(struct soap*, const struct __pub2__delete_USCOREbusiness *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__delete_USCOREbusiness(struct soap*, const char*, int, const struct __pub2__delete_USCOREbusiness *, const char*);
SOAP_FMAC3 struct __pub2__delete_USCOREbusiness * SOAP_FMAC4 soap_get___pub2__delete_USCOREbusiness(struct soap*, struct __pub2__delete_USCOREbusiness *, const char*, const char*);
SOAP_FMAC3 struct __pub2__delete_USCOREbusiness * SOAP_FMAC4 soap_in___pub2__delete_USCOREbusiness(struct soap*, const char*, struct __pub2__delete_USCOREbusiness *, const char*);

#ifndef SOAP_TYPE___pub2__delete_USCOREbinding
#define SOAP_TYPE___pub2__delete_USCOREbinding (342)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__delete_USCOREbinding(struct soap*, const struct __pub2__delete_USCOREbinding *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__delete_USCOREbinding(struct soap*, struct __pub2__delete_USCOREbinding *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__delete_USCOREbinding(struct soap*, const struct __pub2__delete_USCOREbinding *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__delete_USCOREbinding(struct soap*, const char*, int, const struct __pub2__delete_USCOREbinding *, const char*);
SOAP_FMAC3 struct __pub2__delete_USCOREbinding * SOAP_FMAC4 soap_get___pub2__delete_USCOREbinding(struct soap*, struct __pub2__delete_USCOREbinding *, const char*, const char*);
SOAP_FMAC3 struct __pub2__delete_USCOREbinding * SOAP_FMAC4 soap_in___pub2__delete_USCOREbinding(struct soap*, const char*, struct __pub2__delete_USCOREbinding *, const char*);

#ifndef SOAP_TYPE___pub2__add_USCOREpublisherAssertions
#define SOAP_TYPE___pub2__add_USCOREpublisherAssertions (339)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___pub2__add_USCOREpublisherAssertions(struct soap*, const struct __pub2__add_USCOREpublisherAssertions *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___pub2__add_USCOREpublisherAssertions(struct soap*, struct __pub2__add_USCOREpublisherAssertions *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___pub2__add_USCOREpublisherAssertions(struct soap*, const struct __pub2__add_USCOREpublisherAssertions *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___pub2__add_USCOREpublisherAssertions(struct soap*, const char*, int, const struct __pub2__add_USCOREpublisherAssertions *, const char*);
SOAP_FMAC3 struct __pub2__add_USCOREpublisherAssertions * SOAP_FMAC4 soap_get___pub2__add_USCOREpublisherAssertions(struct soap*, struct __pub2__add_USCOREpublisherAssertions *, const char*, const char*);
SOAP_FMAC3 struct __pub2__add_USCOREpublisherAssertions * SOAP_FMAC4 soap_in___pub2__add_USCOREpublisherAssertions(struct soap*, const char*, struct __pub2__add_USCOREpublisherAssertions *, const char*);

#ifndef SOAP_TYPE___inq2__get_USCOREtModelDetail
#define SOAP_TYPE___inq2__get_USCOREtModelDetail (336)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___inq2__get_USCOREtModelDetail(struct soap*, const struct __inq2__get_USCOREtModelDetail *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___inq2__get_USCOREtModelDetail(struct soap*, struct __inq2__get_USCOREtModelDetail *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___inq2__get_USCOREtModelDetail(struct soap*, const struct __inq2__get_USCOREtModelDetail *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___inq2__get_USCOREtModelDetail(struct soap*, const char*, int, const struct __inq2__get_USCOREtModelDetail *, const char*);
SOAP_FMAC3 struct __inq2__get_USCOREtModelDetail * SOAP_FMAC4 soap_get___inq2__get_USCOREtModelDetail(struct soap*, struct __inq2__get_USCOREtModelDetail *, const char*, const char*);
SOAP_FMAC3 struct __inq2__get_USCOREtModelDetail * SOAP_FMAC4 soap_in___inq2__get_USCOREtModelDetail(struct soap*, const char*, struct __inq2__get_USCOREtModelDetail *, const char*);

#ifndef SOAP_TYPE___inq2__get_USCOREserviceDetail
#define SOAP_TYPE___inq2__get_USCOREserviceDetail (333)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___inq2__get_USCOREserviceDetail(struct soap*, const struct __inq2__get_USCOREserviceDetail *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___inq2__get_USCOREserviceDetail(struct soap*, struct __inq2__get_USCOREserviceDetail *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___inq2__get_USCOREserviceDetail(struct soap*, const struct __inq2__get_USCOREserviceDetail *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___inq2__get_USCOREserviceDetail(struct soap*, const char*, int, const struct __inq2__get_USCOREserviceDetail *, const char*);
SOAP_FMAC3 struct __inq2__get_USCOREserviceDetail * SOAP_FMAC4 soap_get___inq2__get_USCOREserviceDetail(struct soap*, struct __inq2__get_USCOREserviceDetail *, const char*, const char*);
SOAP_FMAC3 struct __inq2__get_USCOREserviceDetail * SOAP_FMAC4 soap_in___inq2__get_USCOREserviceDetail(struct soap*, const char*, struct __inq2__get_USCOREserviceDetail *, const char*);

#ifndef SOAP_TYPE___inq2__get_USCOREbusinessDetailExt
#define SOAP_TYPE___inq2__get_USCOREbusinessDetailExt (330)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___inq2__get_USCOREbusinessDetailExt(struct soap*, const struct __inq2__get_USCOREbusinessDetailExt *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___inq2__get_USCOREbusinessDetailExt(struct soap*, struct __inq2__get_USCOREbusinessDetailExt *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___inq2__get_USCOREbusinessDetailExt(struct soap*, const struct __inq2__get_USCOREbusinessDetailExt *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___inq2__get_USCOREbusinessDetailExt(struct soap*, const char*, int, const struct __inq2__get_USCOREbusinessDetailExt *, const char*);
SOAP_FMAC3 struct __inq2__get_USCOREbusinessDetailExt * SOAP_FMAC4 soap_get___inq2__get_USCOREbusinessDetailExt(struct soap*, struct __inq2__get_USCOREbusinessDetailExt *, const char*, const char*);
SOAP_FMAC3 struct __inq2__get_USCOREbusinessDetailExt * SOAP_FMAC4 soap_in___inq2__get_USCOREbusinessDetailExt(struct soap*, const char*, struct __inq2__get_USCOREbusinessDetailExt *, const char*);

#ifndef SOAP_TYPE___inq2__get_USCOREbusinessDetail
#define SOAP_TYPE___inq2__get_USCOREbusinessDetail (327)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___inq2__get_USCOREbusinessDetail(struct soap*, const struct __inq2__get_USCOREbusinessDetail *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___inq2__get_USCOREbusinessDetail(struct soap*, struct __inq2__get_USCOREbusinessDetail *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___inq2__get_USCOREbusinessDetail(struct soap*, const struct __inq2__get_USCOREbusinessDetail *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___inq2__get_USCOREbusinessDetail(struct soap*, const char*, int, const struct __inq2__get_USCOREbusinessDetail *, const char*);
SOAP_FMAC3 struct __inq2__get_USCOREbusinessDetail * SOAP_FMAC4 soap_get___inq2__get_USCOREbusinessDetail(struct soap*, struct __inq2__get_USCOREbusinessDetail *, const char*, const char*);
SOAP_FMAC3 struct __inq2__get_USCOREbusinessDetail * SOAP_FMAC4 soap_in___inq2__get_USCOREbusinessDetail(struct soap*, const char*, struct __inq2__get_USCOREbusinessDetail *, const char*);

#ifndef SOAP_TYPE___inq2__get_USCOREbindingDetail
#define SOAP_TYPE___inq2__get_USCOREbindingDetail (324)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___inq2__get_USCOREbindingDetail(struct soap*, const struct __inq2__get_USCOREbindingDetail *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___inq2__get_USCOREbindingDetail(struct soap*, struct __inq2__get_USCOREbindingDetail *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___inq2__get_USCOREbindingDetail(struct soap*, const struct __inq2__get_USCOREbindingDetail *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___inq2__get_USCOREbindingDetail(struct soap*, const char*, int, const struct __inq2__get_USCOREbindingDetail *, const char*);
SOAP_FMAC3 struct __inq2__get_USCOREbindingDetail * SOAP_FMAC4 soap_get___inq2__get_USCOREbindingDetail(struct soap*, struct __inq2__get_USCOREbindingDetail *, const char*, const char*);
SOAP_FMAC3 struct __inq2__get_USCOREbindingDetail * SOAP_FMAC4 soap_in___inq2__get_USCOREbindingDetail(struct soap*, const char*, struct __inq2__get_USCOREbindingDetail *, const char*);

#ifndef SOAP_TYPE___inq2__find_USCOREtModel
#define SOAP_TYPE___inq2__find_USCOREtModel (321)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___inq2__find_USCOREtModel(struct soap*, const struct __inq2__find_USCOREtModel *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___inq2__find_USCOREtModel(struct soap*, struct __inq2__find_USCOREtModel *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___inq2__find_USCOREtModel(struct soap*, const struct __inq2__find_USCOREtModel *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___inq2__find_USCOREtModel(struct soap*, const char*, int, const struct __inq2__find_USCOREtModel *, const char*);
SOAP_FMAC3 struct __inq2__find_USCOREtModel * SOAP_FMAC4 soap_get___inq2__find_USCOREtModel(struct soap*, struct __inq2__find_USCOREtModel *, const char*, const char*);
SOAP_FMAC3 struct __inq2__find_USCOREtModel * SOAP_FMAC4 soap_in___inq2__find_USCOREtModel(struct soap*, const char*, struct __inq2__find_USCOREtModel *, const char*);

#ifndef SOAP_TYPE___inq2__find_USCOREservice
#define SOAP_TYPE___inq2__find_USCOREservice (318)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___inq2__find_USCOREservice(struct soap*, const struct __inq2__find_USCOREservice *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___inq2__find_USCOREservice(struct soap*, struct __inq2__find_USCOREservice *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___inq2__find_USCOREservice(struct soap*, const struct __inq2__find_USCOREservice *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___inq2__find_USCOREservice(struct soap*, const char*, int, const struct __inq2__find_USCOREservice *, const char*);
SOAP_FMAC3 struct __inq2__find_USCOREservice * SOAP_FMAC4 soap_get___inq2__find_USCOREservice(struct soap*, struct __inq2__find_USCOREservice *, const char*, const char*);
SOAP_FMAC3 struct __inq2__find_USCOREservice * SOAP_FMAC4 soap_in___inq2__find_USCOREservice(struct soap*, const char*, struct __inq2__find_USCOREservice *, const char*);

#ifndef SOAP_TYPE___inq2__find_USCORErelatedBusinesses
#define SOAP_TYPE___inq2__find_USCORErelatedBusinesses (315)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___inq2__find_USCORErelatedBusinesses(struct soap*, const struct __inq2__find_USCORErelatedBusinesses *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___inq2__find_USCORErelatedBusinesses(struct soap*, struct __inq2__find_USCORErelatedBusinesses *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___inq2__find_USCORErelatedBusinesses(struct soap*, const struct __inq2__find_USCORErelatedBusinesses *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___inq2__find_USCORErelatedBusinesses(struct soap*, const char*, int, const struct __inq2__find_USCORErelatedBusinesses *, const char*);
SOAP_FMAC3 struct __inq2__find_USCORErelatedBusinesses * SOAP_FMAC4 soap_get___inq2__find_USCORErelatedBusinesses(struct soap*, struct __inq2__find_USCORErelatedBusinesses *, const char*, const char*);
SOAP_FMAC3 struct __inq2__find_USCORErelatedBusinesses * SOAP_FMAC4 soap_in___inq2__find_USCORErelatedBusinesses(struct soap*, const char*, struct __inq2__find_USCORErelatedBusinesses *, const char*);

#ifndef SOAP_TYPE___inq2__find_USCOREbusiness
#define SOAP_TYPE___inq2__find_USCOREbusiness (312)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___inq2__find_USCOREbusiness(struct soap*, const struct __inq2__find_USCOREbusiness *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___inq2__find_USCOREbusiness(struct soap*, struct __inq2__find_USCOREbusiness *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___inq2__find_USCOREbusiness(struct soap*, const struct __inq2__find_USCOREbusiness *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___inq2__find_USCOREbusiness(struct soap*, const char*, int, const struct __inq2__find_USCOREbusiness *, const char*);
SOAP_FMAC3 struct __inq2__find_USCOREbusiness * SOAP_FMAC4 soap_get___inq2__find_USCOREbusiness(struct soap*, struct __inq2__find_USCOREbusiness *, const char*, const char*);
SOAP_FMAC3 struct __inq2__find_USCOREbusiness * SOAP_FMAC4 soap_in___inq2__find_USCOREbusiness(struct soap*, const char*, struct __inq2__find_USCOREbusiness *, const char*);

#ifndef SOAP_TYPE___inq2__find_USCOREbinding
#define SOAP_TYPE___inq2__find_USCOREbinding (309)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize___inq2__find_USCOREbinding(struct soap*, const struct __inq2__find_USCOREbinding *);
SOAP_FMAC3 void SOAP_FMAC4 soap_default___inq2__find_USCOREbinding(struct soap*, struct __inq2__find_USCOREbinding *);
SOAP_FMAC3 int SOAP_FMAC4 soap_put___inq2__find_USCOREbinding(struct soap*, const struct __inq2__find_USCOREbinding *, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out___inq2__find_USCOREbinding(struct soap*, const char*, int, const struct __inq2__find_USCOREbinding *, const char*);
SOAP_FMAC3 struct __inq2__find_USCOREbinding * SOAP_FMAC4 soap_get___inq2__find_USCOREbinding(struct soap*, struct __inq2__find_USCOREbinding *, const char*, const char*);
SOAP_FMAC3 struct __inq2__find_USCOREbinding * SOAP_FMAC4 soap_in___inq2__find_USCOREbinding(struct soap*, const char*, struct __inq2__find_USCOREbinding *, const char*);

#ifndef WITH_NOGLOBAL

#ifndef SOAP_TYPE_PointerToSOAP_ENV__Code
#define SOAP_TYPE_PointerToSOAP_ENV__Code (391)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Code(struct soap*, const char *, int, struct SOAP_ENV__Code *const*, const char *);
SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Code(struct soap*, struct SOAP_ENV__Code **, const char*, const char*);
SOAP_FMAC3 struct SOAP_ENV__Code ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Code(struct soap*, const char*, struct SOAP_ENV__Code **, const char*);

#endif

#ifndef WITH_NOGLOBAL

#ifndef SOAP_TYPE_PointerToSOAP_ENV__Detail
#define SOAP_TYPE_PointerToSOAP_ENV__Detail (390)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToSOAP_ENV__Detail(struct soap*, const char *, int, struct SOAP_ENV__Detail *const*, const char *);
SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_get_PointerToSOAP_ENV__Detail(struct soap*, struct SOAP_ENV__Detail **, const char*, const char*);
SOAP_FMAC3 struct SOAP_ENV__Detail ** SOAP_FMAC4 soap_in_PointerToSOAP_ENV__Detail(struct soap*, const char*, struct SOAP_ENV__Detail **, const char*);

#endif

#ifndef SOAP_TYPE_PointerTouddi2__set_USCOREpublisherAssertions
#define SOAP_TYPE_PointerTouddi2__set_USCOREpublisherAssertions (382)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__set_USCOREpublisherAssertions(struct soap*, uddi2__set_USCOREpublisherAssertions *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__set_USCOREpublisherAssertions(struct soap*, uddi2__set_USCOREpublisherAssertions *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__set_USCOREpublisherAssertions(struct soap*, const char *, int, uddi2__set_USCOREpublisherAssertions *const*, const char *);
SOAP_FMAC3 uddi2__set_USCOREpublisherAssertions ** SOAP_FMAC4 soap_get_PointerTouddi2__set_USCOREpublisherAssertions(struct soap*, uddi2__set_USCOREpublisherAssertions **, const char*, const char*);
SOAP_FMAC3 uddi2__set_USCOREpublisherAssertions ** SOAP_FMAC4 soap_in_PointerTouddi2__set_USCOREpublisherAssertions(struct soap*, const char*, uddi2__set_USCOREpublisherAssertions **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__save_USCOREtModel
#define SOAP_TYPE_PointerTouddi2__save_USCOREtModel (379)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__save_USCOREtModel(struct soap*, uddi2__save_USCOREtModel *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__save_USCOREtModel(struct soap*, uddi2__save_USCOREtModel *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__save_USCOREtModel(struct soap*, const char *, int, uddi2__save_USCOREtModel *const*, const char *);
SOAP_FMAC3 uddi2__save_USCOREtModel ** SOAP_FMAC4 soap_get_PointerTouddi2__save_USCOREtModel(struct soap*, uddi2__save_USCOREtModel **, const char*, const char*);
SOAP_FMAC3 uddi2__save_USCOREtModel ** SOAP_FMAC4 soap_in_PointerTouddi2__save_USCOREtModel(struct soap*, const char*, uddi2__save_USCOREtModel **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__save_USCOREservice
#define SOAP_TYPE_PointerTouddi2__save_USCOREservice (376)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__save_USCOREservice(struct soap*, uddi2__save_USCOREservice *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__save_USCOREservice(struct soap*, uddi2__save_USCOREservice *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__save_USCOREservice(struct soap*, const char *, int, uddi2__save_USCOREservice *const*, const char *);
SOAP_FMAC3 uddi2__save_USCOREservice ** SOAP_FMAC4 soap_get_PointerTouddi2__save_USCOREservice(struct soap*, uddi2__save_USCOREservice **, const char*, const char*);
SOAP_FMAC3 uddi2__save_USCOREservice ** SOAP_FMAC4 soap_in_PointerTouddi2__save_USCOREservice(struct soap*, const char*, uddi2__save_USCOREservice **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__save_USCOREbusiness
#define SOAP_TYPE_PointerTouddi2__save_USCOREbusiness (373)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__save_USCOREbusiness(struct soap*, uddi2__save_USCOREbusiness *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__save_USCOREbusiness(struct soap*, uddi2__save_USCOREbusiness *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__save_USCOREbusiness(struct soap*, const char *, int, uddi2__save_USCOREbusiness *const*, const char *);
SOAP_FMAC3 uddi2__save_USCOREbusiness ** SOAP_FMAC4 soap_get_PointerTouddi2__save_USCOREbusiness(struct soap*, uddi2__save_USCOREbusiness **, const char*, const char*);
SOAP_FMAC3 uddi2__save_USCOREbusiness ** SOAP_FMAC4 soap_in_PointerTouddi2__save_USCOREbusiness(struct soap*, const char*, uddi2__save_USCOREbusiness **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__save_USCOREbinding
#define SOAP_TYPE_PointerTouddi2__save_USCOREbinding (370)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__save_USCOREbinding(struct soap*, uddi2__save_USCOREbinding *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__save_USCOREbinding(struct soap*, uddi2__save_USCOREbinding *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__save_USCOREbinding(struct soap*, const char *, int, uddi2__save_USCOREbinding *const*, const char *);
SOAP_FMAC3 uddi2__save_USCOREbinding ** SOAP_FMAC4 soap_get_PointerTouddi2__save_USCOREbinding(struct soap*, uddi2__save_USCOREbinding **, const char*, const char*);
SOAP_FMAC3 uddi2__save_USCOREbinding ** SOAP_FMAC4 soap_in_PointerTouddi2__save_USCOREbinding(struct soap*, const char*, uddi2__save_USCOREbinding **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__get_USCOREregisteredInfo
#define SOAP_TYPE_PointerTouddi2__get_USCOREregisteredInfo (367)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__get_USCOREregisteredInfo(struct soap*, uddi2__get_USCOREregisteredInfo *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__get_USCOREregisteredInfo(struct soap*, uddi2__get_USCOREregisteredInfo *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__get_USCOREregisteredInfo(struct soap*, const char *, int, uddi2__get_USCOREregisteredInfo *const*, const char *);
SOAP_FMAC3 uddi2__get_USCOREregisteredInfo ** SOAP_FMAC4 soap_get_PointerTouddi2__get_USCOREregisteredInfo(struct soap*, uddi2__get_USCOREregisteredInfo **, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREregisteredInfo ** SOAP_FMAC4 soap_in_PointerTouddi2__get_USCOREregisteredInfo(struct soap*, const char*, uddi2__get_USCOREregisteredInfo **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__get_USCOREpublisherAssertions
#define SOAP_TYPE_PointerTouddi2__get_USCOREpublisherAssertions (364)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__get_USCOREpublisherAssertions(struct soap*, uddi2__get_USCOREpublisherAssertions *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__get_USCOREpublisherAssertions(struct soap*, uddi2__get_USCOREpublisherAssertions *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__get_USCOREpublisherAssertions(struct soap*, const char *, int, uddi2__get_USCOREpublisherAssertions *const*, const char *);
SOAP_FMAC3 uddi2__get_USCOREpublisherAssertions ** SOAP_FMAC4 soap_get_PointerTouddi2__get_USCOREpublisherAssertions(struct soap*, uddi2__get_USCOREpublisherAssertions **, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREpublisherAssertions ** SOAP_FMAC4 soap_in_PointerTouddi2__get_USCOREpublisherAssertions(struct soap*, const char*, uddi2__get_USCOREpublisherAssertions **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__get_USCOREauthToken
#define SOAP_TYPE_PointerTouddi2__get_USCOREauthToken (361)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__get_USCOREauthToken(struct soap*, uddi2__get_USCOREauthToken *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__get_USCOREauthToken(struct soap*, uddi2__get_USCOREauthToken *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__get_USCOREauthToken(struct soap*, const char *, int, uddi2__get_USCOREauthToken *const*, const char *);
SOAP_FMAC3 uddi2__get_USCOREauthToken ** SOAP_FMAC4 soap_get_PointerTouddi2__get_USCOREauthToken(struct soap*, uddi2__get_USCOREauthToken **, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREauthToken ** SOAP_FMAC4 soap_in_PointerTouddi2__get_USCOREauthToken(struct soap*, const char*, uddi2__get_USCOREauthToken **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__get_USCOREassertionStatusReport
#define SOAP_TYPE_PointerTouddi2__get_USCOREassertionStatusReport (358)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__get_USCOREassertionStatusReport(struct soap*, uddi2__get_USCOREassertionStatusReport *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__get_USCOREassertionStatusReport(struct soap*, uddi2__get_USCOREassertionStatusReport *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__get_USCOREassertionStatusReport(struct soap*, const char *, int, uddi2__get_USCOREassertionStatusReport *const*, const char *);
SOAP_FMAC3 uddi2__get_USCOREassertionStatusReport ** SOAP_FMAC4 soap_get_PointerTouddi2__get_USCOREassertionStatusReport(struct soap*, uddi2__get_USCOREassertionStatusReport **, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREassertionStatusReport ** SOAP_FMAC4 soap_in_PointerTouddi2__get_USCOREassertionStatusReport(struct soap*, const char*, uddi2__get_USCOREassertionStatusReport **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__discard_USCOREauthToken
#define SOAP_TYPE_PointerTouddi2__discard_USCOREauthToken (355)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__discard_USCOREauthToken(struct soap*, uddi2__discard_USCOREauthToken *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__discard_USCOREauthToken(struct soap*, uddi2__discard_USCOREauthToken *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__discard_USCOREauthToken(struct soap*, const char *, int, uddi2__discard_USCOREauthToken *const*, const char *);
SOAP_FMAC3 uddi2__discard_USCOREauthToken ** SOAP_FMAC4 soap_get_PointerTouddi2__discard_USCOREauthToken(struct soap*, uddi2__discard_USCOREauthToken **, const char*, const char*);
SOAP_FMAC3 uddi2__discard_USCOREauthToken ** SOAP_FMAC4 soap_in_PointerTouddi2__discard_USCOREauthToken(struct soap*, const char*, uddi2__discard_USCOREauthToken **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__delete_USCOREtModel
#define SOAP_TYPE_PointerTouddi2__delete_USCOREtModel (352)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__delete_USCOREtModel(struct soap*, uddi2__delete_USCOREtModel *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__delete_USCOREtModel(struct soap*, uddi2__delete_USCOREtModel *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__delete_USCOREtModel(struct soap*, const char *, int, uddi2__delete_USCOREtModel *const*, const char *);
SOAP_FMAC3 uddi2__delete_USCOREtModel ** SOAP_FMAC4 soap_get_PointerTouddi2__delete_USCOREtModel(struct soap*, uddi2__delete_USCOREtModel **, const char*, const char*);
SOAP_FMAC3 uddi2__delete_USCOREtModel ** SOAP_FMAC4 soap_in_PointerTouddi2__delete_USCOREtModel(struct soap*, const char*, uddi2__delete_USCOREtModel **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__delete_USCOREservice
#define SOAP_TYPE_PointerTouddi2__delete_USCOREservice (349)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__delete_USCOREservice(struct soap*, uddi2__delete_USCOREservice *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__delete_USCOREservice(struct soap*, uddi2__delete_USCOREservice *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__delete_USCOREservice(struct soap*, const char *, int, uddi2__delete_USCOREservice *const*, const char *);
SOAP_FMAC3 uddi2__delete_USCOREservice ** SOAP_FMAC4 soap_get_PointerTouddi2__delete_USCOREservice(struct soap*, uddi2__delete_USCOREservice **, const char*, const char*);
SOAP_FMAC3 uddi2__delete_USCOREservice ** SOAP_FMAC4 soap_in_PointerTouddi2__delete_USCOREservice(struct soap*, const char*, uddi2__delete_USCOREservice **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__delete_USCOREpublisherAssertions
#define SOAP_TYPE_PointerTouddi2__delete_USCOREpublisherAssertions (346)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__delete_USCOREpublisherAssertions(struct soap*, uddi2__delete_USCOREpublisherAssertions *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__delete_USCOREpublisherAssertions(struct soap*, uddi2__delete_USCOREpublisherAssertions *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__delete_USCOREpublisherAssertions(struct soap*, const char *, int, uddi2__delete_USCOREpublisherAssertions *const*, const char *);
SOAP_FMAC3 uddi2__delete_USCOREpublisherAssertions ** SOAP_FMAC4 soap_get_PointerTouddi2__delete_USCOREpublisherAssertions(struct soap*, uddi2__delete_USCOREpublisherAssertions **, const char*, const char*);
SOAP_FMAC3 uddi2__delete_USCOREpublisherAssertions ** SOAP_FMAC4 soap_in_PointerTouddi2__delete_USCOREpublisherAssertions(struct soap*, const char*, uddi2__delete_USCOREpublisherAssertions **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__delete_USCOREbusiness
#define SOAP_TYPE_PointerTouddi2__delete_USCOREbusiness (343)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__delete_USCOREbusiness(struct soap*, uddi2__delete_USCOREbusiness *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__delete_USCOREbusiness(struct soap*, uddi2__delete_USCOREbusiness *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__delete_USCOREbusiness(struct soap*, const char *, int, uddi2__delete_USCOREbusiness *const*, const char *);
SOAP_FMAC3 uddi2__delete_USCOREbusiness ** SOAP_FMAC4 soap_get_PointerTouddi2__delete_USCOREbusiness(struct soap*, uddi2__delete_USCOREbusiness **, const char*, const char*);
SOAP_FMAC3 uddi2__delete_USCOREbusiness ** SOAP_FMAC4 soap_in_PointerTouddi2__delete_USCOREbusiness(struct soap*, const char*, uddi2__delete_USCOREbusiness **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__delete_USCOREbinding
#define SOAP_TYPE_PointerTouddi2__delete_USCOREbinding (340)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__delete_USCOREbinding(struct soap*, uddi2__delete_USCOREbinding *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__delete_USCOREbinding(struct soap*, uddi2__delete_USCOREbinding *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__delete_USCOREbinding(struct soap*, const char *, int, uddi2__delete_USCOREbinding *const*, const char *);
SOAP_FMAC3 uddi2__delete_USCOREbinding ** SOAP_FMAC4 soap_get_PointerTouddi2__delete_USCOREbinding(struct soap*, uddi2__delete_USCOREbinding **, const char*, const char*);
SOAP_FMAC3 uddi2__delete_USCOREbinding ** SOAP_FMAC4 soap_in_PointerTouddi2__delete_USCOREbinding(struct soap*, const char*, uddi2__delete_USCOREbinding **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__add_USCOREpublisherAssertions
#define SOAP_TYPE_PointerTouddi2__add_USCOREpublisherAssertions (337)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__add_USCOREpublisherAssertions(struct soap*, uddi2__add_USCOREpublisherAssertions *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__add_USCOREpublisherAssertions(struct soap*, uddi2__add_USCOREpublisherAssertions *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__add_USCOREpublisherAssertions(struct soap*, const char *, int, uddi2__add_USCOREpublisherAssertions *const*, const char *);
SOAP_FMAC3 uddi2__add_USCOREpublisherAssertions ** SOAP_FMAC4 soap_get_PointerTouddi2__add_USCOREpublisherAssertions(struct soap*, uddi2__add_USCOREpublisherAssertions **, const char*, const char*);
SOAP_FMAC3 uddi2__add_USCOREpublisherAssertions ** SOAP_FMAC4 soap_in_PointerTouddi2__add_USCOREpublisherAssertions(struct soap*, const char*, uddi2__add_USCOREpublisherAssertions **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__get_USCOREtModelDetail
#define SOAP_TYPE_PointerTouddi2__get_USCOREtModelDetail (334)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__get_USCOREtModelDetail(struct soap*, uddi2__get_USCOREtModelDetail *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__get_USCOREtModelDetail(struct soap*, uddi2__get_USCOREtModelDetail *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__get_USCOREtModelDetail(struct soap*, const char *, int, uddi2__get_USCOREtModelDetail *const*, const char *);
SOAP_FMAC3 uddi2__get_USCOREtModelDetail ** SOAP_FMAC4 soap_get_PointerTouddi2__get_USCOREtModelDetail(struct soap*, uddi2__get_USCOREtModelDetail **, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREtModelDetail ** SOAP_FMAC4 soap_in_PointerTouddi2__get_USCOREtModelDetail(struct soap*, const char*, uddi2__get_USCOREtModelDetail **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__get_USCOREserviceDetail
#define SOAP_TYPE_PointerTouddi2__get_USCOREserviceDetail (331)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__get_USCOREserviceDetail(struct soap*, uddi2__get_USCOREserviceDetail *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__get_USCOREserviceDetail(struct soap*, uddi2__get_USCOREserviceDetail *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__get_USCOREserviceDetail(struct soap*, const char *, int, uddi2__get_USCOREserviceDetail *const*, const char *);
SOAP_FMAC3 uddi2__get_USCOREserviceDetail ** SOAP_FMAC4 soap_get_PointerTouddi2__get_USCOREserviceDetail(struct soap*, uddi2__get_USCOREserviceDetail **, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREserviceDetail ** SOAP_FMAC4 soap_in_PointerTouddi2__get_USCOREserviceDetail(struct soap*, const char*, uddi2__get_USCOREserviceDetail **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__get_USCOREbusinessDetailExt
#define SOAP_TYPE_PointerTouddi2__get_USCOREbusinessDetailExt (328)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__get_USCOREbusinessDetailExt(struct soap*, uddi2__get_USCOREbusinessDetailExt *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__get_USCOREbusinessDetailExt(struct soap*, uddi2__get_USCOREbusinessDetailExt *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__get_USCOREbusinessDetailExt(struct soap*, const char *, int, uddi2__get_USCOREbusinessDetailExt *const*, const char *);
SOAP_FMAC3 uddi2__get_USCOREbusinessDetailExt ** SOAP_FMAC4 soap_get_PointerTouddi2__get_USCOREbusinessDetailExt(struct soap*, uddi2__get_USCOREbusinessDetailExt **, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREbusinessDetailExt ** SOAP_FMAC4 soap_in_PointerTouddi2__get_USCOREbusinessDetailExt(struct soap*, const char*, uddi2__get_USCOREbusinessDetailExt **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__get_USCOREbusinessDetail
#define SOAP_TYPE_PointerTouddi2__get_USCOREbusinessDetail (325)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__get_USCOREbusinessDetail(struct soap*, uddi2__get_USCOREbusinessDetail *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__get_USCOREbusinessDetail(struct soap*, uddi2__get_USCOREbusinessDetail *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__get_USCOREbusinessDetail(struct soap*, const char *, int, uddi2__get_USCOREbusinessDetail *const*, const char *);
SOAP_FMAC3 uddi2__get_USCOREbusinessDetail ** SOAP_FMAC4 soap_get_PointerTouddi2__get_USCOREbusinessDetail(struct soap*, uddi2__get_USCOREbusinessDetail **, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREbusinessDetail ** SOAP_FMAC4 soap_in_PointerTouddi2__get_USCOREbusinessDetail(struct soap*, const char*, uddi2__get_USCOREbusinessDetail **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__get_USCOREbindingDetail
#define SOAP_TYPE_PointerTouddi2__get_USCOREbindingDetail (322)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__get_USCOREbindingDetail(struct soap*, uddi2__get_USCOREbindingDetail *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__get_USCOREbindingDetail(struct soap*, uddi2__get_USCOREbindingDetail *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__get_USCOREbindingDetail(struct soap*, const char *, int, uddi2__get_USCOREbindingDetail *const*, const char *);
SOAP_FMAC3 uddi2__get_USCOREbindingDetail ** SOAP_FMAC4 soap_get_PointerTouddi2__get_USCOREbindingDetail(struct soap*, uddi2__get_USCOREbindingDetail **, const char*, const char*);
SOAP_FMAC3 uddi2__get_USCOREbindingDetail ** SOAP_FMAC4 soap_in_PointerTouddi2__get_USCOREbindingDetail(struct soap*, const char*, uddi2__get_USCOREbindingDetail **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__find_USCOREtModel
#define SOAP_TYPE_PointerTouddi2__find_USCOREtModel (319)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__find_USCOREtModel(struct soap*, uddi2__find_USCOREtModel *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__find_USCOREtModel(struct soap*, uddi2__find_USCOREtModel *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__find_USCOREtModel(struct soap*, const char *, int, uddi2__find_USCOREtModel *const*, const char *);
SOAP_FMAC3 uddi2__find_USCOREtModel ** SOAP_FMAC4 soap_get_PointerTouddi2__find_USCOREtModel(struct soap*, uddi2__find_USCOREtModel **, const char*, const char*);
SOAP_FMAC3 uddi2__find_USCOREtModel ** SOAP_FMAC4 soap_in_PointerTouddi2__find_USCOREtModel(struct soap*, const char*, uddi2__find_USCOREtModel **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__find_USCOREservice
#define SOAP_TYPE_PointerTouddi2__find_USCOREservice (316)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__find_USCOREservice(struct soap*, uddi2__find_USCOREservice *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__find_USCOREservice(struct soap*, uddi2__find_USCOREservice *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__find_USCOREservice(struct soap*, const char *, int, uddi2__find_USCOREservice *const*, const char *);
SOAP_FMAC3 uddi2__find_USCOREservice ** SOAP_FMAC4 soap_get_PointerTouddi2__find_USCOREservice(struct soap*, uddi2__find_USCOREservice **, const char*, const char*);
SOAP_FMAC3 uddi2__find_USCOREservice ** SOAP_FMAC4 soap_in_PointerTouddi2__find_USCOREservice(struct soap*, const char*, uddi2__find_USCOREservice **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__find_USCORErelatedBusinesses
#define SOAP_TYPE_PointerTouddi2__find_USCORErelatedBusinesses (313)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__find_USCORErelatedBusinesses(struct soap*, uddi2__find_USCORErelatedBusinesses *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__find_USCORErelatedBusinesses(struct soap*, uddi2__find_USCORErelatedBusinesses *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__find_USCORErelatedBusinesses(struct soap*, const char *, int, uddi2__find_USCORErelatedBusinesses *const*, const char *);
SOAP_FMAC3 uddi2__find_USCORErelatedBusinesses ** SOAP_FMAC4 soap_get_PointerTouddi2__find_USCORErelatedBusinesses(struct soap*, uddi2__find_USCORErelatedBusinesses **, const char*, const char*);
SOAP_FMAC3 uddi2__find_USCORErelatedBusinesses ** SOAP_FMAC4 soap_in_PointerTouddi2__find_USCORErelatedBusinesses(struct soap*, const char*, uddi2__find_USCORErelatedBusinesses **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__find_USCOREbusiness
#define SOAP_TYPE_PointerTouddi2__find_USCOREbusiness (310)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__find_USCOREbusiness(struct soap*, uddi2__find_USCOREbusiness *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__find_USCOREbusiness(struct soap*, uddi2__find_USCOREbusiness *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__find_USCOREbusiness(struct soap*, const char *, int, uddi2__find_USCOREbusiness *const*, const char *);
SOAP_FMAC3 uddi2__find_USCOREbusiness ** SOAP_FMAC4 soap_get_PointerTouddi2__find_USCOREbusiness(struct soap*, uddi2__find_USCOREbusiness **, const char*, const char*);
SOAP_FMAC3 uddi2__find_USCOREbusiness ** SOAP_FMAC4 soap_in_PointerTouddi2__find_USCOREbusiness(struct soap*, const char*, uddi2__find_USCOREbusiness **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__find_USCOREbinding
#define SOAP_TYPE_PointerTouddi2__find_USCOREbinding (307)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__find_USCOREbinding(struct soap*, uddi2__find_USCOREbinding *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__find_USCOREbinding(struct soap*, uddi2__find_USCOREbinding *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__find_USCOREbinding(struct soap*, const char *, int, uddi2__find_USCOREbinding *const*, const char *);
SOAP_FMAC3 uddi2__find_USCOREbinding ** SOAP_FMAC4 soap_get_PointerTouddi2__find_USCOREbinding(struct soap*, uddi2__find_USCOREbinding **, const char*, const char*);
SOAP_FMAC3 uddi2__find_USCOREbinding ** SOAP_FMAC4 soap_in_PointerTouddi2__find_USCOREbinding(struct soap*, const char*, uddi2__find_USCOREbinding **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__relatedBusinessInfos
#define SOAP_TYPE_PointerTouddi2__relatedBusinessInfos (305)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__relatedBusinessInfos(struct soap*, uddi2__relatedBusinessInfos *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__relatedBusinessInfos(struct soap*, uddi2__relatedBusinessInfos *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__relatedBusinessInfos(struct soap*, const char *, int, uddi2__relatedBusinessInfos *const*, const char *);
SOAP_FMAC3 uddi2__relatedBusinessInfos ** SOAP_FMAC4 soap_get_PointerTouddi2__relatedBusinessInfos(struct soap*, uddi2__relatedBusinessInfos **, const char*, const char*);
SOAP_FMAC3 uddi2__relatedBusinessInfos ** SOAP_FMAC4 soap_in_PointerTouddi2__relatedBusinessInfos(struct soap*, const char*, uddi2__relatedBusinessInfos **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__tModelInfos
#define SOAP_TYPE_PointerTouddi2__tModelInfos (304)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__tModelInfos(struct soap*, uddi2__tModelInfos *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__tModelInfos(struct soap*, uddi2__tModelInfos *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__tModelInfos(struct soap*, const char *, int, uddi2__tModelInfos *const*, const char *);
SOAP_FMAC3 uddi2__tModelInfos ** SOAP_FMAC4 soap_get_PointerTouddi2__tModelInfos(struct soap*, uddi2__tModelInfos **, const char*, const char*);
SOAP_FMAC3 uddi2__tModelInfos ** SOAP_FMAC4 soap_in_PointerTouddi2__tModelInfos(struct soap*, const char*, uddi2__tModelInfos **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__businessInfos
#define SOAP_TYPE_PointerTouddi2__businessInfos (303)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__businessInfos(struct soap*, uddi2__businessInfos *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__businessInfos(struct soap*, uddi2__businessInfos *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__businessInfos(struct soap*, const char *, int, uddi2__businessInfos *const*, const char *);
SOAP_FMAC3 uddi2__businessInfos ** SOAP_FMAC4 soap_get_PointerTouddi2__businessInfos(struct soap*, uddi2__businessInfos **, const char*, const char*);
SOAP_FMAC3 uddi2__businessInfos ** SOAP_FMAC4 soap_in_PointerTouddi2__businessInfos(struct soap*, const char*, uddi2__businessInfos **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__businessEntityExt
#define SOAP_TYPE_PointerTouddi2__businessEntityExt (301)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__businessEntityExt(struct soap*, uddi2__businessEntityExt *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__businessEntityExt(struct soap*, uddi2__businessEntityExt *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__businessEntityExt(struct soap*, const char *, int, uddi2__businessEntityExt *const*, const char *);
SOAP_FMAC3 uddi2__businessEntityExt ** SOAP_FMAC4 soap_get_PointerTouddi2__businessEntityExt(struct soap*, uddi2__businessEntityExt **, const char*, const char*);
SOAP_FMAC3 uddi2__businessEntityExt ** SOAP_FMAC4 soap_in_PointerTouddi2__businessEntityExt(struct soap*, const char*, uddi2__businessEntityExt **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__assertionStatusItem
#define SOAP_TYPE_PointerTouddi2__assertionStatusItem (299)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__assertionStatusItem(struct soap*, uddi2__assertionStatusItem *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__assertionStatusItem(struct soap*, uddi2__assertionStatusItem *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__assertionStatusItem(struct soap*, const char *, int, uddi2__assertionStatusItem *const*, const char *);
SOAP_FMAC3 uddi2__assertionStatusItem ** SOAP_FMAC4 soap_get_PointerTouddi2__assertionStatusItem(struct soap*, uddi2__assertionStatusItem **, const char*, const char*);
SOAP_FMAC3 uddi2__assertionStatusItem ** SOAP_FMAC4 soap_in_PointerTouddi2__assertionStatusItem(struct soap*, const char*, uddi2__assertionStatusItem **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__tModel
#define SOAP_TYPE_PointerTouddi2__tModel (287)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__tModel(struct soap*, uddi2__tModel *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__tModel(struct soap*, uddi2__tModel *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__tModel(struct soap*, const char *, int, uddi2__tModel *const*, const char *);
SOAP_FMAC3 uddi2__tModel ** SOAP_FMAC4 soap_get_PointerTouddi2__tModel(struct soap*, uddi2__tModel **, const char*, const char*);
SOAP_FMAC3 uddi2__tModel ** SOAP_FMAC4 soap_in_PointerTouddi2__tModel(struct soap*, const char*, uddi2__tModel **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__tModelDetail
#define SOAP_TYPE_PointerTouddi2__tModelDetail (263)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__tModelDetail(struct soap*, uddi2__tModelDetail *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__tModelDetail(struct soap*, uddi2__tModelDetail *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__tModelDetail(struct soap*, const char *, int, uddi2__tModelDetail *const*, const char *);
SOAP_FMAC3 uddi2__tModelDetail ** SOAP_FMAC4 soap_get_PointerTouddi2__tModelDetail(struct soap*, uddi2__tModelDetail **, const char*, const char*);
SOAP_FMAC3 uddi2__tModelDetail ** SOAP_FMAC4 soap_in_PointerTouddi2__tModelDetail(struct soap*, const char*, uddi2__tModelDetail **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__serviceDetail
#define SOAP_TYPE_PointerTouddi2__serviceDetail (258)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__serviceDetail(struct soap*, uddi2__serviceDetail *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__serviceDetail(struct soap*, uddi2__serviceDetail *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__serviceDetail(struct soap*, const char *, int, uddi2__serviceDetail *const*, const char *);
SOAP_FMAC3 uddi2__serviceDetail ** SOAP_FMAC4 soap_get_PointerTouddi2__serviceDetail(struct soap*, uddi2__serviceDetail **, const char*, const char*);
SOAP_FMAC3 uddi2__serviceDetail ** SOAP_FMAC4 soap_in_PointerTouddi2__serviceDetail(struct soap*, const char*, uddi2__serviceDetail **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__registeredInfo
#define SOAP_TYPE_PointerTouddi2__registeredInfo (253)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__registeredInfo(struct soap*, uddi2__registeredInfo *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__registeredInfo(struct soap*, uddi2__registeredInfo *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__registeredInfo(struct soap*, const char *, int, uddi2__registeredInfo *const*, const char *);
SOAP_FMAC3 uddi2__registeredInfo ** SOAP_FMAC4 soap_get_PointerTouddi2__registeredInfo(struct soap*, uddi2__registeredInfo **, const char*, const char*);
SOAP_FMAC3 uddi2__registeredInfo ** SOAP_FMAC4 soap_in_PointerTouddi2__registeredInfo(struct soap*, const char*, uddi2__registeredInfo **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__publisherAssertions
#define SOAP_TYPE_PointerTouddi2__publisherAssertions (250)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__publisherAssertions(struct soap*, uddi2__publisherAssertions *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__publisherAssertions(struct soap*, uddi2__publisherAssertions *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__publisherAssertions(struct soap*, const char *, int, uddi2__publisherAssertions *const*, const char *);
SOAP_FMAC3 uddi2__publisherAssertions ** SOAP_FMAC4 soap_get_PointerTouddi2__publisherAssertions(struct soap*, uddi2__publisherAssertions **, const char*, const char*);
SOAP_FMAC3 uddi2__publisherAssertions ** SOAP_FMAC4 soap_in_PointerTouddi2__publisherAssertions(struct soap*, const char*, uddi2__publisherAssertions **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__businessDetailExt
#define SOAP_TYPE_PointerTouddi2__businessDetailExt (247)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__businessDetailExt(struct soap*, uddi2__businessDetailExt *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__businessDetailExt(struct soap*, uddi2__businessDetailExt *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__businessDetailExt(struct soap*, const char *, int, uddi2__businessDetailExt *const*, const char *);
SOAP_FMAC3 uddi2__businessDetailExt ** SOAP_FMAC4 soap_get_PointerTouddi2__businessDetailExt(struct soap*, uddi2__businessDetailExt **, const char*, const char*);
SOAP_FMAC3 uddi2__businessDetailExt ** SOAP_FMAC4 soap_in_PointerTouddi2__businessDetailExt(struct soap*, const char*, uddi2__businessDetailExt **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__businessDetail
#define SOAP_TYPE_PointerTouddi2__businessDetail (242)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__businessDetail(struct soap*, uddi2__businessDetail *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__businessDetail(struct soap*, uddi2__businessDetail *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__businessDetail(struct soap*, const char *, int, uddi2__businessDetail *const*, const char *);
SOAP_FMAC3 uddi2__businessDetail ** SOAP_FMAC4 soap_get_PointerTouddi2__businessDetail(struct soap*, uddi2__businessDetail **, const char*, const char*);
SOAP_FMAC3 uddi2__businessDetail ** SOAP_FMAC4 soap_in_PointerTouddi2__businessDetail(struct soap*, const char*, uddi2__businessDetail **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__authToken
#define SOAP_TYPE_PointerTouddi2__authToken (233)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__authToken(struct soap*, uddi2__authToken *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__authToken(struct soap*, uddi2__authToken *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__authToken(struct soap*, const char *, int, uddi2__authToken *const*, const char *);
SOAP_FMAC3 uddi2__authToken ** SOAP_FMAC4 soap_get_PointerTouddi2__authToken(struct soap*, uddi2__authToken **, const char*, const char*);
SOAP_FMAC3 uddi2__authToken ** SOAP_FMAC4 soap_in_PointerTouddi2__authToken(struct soap*, const char*, uddi2__authToken **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__assertionStatusReport
#define SOAP_TYPE_PointerTouddi2__assertionStatusReport (229)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__assertionStatusReport(struct soap*, uddi2__assertionStatusReport *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__assertionStatusReport(struct soap*, uddi2__assertionStatusReport *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__assertionStatusReport(struct soap*, const char *, int, uddi2__assertionStatusReport *const*, const char *);
SOAP_FMAC3 uddi2__assertionStatusReport ** SOAP_FMAC4 soap_get_PointerTouddi2__assertionStatusReport(struct soap*, uddi2__assertionStatusReport **, const char*, const char*);
SOAP_FMAC3 uddi2__assertionStatusReport ** SOAP_FMAC4 soap_in_PointerTouddi2__assertionStatusReport(struct soap*, const char*, uddi2__assertionStatusReport **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__tModelList
#define SOAP_TYPE_PointerTouddi2__tModelList (225)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__tModelList(struct soap*, uddi2__tModelList *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__tModelList(struct soap*, uddi2__tModelList *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__tModelList(struct soap*, const char *, int, uddi2__tModelList *const*, const char *);
SOAP_FMAC3 uddi2__tModelList ** SOAP_FMAC4 soap_get_PointerTouddi2__tModelList(struct soap*, uddi2__tModelList **, const char*, const char*);
SOAP_FMAC3 uddi2__tModelList ** SOAP_FMAC4 soap_in_PointerTouddi2__tModelList(struct soap*, const char*, uddi2__tModelList **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__serviceList
#define SOAP_TYPE_PointerTouddi2__serviceList (220)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__serviceList(struct soap*, uddi2__serviceList *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__serviceList(struct soap*, uddi2__serviceList *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__serviceList(struct soap*, const char *, int, uddi2__serviceList *const*, const char *);
SOAP_FMAC3 uddi2__serviceList ** SOAP_FMAC4 soap_get_PointerTouddi2__serviceList(struct soap*, uddi2__serviceList **, const char*, const char*);
SOAP_FMAC3 uddi2__serviceList ** SOAP_FMAC4 soap_in_PointerTouddi2__serviceList(struct soap*, const char*, uddi2__serviceList **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__relatedBusinessesList
#define SOAP_TYPE_PointerTouddi2__relatedBusinessesList (214)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__relatedBusinessesList(struct soap*, uddi2__relatedBusinessesList *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__relatedBusinessesList(struct soap*, uddi2__relatedBusinessesList *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__relatedBusinessesList(struct soap*, const char *, int, uddi2__relatedBusinessesList *const*, const char *);
SOAP_FMAC3 uddi2__relatedBusinessesList ** SOAP_FMAC4 soap_get_PointerTouddi2__relatedBusinessesList(struct soap*, uddi2__relatedBusinessesList **, const char*, const char*);
SOAP_FMAC3 uddi2__relatedBusinessesList ** SOAP_FMAC4 soap_in_PointerTouddi2__relatedBusinessesList(struct soap*, const char*, uddi2__relatedBusinessesList **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__businessList
#define SOAP_TYPE_PointerTouddi2__businessList (210)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__businessList(struct soap*, uddi2__businessList *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__businessList(struct soap*, uddi2__businessList *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__businessList(struct soap*, const char *, int, uddi2__businessList *const*, const char *);
SOAP_FMAC3 uddi2__businessList ** SOAP_FMAC4 soap_get_PointerTouddi2__businessList(struct soap*, uddi2__businessList **, const char*, const char*);
SOAP_FMAC3 uddi2__businessList ** SOAP_FMAC4 soap_in_PointerTouddi2__businessList(struct soap*, const char*, uddi2__businessList **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__bindingDetail
#define SOAP_TYPE_PointerTouddi2__bindingDetail (202)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__bindingDetail(struct soap*, uddi2__bindingDetail *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__bindingDetail(struct soap*, uddi2__bindingDetail *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__bindingDetail(struct soap*, const char *, int, uddi2__bindingDetail *const*, const char *);
SOAP_FMAC3 uddi2__bindingDetail ** SOAP_FMAC4 soap_get_PointerTouddi2__bindingDetail(struct soap*, uddi2__bindingDetail **, const char*, const char*);
SOAP_FMAC3 uddi2__bindingDetail ** SOAP_FMAC4 soap_in_PointerTouddi2__bindingDetail(struct soap*, const char*, uddi2__bindingDetail **, const char*);

#ifndef SOAP_TYPE_PointerToint
#define SOAP_TYPE_PointerToint (198)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerToint(struct soap*, int *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerToint(struct soap*, int *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerToint(struct soap*, const char *, int, int *const*, const char *);
SOAP_FMAC3 int ** SOAP_FMAC4 soap_get_PointerToint(struct soap*, int **, const char*, const char*);
SOAP_FMAC3 int ** SOAP_FMAC4 soap_in_PointerToint(struct soap*, const char*, int **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__tModelBag
#define SOAP_TYPE_PointerTouddi2__tModelBag (197)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__tModelBag(struct soap*, uddi2__tModelBag *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__tModelBag(struct soap*, uddi2__tModelBag *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__tModelBag(struct soap*, const char *, int, uddi2__tModelBag *const*, const char *);
SOAP_FMAC3 uddi2__tModelBag ** SOAP_FMAC4 soap_get_PointerTouddi2__tModelBag(struct soap*, uddi2__tModelBag **, const char*, const char*);
SOAP_FMAC3 uddi2__tModelBag ** SOAP_FMAC4 soap_in_PointerTouddi2__tModelBag(struct soap*, const char*, uddi2__tModelBag **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__findQualifiers
#define SOAP_TYPE_PointerTouddi2__findQualifiers (196)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__findQualifiers(struct soap*, uddi2__findQualifiers *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__findQualifiers(struct soap*, uddi2__findQualifiers *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__findQualifiers(struct soap*, const char *, int, uddi2__findQualifiers *const*, const char *);
SOAP_FMAC3 uddi2__findQualifiers ** SOAP_FMAC4 soap_get_PointerTouddi2__findQualifiers(struct soap*, uddi2__findQualifiers **, const char*, const char*);
SOAP_FMAC3 uddi2__findQualifiers ** SOAP_FMAC4 soap_in_PointerTouddi2__findQualifiers(struct soap*, const char*, uddi2__findQualifiers **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__dispositionReport
#define SOAP_TYPE_PointerTouddi2__dispositionReport (166)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__dispositionReport(struct soap*, uddi2__dispositionReport *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__dispositionReport(struct soap*, uddi2__dispositionReport *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__dispositionReport(struct soap*, const char *, int, uddi2__dispositionReport *const*, const char *);
SOAP_FMAC3 uddi2__dispositionReport ** SOAP_FMAC4 soap_get_PointerTouddi2__dispositionReport(struct soap*, uddi2__dispositionReport **, const char*, const char*);
SOAP_FMAC3 uddi2__dispositionReport ** SOAP_FMAC4 soap_in_PointerTouddi2__dispositionReport(struct soap*, const char*, uddi2__dispositionReport **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__publisherAssertion
#define SOAP_TYPE_PointerTouddi2__publisherAssertion (157)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__publisherAssertion(struct soap*, uddi2__publisherAssertion *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__publisherAssertion(struct soap*, uddi2__publisherAssertion *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__publisherAssertion(struct soap*, const char *, int, uddi2__publisherAssertion *const*, const char *);
SOAP_FMAC3 uddi2__publisherAssertion ** SOAP_FMAC4 soap_get_PointerTouddi2__publisherAssertion(struct soap*, uddi2__publisherAssertion **, const char*, const char*);
SOAP_FMAC3 uddi2__publisherAssertion ** SOAP_FMAC4 soap_in_PointerTouddi2__publisherAssertion(struct soap*, const char*, uddi2__publisherAssertion **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__instanceDetails
#define SOAP_TYPE_PointerTouddi2__instanceDetails (156)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__instanceDetails(struct soap*, uddi2__instanceDetails *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__instanceDetails(struct soap*, uddi2__instanceDetails *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__instanceDetails(struct soap*, const char *, int, uddi2__instanceDetails *const*, const char *);
SOAP_FMAC3 uddi2__instanceDetails ** SOAP_FMAC4 soap_get_PointerTouddi2__instanceDetails(struct soap*, uddi2__instanceDetails **, const char*, const char*);
SOAP_FMAC3 uddi2__instanceDetails ** SOAP_FMAC4 soap_in_PointerTouddi2__instanceDetails(struct soap*, const char*, uddi2__instanceDetails **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__tModelInstanceInfo
#define SOAP_TYPE_PointerTouddi2__tModelInstanceInfo (154)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__tModelInstanceInfo(struct soap*, uddi2__tModelInstanceInfo *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__tModelInstanceInfo(struct soap*, uddi2__tModelInstanceInfo *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__tModelInstanceInfo(struct soap*, const char *, int, uddi2__tModelInstanceInfo *const*, const char *);
SOAP_FMAC3 uddi2__tModelInstanceInfo ** SOAP_FMAC4 soap_get_PointerTouddi2__tModelInstanceInfo(struct soap*, uddi2__tModelInstanceInfo **, const char*, const char*);
SOAP_FMAC3 uddi2__tModelInstanceInfo ** SOAP_FMAC4 soap_in_PointerTouddi2__tModelInstanceInfo(struct soap*, const char*, uddi2__tModelInstanceInfo **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__tModelInfo
#define SOAP_TYPE_PointerTouddi2__tModelInfo (152)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__tModelInfo(struct soap*, uddi2__tModelInfo *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__tModelInfo(struct soap*, uddi2__tModelInfo *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__tModelInfo(struct soap*, const char *, int, uddi2__tModelInfo *const*, const char *);
SOAP_FMAC3 uddi2__tModelInfo ** SOAP_FMAC4 soap_get_PointerTouddi2__tModelInfo(struct soap*, uddi2__tModelInfo **, const char*, const char*);
SOAP_FMAC3 uddi2__tModelInfo ** SOAP_FMAC4 soap_in_PointerTouddi2__tModelInfo(struct soap*, const char*, uddi2__tModelInfo **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__serviceInfo
#define SOAP_TYPE_PointerTouddi2__serviceInfo (149)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__serviceInfo(struct soap*, uddi2__serviceInfo *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__serviceInfo(struct soap*, uddi2__serviceInfo *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__serviceInfo(struct soap*, const char *, int, uddi2__serviceInfo *const*, const char *);
SOAP_FMAC3 uddi2__serviceInfo ** SOAP_FMAC4 soap_get_PointerTouddi2__serviceInfo(struct soap*, uddi2__serviceInfo **, const char*, const char*);
SOAP_FMAC3 uddi2__serviceInfo ** SOAP_FMAC4 soap_in_PointerTouddi2__serviceInfo(struct soap*, const char*, uddi2__serviceInfo **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__keyType
#define SOAP_TYPE_PointerTouddi2__keyType (148)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__keyType(struct soap*, enum uddi2__keyType *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__keyType(struct soap*, enum uddi2__keyType *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__keyType(struct soap*, const char *, int, enum uddi2__keyType *const*, const char *);
SOAP_FMAC3 enum uddi2__keyType ** SOAP_FMAC4 soap_get_PointerTouddi2__keyType(struct soap*, enum uddi2__keyType **, const char*, const char*);
SOAP_FMAC3 enum uddi2__keyType ** SOAP_FMAC4 soap_in_PointerTouddi2__keyType(struct soap*, const char*, enum uddi2__keyType **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__errInfo
#define SOAP_TYPE_PointerTouddi2__errInfo (147)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__errInfo(struct soap*, uddi2__errInfo *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__errInfo(struct soap*, uddi2__errInfo *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__errInfo(struct soap*, const char *, int, uddi2__errInfo *const*, const char *);
SOAP_FMAC3 uddi2__errInfo ** SOAP_FMAC4 soap_get_PointerTouddi2__errInfo(struct soap*, uddi2__errInfo **, const char*, const char*);
SOAP_FMAC3 uddi2__errInfo ** SOAP_FMAC4 soap_in_PointerTouddi2__errInfo(struct soap*, const char*, uddi2__errInfo **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__relatedBusinessInfo
#define SOAP_TYPE_PointerTouddi2__relatedBusinessInfo (145)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__relatedBusinessInfo(struct soap*, uddi2__relatedBusinessInfo *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__relatedBusinessInfo(struct soap*, uddi2__relatedBusinessInfo *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__relatedBusinessInfo(struct soap*, const char *, int, uddi2__relatedBusinessInfo *const*, const char *);
SOAP_FMAC3 uddi2__relatedBusinessInfo ** SOAP_FMAC4 soap_get_PointerTouddi2__relatedBusinessInfo(struct soap*, uddi2__relatedBusinessInfo **, const char*, const char*);
SOAP_FMAC3 uddi2__relatedBusinessInfo ** SOAP_FMAC4 soap_in_PointerTouddi2__relatedBusinessInfo(struct soap*, const char*, uddi2__relatedBusinessInfo **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__sharedRelationships
#define SOAP_TYPE_PointerTouddi2__sharedRelationships (143)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__sharedRelationships(struct soap*, uddi2__sharedRelationships *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__sharedRelationships(struct soap*, uddi2__sharedRelationships *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__sharedRelationships(struct soap*, const char *, int, uddi2__sharedRelationships *const*, const char *);
SOAP_FMAC3 uddi2__sharedRelationships ** SOAP_FMAC4 soap_get_PointerTouddi2__sharedRelationships(struct soap*, uddi2__sharedRelationships **, const char*, const char*);
SOAP_FMAC3 uddi2__sharedRelationships ** SOAP_FMAC4 soap_in_PointerTouddi2__sharedRelationships(struct soap*, const char*, uddi2__sharedRelationships **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__overviewDoc
#define SOAP_TYPE_PointerTouddi2__overviewDoc (142)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__overviewDoc(struct soap*, uddi2__overviewDoc *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__overviewDoc(struct soap*, uddi2__overviewDoc *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__overviewDoc(struct soap*, const char *, int, uddi2__overviewDoc *const*, const char *);
SOAP_FMAC3 uddi2__overviewDoc ** SOAP_FMAC4 soap_get_PointerTouddi2__overviewDoc(struct soap*, uddi2__overviewDoc **, const char*, const char*);
SOAP_FMAC3 uddi2__overviewDoc ** SOAP_FMAC4 soap_in_PointerTouddi2__overviewDoc(struct soap*, const char*, uddi2__overviewDoc **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__truncated
#define SOAP_TYPE_PointerTouddi2__truncated (140)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__truncated(struct soap*, enum uddi2__truncated *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__truncated(struct soap*, enum uddi2__truncated *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__truncated(struct soap*, const char *, int, enum uddi2__truncated *const*, const char *);
SOAP_FMAC3 enum uddi2__truncated ** SOAP_FMAC4 soap_get_PointerTouddi2__truncated(struct soap*, enum uddi2__truncated **, const char*, const char*);
SOAP_FMAC3 enum uddi2__truncated ** SOAP_FMAC4 soap_in_PointerTouddi2__truncated(struct soap*, const char*, enum uddi2__truncated **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__result
#define SOAP_TYPE_PointerTouddi2__result (138)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__result(struct soap*, uddi2__result *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__result(struct soap*, uddi2__result *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__result(struct soap*, const char *, int, uddi2__result *const*, const char *);
SOAP_FMAC3 uddi2__result ** SOAP_FMAC4 soap_get_PointerTouddi2__result(struct soap*, uddi2__result **, const char*, const char*);
SOAP_FMAC3 uddi2__result ** SOAP_FMAC4 soap_in_PointerTouddi2__result(struct soap*, const char*, uddi2__result **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__discoveryURL
#define SOAP_TYPE_PointerTouddi2__discoveryURL (136)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__discoveryURL(struct soap*, uddi2__discoveryURL *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__discoveryURL(struct soap*, uddi2__discoveryURL *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__discoveryURL(struct soap*, const char *, int, uddi2__discoveryURL *const*, const char *);
SOAP_FMAC3 uddi2__discoveryURL ** SOAP_FMAC4 soap_get_PointerTouddi2__discoveryURL(struct soap*, uddi2__discoveryURL **, const char*, const char*);
SOAP_FMAC3 uddi2__discoveryURL ** SOAP_FMAC4 soap_in_PointerTouddi2__discoveryURL(struct soap*, const char*, uddi2__discoveryURL **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__contact
#define SOAP_TYPE_PointerTouddi2__contact (134)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__contact(struct soap*, uddi2__contact *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__contact(struct soap*, uddi2__contact *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__contact(struct soap*, const char *, int, uddi2__contact *const*, const char *);
SOAP_FMAC3 uddi2__contact ** SOAP_FMAC4 soap_get_PointerTouddi2__contact(struct soap*, uddi2__contact **, const char*, const char*);
SOAP_FMAC3 uddi2__contact ** SOAP_FMAC4 soap_in_PointerTouddi2__contact(struct soap*, const char*, uddi2__contact **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__address
#define SOAP_TYPE_PointerTouddi2__address (132)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__address(struct soap*, uddi2__address *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__address(struct soap*, uddi2__address *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__address(struct soap*, const char *, int, uddi2__address *const*, const char *);
SOAP_FMAC3 uddi2__address ** SOAP_FMAC4 soap_get_PointerTouddi2__address(struct soap*, uddi2__address **, const char*, const char*);
SOAP_FMAC3 uddi2__address ** SOAP_FMAC4 soap_in_PointerTouddi2__address(struct soap*, const char*, uddi2__address **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__email
#define SOAP_TYPE_PointerTouddi2__email (130)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__email(struct soap*, uddi2__email *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__email(struct soap*, uddi2__email *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__email(struct soap*, const char *, int, uddi2__email *const*, const char *);
SOAP_FMAC3 uddi2__email ** SOAP_FMAC4 soap_get_PointerTouddi2__email(struct soap*, uddi2__email **, const char*, const char*);
SOAP_FMAC3 uddi2__email ** SOAP_FMAC4 soap_in_PointerTouddi2__email(struct soap*, const char*, uddi2__email **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__phone
#define SOAP_TYPE_PointerTouddi2__phone (128)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__phone(struct soap*, uddi2__phone *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__phone(struct soap*, uddi2__phone *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__phone(struct soap*, const char *, int, uddi2__phone *const*, const char *);
SOAP_FMAC3 uddi2__phone ** SOAP_FMAC4 soap_get_PointerTouddi2__phone(struct soap*, uddi2__phone **, const char*, const char*);
SOAP_FMAC3 uddi2__phone ** SOAP_FMAC4 soap_in_PointerTouddi2__phone(struct soap*, const char*, uddi2__phone **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__businessService
#define SOAP_TYPE_PointerTouddi2__businessService (125)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__businessService(struct soap*, uddi2__businessService *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__businessService(struct soap*, uddi2__businessService *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__businessService(struct soap*, const char *, int, uddi2__businessService *const*, const char *);
SOAP_FMAC3 uddi2__businessService ** SOAP_FMAC4 soap_get_PointerTouddi2__businessService(struct soap*, uddi2__businessService **, const char*, const char*);
SOAP_FMAC3 uddi2__businessService ** SOAP_FMAC4 soap_in_PointerTouddi2__businessService(struct soap*, const char*, uddi2__businessService **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__bindingTemplates
#define SOAP_TYPE_PointerTouddi2__bindingTemplates (124)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__bindingTemplates(struct soap*, uddi2__bindingTemplates *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__bindingTemplates(struct soap*, uddi2__bindingTemplates *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__bindingTemplates(struct soap*, const char *, int, uddi2__bindingTemplates *const*, const char *);
SOAP_FMAC3 uddi2__bindingTemplates ** SOAP_FMAC4 soap_get_PointerTouddi2__bindingTemplates(struct soap*, uddi2__bindingTemplates **, const char*, const char*);
SOAP_FMAC3 uddi2__bindingTemplates ** SOAP_FMAC4 soap_in_PointerTouddi2__bindingTemplates(struct soap*, const char*, uddi2__bindingTemplates **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__businessInfo
#define SOAP_TYPE_PointerTouddi2__businessInfo (122)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__businessInfo(struct soap*, uddi2__businessInfo *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__businessInfo(struct soap*, uddi2__businessInfo *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__businessInfo(struct soap*, const char *, int, uddi2__businessInfo *const*, const char *);
SOAP_FMAC3 uddi2__businessInfo ** SOAP_FMAC4 soap_get_PointerTouddi2__businessInfo(struct soap*, uddi2__businessInfo **, const char*, const char*);
SOAP_FMAC3 uddi2__businessInfo ** SOAP_FMAC4 soap_in_PointerTouddi2__businessInfo(struct soap*, const char*, uddi2__businessInfo **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__serviceInfos
#define SOAP_TYPE_PointerTouddi2__serviceInfos (121)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__serviceInfos(struct soap*, uddi2__serviceInfos *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__serviceInfos(struct soap*, uddi2__serviceInfos *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__serviceInfos(struct soap*, const char *, int, uddi2__serviceInfos *const*, const char *);
SOAP_FMAC3 uddi2__serviceInfos ** SOAP_FMAC4 soap_get_PointerTouddi2__serviceInfos(struct soap*, uddi2__serviceInfos **, const char*, const char*);
SOAP_FMAC3 uddi2__serviceInfos ** SOAP_FMAC4 soap_in_PointerTouddi2__serviceInfos(struct soap*, const char*, uddi2__serviceInfos **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__businessEntity
#define SOAP_TYPE_PointerTouddi2__businessEntity (120)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__businessEntity(struct soap*, uddi2__businessEntity *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__businessEntity(struct soap*, uddi2__businessEntity *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__businessEntity(struct soap*, const char *, int, uddi2__businessEntity *const*, const char *);
SOAP_FMAC3 uddi2__businessEntity ** SOAP_FMAC4 soap_get_PointerTouddi2__businessEntity(struct soap*, uddi2__businessEntity **, const char*, const char*);
SOAP_FMAC3 uddi2__businessEntity ** SOAP_FMAC4 soap_in_PointerTouddi2__businessEntity(struct soap*, const char*, uddi2__businessEntity **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__categoryBag
#define SOAP_TYPE_PointerTouddi2__categoryBag (119)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__categoryBag(struct soap*, uddi2__categoryBag *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__categoryBag(struct soap*, uddi2__categoryBag *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__categoryBag(struct soap*, const char *, int, uddi2__categoryBag *const*, const char *);
SOAP_FMAC3 uddi2__categoryBag ** SOAP_FMAC4 soap_get_PointerTouddi2__categoryBag(struct soap*, uddi2__categoryBag **, const char*, const char*);
SOAP_FMAC3 uddi2__categoryBag ** SOAP_FMAC4 soap_in_PointerTouddi2__categoryBag(struct soap*, const char*, uddi2__categoryBag **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__identifierBag
#define SOAP_TYPE_PointerTouddi2__identifierBag (118)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__identifierBag(struct soap*, uddi2__identifierBag *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__identifierBag(struct soap*, uddi2__identifierBag *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__identifierBag(struct soap*, const char *, int, uddi2__identifierBag *const*, const char *);
SOAP_FMAC3 uddi2__identifierBag ** SOAP_FMAC4 soap_get_PointerTouddi2__identifierBag(struct soap*, uddi2__identifierBag **, const char*, const char*);
SOAP_FMAC3 uddi2__identifierBag ** SOAP_FMAC4 soap_in_PointerTouddi2__identifierBag(struct soap*, const char*, uddi2__identifierBag **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__businessServices
#define SOAP_TYPE_PointerTouddi2__businessServices (117)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__businessServices(struct soap*, uddi2__businessServices *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__businessServices(struct soap*, uddi2__businessServices *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__businessServices(struct soap*, const char *, int, uddi2__businessServices *const*, const char *);
SOAP_FMAC3 uddi2__businessServices ** SOAP_FMAC4 soap_get_PointerTouddi2__businessServices(struct soap*, uddi2__businessServices **, const char*, const char*);
SOAP_FMAC3 uddi2__businessServices ** SOAP_FMAC4 soap_in_PointerTouddi2__businessServices(struct soap*, const char*, uddi2__businessServices **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__contacts
#define SOAP_TYPE_PointerTouddi2__contacts (116)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__contacts(struct soap*, uddi2__contacts *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__contacts(struct soap*, uddi2__contacts *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__contacts(struct soap*, const char *, int, uddi2__contacts *const*, const char *);
SOAP_FMAC3 uddi2__contacts ** SOAP_FMAC4 soap_get_PointerTouddi2__contacts(struct soap*, uddi2__contacts **, const char*, const char*);
SOAP_FMAC3 uddi2__contacts ** SOAP_FMAC4 soap_in_PointerTouddi2__contacts(struct soap*, const char*, uddi2__contacts **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__name
#define SOAP_TYPE_PointerTouddi2__name (114)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__name(struct soap*, uddi2__name *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__name(struct soap*, uddi2__name *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__name(struct soap*, const char *, int, uddi2__name *const*, const char *);
SOAP_FMAC3 uddi2__name ** SOAP_FMAC4 soap_get_PointerTouddi2__name(struct soap*, uddi2__name **, const char*, const char*);
SOAP_FMAC3 uddi2__name ** SOAP_FMAC4 soap_in_PointerTouddi2__name(struct soap*, const char*, uddi2__name **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__discoveryURLs
#define SOAP_TYPE_PointerTouddi2__discoveryURLs (113)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__discoveryURLs(struct soap*, uddi2__discoveryURLs *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__discoveryURLs(struct soap*, uddi2__discoveryURLs *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__discoveryURLs(struct soap*, const char *, int, uddi2__discoveryURLs *const*, const char *);
SOAP_FMAC3 uddi2__discoveryURLs ** SOAP_FMAC4 soap_get_PointerTouddi2__discoveryURLs(struct soap*, uddi2__discoveryURLs **, const char*, const char*);
SOAP_FMAC3 uddi2__discoveryURLs ** SOAP_FMAC4 soap_in_PointerTouddi2__discoveryURLs(struct soap*, const char*, uddi2__discoveryURLs **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__bindingTemplate
#define SOAP_TYPE_PointerTouddi2__bindingTemplate (111)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__bindingTemplate(struct soap*, uddi2__bindingTemplate *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__bindingTemplate(struct soap*, uddi2__bindingTemplate *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__bindingTemplate(struct soap*, const char *, int, uddi2__bindingTemplate *const*, const char *);
SOAP_FMAC3 uddi2__bindingTemplate ** SOAP_FMAC4 soap_get_PointerTouddi2__bindingTemplate(struct soap*, uddi2__bindingTemplate **, const char*, const char*);
SOAP_FMAC3 uddi2__bindingTemplate ** SOAP_FMAC4 soap_in_PointerTouddi2__bindingTemplate(struct soap*, const char*, uddi2__bindingTemplate **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__hostingRedirector
#define SOAP_TYPE_PointerTouddi2__hostingRedirector (110)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__hostingRedirector(struct soap*, uddi2__hostingRedirector *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__hostingRedirector(struct soap*, uddi2__hostingRedirector *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__hostingRedirector(struct soap*, const char *, int, uddi2__hostingRedirector *const*, const char *);
SOAP_FMAC3 uddi2__hostingRedirector ** SOAP_FMAC4 soap_get_PointerTouddi2__hostingRedirector(struct soap*, uddi2__hostingRedirector **, const char*, const char*);
SOAP_FMAC3 uddi2__hostingRedirector ** SOAP_FMAC4 soap_in_PointerTouddi2__hostingRedirector(struct soap*, const char*, uddi2__hostingRedirector **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__accessPoint
#define SOAP_TYPE_PointerTouddi2__accessPoint (109)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__accessPoint(struct soap*, uddi2__accessPoint *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__accessPoint(struct soap*, uddi2__accessPoint *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__accessPoint(struct soap*, const char *, int, uddi2__accessPoint *const*, const char *);
SOAP_FMAC3 uddi2__accessPoint ** SOAP_FMAC4 soap_get_PointerTouddi2__accessPoint(struct soap*, uddi2__accessPoint **, const char*, const char*);
SOAP_FMAC3 uddi2__accessPoint ** SOAP_FMAC4 soap_in_PointerTouddi2__accessPoint(struct soap*, const char*, uddi2__accessPoint **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__tModelInstanceDetails
#define SOAP_TYPE_PointerTouddi2__tModelInstanceDetails (108)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__tModelInstanceDetails(struct soap*, uddi2__tModelInstanceDetails *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__tModelInstanceDetails(struct soap*, uddi2__tModelInstanceDetails *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__tModelInstanceDetails(struct soap*, const char *, int, uddi2__tModelInstanceDetails *const*, const char *);
SOAP_FMAC3 uddi2__tModelInstanceDetails ** SOAP_FMAC4 soap_get_PointerTouddi2__tModelInstanceDetails(struct soap*, uddi2__tModelInstanceDetails **, const char*, const char*);
SOAP_FMAC3 uddi2__tModelInstanceDetails ** SOAP_FMAC4 soap_in_PointerTouddi2__tModelInstanceDetails(struct soap*, const char*, uddi2__tModelInstanceDetails **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__description
#define SOAP_TYPE_PointerTouddi2__description (106)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__description(struct soap*, uddi2__description *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__description(struct soap*, uddi2__description *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__description(struct soap*, const char *, int, uddi2__description *const*, const char *);
SOAP_FMAC3 uddi2__description ** SOAP_FMAC4 soap_get_PointerTouddi2__description(struct soap*, uddi2__description **, const char*, const char*);
SOAP_FMAC3 uddi2__description ** SOAP_FMAC4 soap_in_PointerTouddi2__description(struct soap*, const char*, uddi2__description **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__keysOwned
#define SOAP_TYPE_PointerTouddi2__keysOwned (105)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__keysOwned(struct soap*, uddi2__keysOwned *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__keysOwned(struct soap*, uddi2__keysOwned *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__keysOwned(struct soap*, const char *, int, uddi2__keysOwned *const*, const char *);
SOAP_FMAC3 uddi2__keysOwned ** SOAP_FMAC4 soap_get_PointerTouddi2__keysOwned(struct soap*, uddi2__keysOwned **, const char*, const char*);
SOAP_FMAC3 uddi2__keysOwned ** SOAP_FMAC4 soap_in_PointerTouddi2__keysOwned(struct soap*, const char*, uddi2__keysOwned **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__keyedReference
#define SOAP_TYPE_PointerTouddi2__keyedReference (104)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__keyedReference(struct soap*, uddi2__keyedReference *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__keyedReference(struct soap*, uddi2__keyedReference *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__keyedReference(struct soap*, const char *, int, uddi2__keyedReference *const*, const char *);
SOAP_FMAC3 uddi2__keyedReference ** SOAP_FMAC4 soap_get_PointerTouddi2__keyedReference(struct soap*, uddi2__keyedReference **, const char*, const char*);
SOAP_FMAC3 uddi2__keyedReference ** SOAP_FMAC4 soap_in_PointerTouddi2__keyedReference(struct soap*, const char*, uddi2__keyedReference **, const char*);

#ifndef SOAP_TYPE_PointerTouddi2__addressLine
#define SOAP_TYPE_PointerTouddi2__addressLine (100)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_PointerTouddi2__addressLine(struct soap*, uddi2__addressLine *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_PointerTouddi2__addressLine(struct soap*, uddi2__addressLine *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_PointerTouddi2__addressLine(struct soap*, const char *, int, uddi2__addressLine *const*, const char *);
SOAP_FMAC3 uddi2__addressLine ** SOAP_FMAC4 soap_get_PointerTouddi2__addressLine(struct soap*, uddi2__addressLine **, const char*, const char*);
SOAP_FMAC3 uddi2__addressLine ** SOAP_FMAC4 soap_in_PointerTouddi2__addressLine(struct soap*, const char*, uddi2__addressLine **, const char*);

#ifndef SOAP_TYPE_uddi2__tModelKey
#define SOAP_TYPE_uddi2__tModelKey (95)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_uddi2__tModelKey(struct soap*, char **);
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_uddi2__tModelKey(struct soap*, char *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_uddi2__tModelKey(struct soap*, char *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__tModelKey(struct soap*, const char*, int, char*const*, const char*);
SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_uddi2__tModelKey(struct soap*, char **, const char*, const char*);
SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_uddi2__tModelKey(struct soap*, const char*, char **, const char*);

#ifndef SOAP_TYPE_uddi2__serviceKey
#define SOAP_TYPE_uddi2__serviceKey (94)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_uddi2__serviceKey(struct soap*, char **);
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_uddi2__serviceKey(struct soap*, char *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_uddi2__serviceKey(struct soap*, char *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__serviceKey(struct soap*, const char*, int, char*const*, const char*);
SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_uddi2__serviceKey(struct soap*, char **, const char*, const char*);
SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_uddi2__serviceKey(struct soap*, const char*, char **, const char*);

#ifndef SOAP_TYPE_uddi2__businessKey
#define SOAP_TYPE_uddi2__businessKey (93)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_uddi2__businessKey(struct soap*, char **);
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_uddi2__businessKey(struct soap*, char *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_uddi2__businessKey(struct soap*, char *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__businessKey(struct soap*, const char*, int, char*const*, const char*);
SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_uddi2__businessKey(struct soap*, char **, const char*, const char*);
SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_uddi2__businessKey(struct soap*, const char*, char **, const char*);

#ifndef SOAP_TYPE_uddi2__bindingKey
#define SOAP_TYPE_uddi2__bindingKey (92)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_uddi2__bindingKey(struct soap*, char **);
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_uddi2__bindingKey(struct soap*, char *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_uddi2__bindingKey(struct soap*, char *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_uddi2__bindingKey(struct soap*, const char*, int, char*const*, const char*);
SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_uddi2__bindingKey(struct soap*, char **, const char*, const char*);
SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_uddi2__bindingKey(struct soap*, const char*, char **, const char*);

#ifndef SOAP_TYPE_xml__lang
#define SOAP_TYPE_xml__lang (8)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_xml__lang(struct soap*, char **);
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_xml__lang(struct soap*, char *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_xml__lang(struct soap*, char *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_xml__lang(struct soap*, const char*, int, char*const*, const char*);
SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xml__lang(struct soap*, char **, const char*, const char*);
SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xml__lang(struct soap*, const char*, char **, const char*);

#ifndef SOAP_TYPE_xsd__NMTOKEN
#define SOAP_TYPE_xsd__NMTOKEN (7)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_xsd__NMTOKEN(struct soap*, char **);
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_xsd__NMTOKEN(struct soap*, char *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_xsd__NMTOKEN(struct soap*, char *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_xsd__NMTOKEN(struct soap*, const char*, int, char*const*, const char*);
SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_xsd__NMTOKEN(struct soap*, char **, const char*, const char*);
SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_xsd__NMTOKEN(struct soap*, const char*, char **, const char*);

#ifndef SOAP_TYPE__QName
#define SOAP_TYPE__QName (5)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default__QName(struct soap*, char **);
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize__QName(struct soap*, char *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put__QName(struct soap*, char *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out__QName(struct soap*, const char*, int, char*const*, const char*);
SOAP_FMAC3 char ** SOAP_FMAC4 soap_get__QName(struct soap*, char **, const char*, const char*);
SOAP_FMAC3 char * * SOAP_FMAC4 soap_in__QName(struct soap*, const char*, char **, const char*);

#ifndef SOAP_TYPE_string
#define SOAP_TYPE_string (3)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_default_string(struct soap*, char **);
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_string(struct soap*, char *const*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_string(struct soap*, char *const*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_string(struct soap*, const char*, int, char*const*, const char*);
SOAP_FMAC3 char ** SOAP_FMAC4 soap_get_string(struct soap*, char **, const char*, const char*);
SOAP_FMAC3 char * * SOAP_FMAC4 soap_in_string(struct soap*, const char*, char **, const char*);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__businessEntityExt
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__businessEntityExt (302)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__businessEntityExt(struct soap*, const std::vector<uddi2__businessEntityExt * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__businessEntityExt(struct soap*, std::vector<uddi2__businessEntityExt * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__businessEntityExt(struct soap*, const std::vector<uddi2__businessEntityExt * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__businessEntityExt(struct soap*, const char*, int, const std::vector<uddi2__businessEntityExt * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__businessEntityExt * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__businessEntityExt(struct soap*, std::vector<uddi2__businessEntityExt * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__businessEntityExt * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__businessEntityExt(struct soap*, const char*, std::vector<uddi2__businessEntityExt * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__businessEntityExt * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__businessEntityExt(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__businessEntityExt(struct soap*, std::vector<uddi2__businessEntityExt * >*);
SOAP_FMAC5 std::vector<uddi2__businessEntityExt * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__businessEntityExt(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__businessEntityExt(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__assertionStatusItem
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__assertionStatusItem (300)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__assertionStatusItem(struct soap*, const std::vector<uddi2__assertionStatusItem * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__assertionStatusItem(struct soap*, std::vector<uddi2__assertionStatusItem * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__assertionStatusItem(struct soap*, const std::vector<uddi2__assertionStatusItem * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__assertionStatusItem(struct soap*, const char*, int, const std::vector<uddi2__assertionStatusItem * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__assertionStatusItem * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__assertionStatusItem(struct soap*, std::vector<uddi2__assertionStatusItem * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__assertionStatusItem * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__assertionStatusItem(struct soap*, const char*, std::vector<uddi2__assertionStatusItem * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__assertionStatusItem * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__assertionStatusItem(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__assertionStatusItem(struct soap*, std::vector<uddi2__assertionStatusItem * >*);
SOAP_FMAC5 std::vector<uddi2__assertionStatusItem * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__assertionStatusItem(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__assertionStatusItem(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__tModel
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__tModel (288)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__tModel(struct soap*, const std::vector<uddi2__tModel * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__tModel(struct soap*, std::vector<uddi2__tModel * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__tModel(struct soap*, const std::vector<uddi2__tModel * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__tModel(struct soap*, const char*, int, const std::vector<uddi2__tModel * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__tModel * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__tModel(struct soap*, std::vector<uddi2__tModel * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__tModel * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__tModel(struct soap*, const char*, std::vector<uddi2__tModel * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__tModel * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__tModel(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__tModel(struct soap*, std::vector<uddi2__tModel * >*);
SOAP_FMAC5 std::vector<uddi2__tModel * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__tModel(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__tModel(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__businessEntity
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__businessEntity (272)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__businessEntity(struct soap*, const std::vector<uddi2__businessEntity * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__businessEntity(struct soap*, std::vector<uddi2__businessEntity * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__businessEntity(struct soap*, const std::vector<uddi2__businessEntity * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__businessEntity(struct soap*, const char*, int, const std::vector<uddi2__businessEntity * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__businessEntity * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__businessEntity(struct soap*, std::vector<uddi2__businessEntity * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__businessEntity * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__businessEntity(struct soap*, const char*, std::vector<uddi2__businessEntity * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__businessEntity * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__businessEntity(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__businessEntity(struct soap*, std::vector<uddi2__businessEntity * >*);
SOAP_FMAC5 std::vector<uddi2__businessEntity * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__businessEntity(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__businessEntity(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfuddi2__serviceKey
#define SOAP_TYPE_std__vectorTemplateOfuddi2__serviceKey (184)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfuddi2__serviceKey(struct soap*, const std::vector<char * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfuddi2__serviceKey(struct soap*, std::vector<char * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfuddi2__serviceKey(struct soap*, const std::vector<char * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfuddi2__serviceKey(struct soap*, const char*, int, const std::vector<char * >*, const char*);
SOAP_FMAC3 std::vector<char * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfuddi2__serviceKey(struct soap*, std::vector<char * >*, const char*, const char*);
SOAP_FMAC3 std::vector<char * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfuddi2__serviceKey(struct soap*, const char*, std::vector<char * >*, const char*);

SOAP_FMAC5 std::vector<char * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfuddi2__serviceKey(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfuddi2__serviceKey(struct soap*, std::vector<char * >*);
SOAP_FMAC5 std::vector<char * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfuddi2__serviceKey(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfuddi2__serviceKey(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfuddi2__businessKey
#define SOAP_TYPE_std__vectorTemplateOfuddi2__businessKey (176)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfuddi2__businessKey(struct soap*, const std::vector<char * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfuddi2__businessKey(struct soap*, std::vector<char * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfuddi2__businessKey(struct soap*, const std::vector<char * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfuddi2__businessKey(struct soap*, const char*, int, const std::vector<char * >*, const char*);
SOAP_FMAC3 std::vector<char * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfuddi2__businessKey(struct soap*, std::vector<char * >*, const char*, const char*);
SOAP_FMAC3 std::vector<char * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfuddi2__businessKey(struct soap*, const char*, std::vector<char * >*, const char*);

SOAP_FMAC5 std::vector<char * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfuddi2__businessKey(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfuddi2__businessKey(struct soap*, std::vector<char * >*);
SOAP_FMAC5 std::vector<char * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfuddi2__businessKey(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfuddi2__businessKey(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfuddi2__bindingKey
#define SOAP_TYPE_std__vectorTemplateOfuddi2__bindingKey (170)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfuddi2__bindingKey(struct soap*, const std::vector<char * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfuddi2__bindingKey(struct soap*, std::vector<char * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfuddi2__bindingKey(struct soap*, const std::vector<char * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfuddi2__bindingKey(struct soap*, const char*, int, const std::vector<char * >*, const char*);
SOAP_FMAC3 std::vector<char * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfuddi2__bindingKey(struct soap*, std::vector<char * >*, const char*, const char*);
SOAP_FMAC3 std::vector<char * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfuddi2__bindingKey(struct soap*, const char*, std::vector<char * >*, const char*);

SOAP_FMAC5 std::vector<char * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfuddi2__bindingKey(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfuddi2__bindingKey(struct soap*, std::vector<char * >*);
SOAP_FMAC5 std::vector<char * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfuddi2__bindingKey(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfuddi2__bindingKey(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__publisherAssertion
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__publisherAssertion (158)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__publisherAssertion(struct soap*, const std::vector<uddi2__publisherAssertion * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__publisherAssertion(struct soap*, std::vector<uddi2__publisherAssertion * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__publisherAssertion(struct soap*, const std::vector<uddi2__publisherAssertion * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__publisherAssertion(struct soap*, const char*, int, const std::vector<uddi2__publisherAssertion * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__publisherAssertion * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__publisherAssertion(struct soap*, std::vector<uddi2__publisherAssertion * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__publisherAssertion * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__publisherAssertion(struct soap*, const char*, std::vector<uddi2__publisherAssertion * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__publisherAssertion * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__publisherAssertion(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__publisherAssertion(struct soap*, std::vector<uddi2__publisherAssertion * >*);
SOAP_FMAC5 std::vector<uddi2__publisherAssertion * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__publisherAssertion(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__publisherAssertion(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__tModelInstanceInfo
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__tModelInstanceInfo (155)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__tModelInstanceInfo(struct soap*, const std::vector<uddi2__tModelInstanceInfo * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__tModelInstanceInfo(struct soap*, std::vector<uddi2__tModelInstanceInfo * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__tModelInstanceInfo(struct soap*, const std::vector<uddi2__tModelInstanceInfo * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__tModelInstanceInfo(struct soap*, const char*, int, const std::vector<uddi2__tModelInstanceInfo * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__tModelInstanceInfo * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__tModelInstanceInfo(struct soap*, std::vector<uddi2__tModelInstanceInfo * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__tModelInstanceInfo * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__tModelInstanceInfo(struct soap*, const char*, std::vector<uddi2__tModelInstanceInfo * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__tModelInstanceInfo * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__tModelInstanceInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__tModelInstanceInfo(struct soap*, std::vector<uddi2__tModelInstanceInfo * >*);
SOAP_FMAC5 std::vector<uddi2__tModelInstanceInfo * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__tModelInstanceInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__tModelInstanceInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__tModelInfo
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__tModelInfo (153)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__tModelInfo(struct soap*, const std::vector<uddi2__tModelInfo * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__tModelInfo(struct soap*, std::vector<uddi2__tModelInfo * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__tModelInfo(struct soap*, const std::vector<uddi2__tModelInfo * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__tModelInfo(struct soap*, const char*, int, const std::vector<uddi2__tModelInfo * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__tModelInfo * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__tModelInfo(struct soap*, std::vector<uddi2__tModelInfo * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__tModelInfo * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__tModelInfo(struct soap*, const char*, std::vector<uddi2__tModelInfo * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__tModelInfo * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__tModelInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__tModelInfo(struct soap*, std::vector<uddi2__tModelInfo * >*);
SOAP_FMAC5 std::vector<uddi2__tModelInfo * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__tModelInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__tModelInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfuddi2__tModelKey
#define SOAP_TYPE_std__vectorTemplateOfuddi2__tModelKey (151)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfuddi2__tModelKey(struct soap*, const std::vector<char * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfuddi2__tModelKey(struct soap*, std::vector<char * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfuddi2__tModelKey(struct soap*, const std::vector<char * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfuddi2__tModelKey(struct soap*, const char*, int, const std::vector<char * >*, const char*);
SOAP_FMAC3 std::vector<char * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfuddi2__tModelKey(struct soap*, std::vector<char * >*, const char*, const char*);
SOAP_FMAC3 std::vector<char * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfuddi2__tModelKey(struct soap*, const char*, std::vector<char * >*, const char*);

SOAP_FMAC5 std::vector<char * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfuddi2__tModelKey(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfuddi2__tModelKey(struct soap*, std::vector<char * >*);
SOAP_FMAC5 std::vector<char * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfuddi2__tModelKey(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfuddi2__tModelKey(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__serviceInfo
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__serviceInfo (150)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__serviceInfo(struct soap*, const std::vector<uddi2__serviceInfo * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__serviceInfo(struct soap*, std::vector<uddi2__serviceInfo * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__serviceInfo(struct soap*, const std::vector<uddi2__serviceInfo * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__serviceInfo(struct soap*, const char*, int, const std::vector<uddi2__serviceInfo * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__serviceInfo * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__serviceInfo(struct soap*, std::vector<uddi2__serviceInfo * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__serviceInfo * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__serviceInfo(struct soap*, const char*, std::vector<uddi2__serviceInfo * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__serviceInfo * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__serviceInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__serviceInfo(struct soap*, std::vector<uddi2__serviceInfo * >*);
SOAP_FMAC5 std::vector<uddi2__serviceInfo * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__serviceInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__serviceInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__relatedBusinessInfo
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__relatedBusinessInfo (146)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__relatedBusinessInfo(struct soap*, const std::vector<uddi2__relatedBusinessInfo * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__relatedBusinessInfo(struct soap*, std::vector<uddi2__relatedBusinessInfo * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__relatedBusinessInfo(struct soap*, const std::vector<uddi2__relatedBusinessInfo * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__relatedBusinessInfo(struct soap*, const char*, int, const std::vector<uddi2__relatedBusinessInfo * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__relatedBusinessInfo * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__relatedBusinessInfo(struct soap*, std::vector<uddi2__relatedBusinessInfo * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__relatedBusinessInfo * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__relatedBusinessInfo(struct soap*, const char*, std::vector<uddi2__relatedBusinessInfo * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__relatedBusinessInfo * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__relatedBusinessInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__relatedBusinessInfo(struct soap*, std::vector<uddi2__relatedBusinessInfo * >*);
SOAP_FMAC5 std::vector<uddi2__relatedBusinessInfo * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__relatedBusinessInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__relatedBusinessInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__sharedRelationships
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__sharedRelationships (144)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__sharedRelationships(struct soap*, const std::vector<uddi2__sharedRelationships * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__sharedRelationships(struct soap*, std::vector<uddi2__sharedRelationships * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__sharedRelationships(struct soap*, const std::vector<uddi2__sharedRelationships * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__sharedRelationships(struct soap*, const char*, int, const std::vector<uddi2__sharedRelationships * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__sharedRelationships * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__sharedRelationships(struct soap*, std::vector<uddi2__sharedRelationships * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__sharedRelationships * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__sharedRelationships(struct soap*, const char*, std::vector<uddi2__sharedRelationships * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__sharedRelationships * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__sharedRelationships(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__sharedRelationships(struct soap*, std::vector<uddi2__sharedRelationships * >*);
SOAP_FMAC5 std::vector<uddi2__sharedRelationships * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__sharedRelationships(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__sharedRelationships(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfstring
#define SOAP_TYPE_std__vectorTemplateOfstring (141)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfstring(struct soap*, const std::vector<char * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfstring(struct soap*, std::vector<char * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfstring(struct soap*, const std::vector<char * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfstring(struct soap*, const char*, int, const std::vector<char * >*, const char*);
SOAP_FMAC3 std::vector<char * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfstring(struct soap*, std::vector<char * >*, const char*, const char*);
SOAP_FMAC3 std::vector<char * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfstring(struct soap*, const char*, std::vector<char * >*, const char*);

SOAP_FMAC5 std::vector<char * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfstring(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfstring(struct soap*, std::vector<char * >*);
SOAP_FMAC5 std::vector<char * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfstring(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfstring(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__result
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__result (139)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__result(struct soap*, const std::vector<uddi2__result * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__result(struct soap*, std::vector<uddi2__result * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__result(struct soap*, const std::vector<uddi2__result * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__result(struct soap*, const char*, int, const std::vector<uddi2__result * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__result * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__result(struct soap*, std::vector<uddi2__result * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__result * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__result(struct soap*, const char*, std::vector<uddi2__result * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__result * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__result(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__result(struct soap*, std::vector<uddi2__result * >*);
SOAP_FMAC5 std::vector<uddi2__result * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__result(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__result(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__discoveryURL
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__discoveryURL (137)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__discoveryURL(struct soap*, const std::vector<uddi2__discoveryURL * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__discoveryURL(struct soap*, std::vector<uddi2__discoveryURL * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__discoveryURL(struct soap*, const std::vector<uddi2__discoveryURL * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__discoveryURL(struct soap*, const char*, int, const std::vector<uddi2__discoveryURL * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__discoveryURL * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__discoveryURL(struct soap*, std::vector<uddi2__discoveryURL * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__discoveryURL * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__discoveryURL(struct soap*, const char*, std::vector<uddi2__discoveryURL * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__discoveryURL * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__discoveryURL(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__discoveryURL(struct soap*, std::vector<uddi2__discoveryURL * >*);
SOAP_FMAC5 std::vector<uddi2__discoveryURL * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__discoveryURL(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__discoveryURL(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__contact
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__contact (135)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__contact(struct soap*, const std::vector<uddi2__contact * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__contact(struct soap*, std::vector<uddi2__contact * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__contact(struct soap*, const std::vector<uddi2__contact * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__contact(struct soap*, const char*, int, const std::vector<uddi2__contact * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__contact * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__contact(struct soap*, std::vector<uddi2__contact * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__contact * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__contact(struct soap*, const char*, std::vector<uddi2__contact * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__contact * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__contact(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__contact(struct soap*, std::vector<uddi2__contact * >*);
SOAP_FMAC5 std::vector<uddi2__contact * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__contact(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__contact(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__address
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__address (133)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__address(struct soap*, const std::vector<uddi2__address * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__address(struct soap*, std::vector<uddi2__address * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__address(struct soap*, const std::vector<uddi2__address * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__address(struct soap*, const char*, int, const std::vector<uddi2__address * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__address * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__address(struct soap*, std::vector<uddi2__address * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__address * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__address(struct soap*, const char*, std::vector<uddi2__address * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__address * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__address(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__address(struct soap*, std::vector<uddi2__address * >*);
SOAP_FMAC5 std::vector<uddi2__address * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__address(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__address(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__email
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__email (131)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__email(struct soap*, const std::vector<uddi2__email * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__email(struct soap*, std::vector<uddi2__email * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__email(struct soap*, const std::vector<uddi2__email * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__email(struct soap*, const char*, int, const std::vector<uddi2__email * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__email * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__email(struct soap*, std::vector<uddi2__email * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__email * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__email(struct soap*, const char*, std::vector<uddi2__email * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__email * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__email(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__email(struct soap*, std::vector<uddi2__email * >*);
SOAP_FMAC5 std::vector<uddi2__email * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__email(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__email(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__phone
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__phone (129)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__phone(struct soap*, const std::vector<uddi2__phone * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__phone(struct soap*, std::vector<uddi2__phone * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__phone(struct soap*, const std::vector<uddi2__phone * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__phone(struct soap*, const char*, int, const std::vector<uddi2__phone * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__phone * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__phone(struct soap*, std::vector<uddi2__phone * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__phone * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__phone(struct soap*, const char*, std::vector<uddi2__phone * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__phone * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__phone(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__phone(struct soap*, std::vector<uddi2__phone * >*);
SOAP_FMAC5 std::vector<uddi2__phone * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__phone(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__phone(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__keyedReference
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__keyedReference (127)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__keyedReference(struct soap*, const std::vector<uddi2__keyedReference * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__keyedReference(struct soap*, std::vector<uddi2__keyedReference * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__keyedReference(struct soap*, const std::vector<uddi2__keyedReference * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__keyedReference(struct soap*, const char*, int, const std::vector<uddi2__keyedReference * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__keyedReference * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__keyedReference(struct soap*, std::vector<uddi2__keyedReference * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__keyedReference * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__keyedReference(struct soap*, const char*, std::vector<uddi2__keyedReference * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__keyedReference * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__keyedReference(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__keyedReference(struct soap*, std::vector<uddi2__keyedReference * >*);
SOAP_FMAC5 std::vector<uddi2__keyedReference * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__keyedReference(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__keyedReference(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__businessService
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__businessService (126)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__businessService(struct soap*, const std::vector<uddi2__businessService * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__businessService(struct soap*, std::vector<uddi2__businessService * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__businessService(struct soap*, const std::vector<uddi2__businessService * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__businessService(struct soap*, const char*, int, const std::vector<uddi2__businessService * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__businessService * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__businessService(struct soap*, std::vector<uddi2__businessService * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__businessService * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__businessService(struct soap*, const char*, std::vector<uddi2__businessService * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__businessService * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__businessService(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__businessService(struct soap*, std::vector<uddi2__businessService * >*);
SOAP_FMAC5 std::vector<uddi2__businessService * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__businessService(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__businessService(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__businessInfo
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__businessInfo (123)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__businessInfo(struct soap*, const std::vector<uddi2__businessInfo * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__businessInfo(struct soap*, std::vector<uddi2__businessInfo * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__businessInfo(struct soap*, const std::vector<uddi2__businessInfo * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__businessInfo(struct soap*, const char*, int, const std::vector<uddi2__businessInfo * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__businessInfo * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__businessInfo(struct soap*, std::vector<uddi2__businessInfo * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__businessInfo * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__businessInfo(struct soap*, const char*, std::vector<uddi2__businessInfo * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__businessInfo * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__businessInfo(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__businessInfo(struct soap*, std::vector<uddi2__businessInfo * >*);
SOAP_FMAC5 std::vector<uddi2__businessInfo * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__businessInfo(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__businessInfo(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__name
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__name (115)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__name(struct soap*, const std::vector<uddi2__name * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__name(struct soap*, std::vector<uddi2__name * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__name(struct soap*, const std::vector<uddi2__name * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__name(struct soap*, const char*, int, const std::vector<uddi2__name * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__name * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__name(struct soap*, std::vector<uddi2__name * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__name * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__name(struct soap*, const char*, std::vector<uddi2__name * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__name * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__name(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__name(struct soap*, std::vector<uddi2__name * >*);
SOAP_FMAC5 std::vector<uddi2__name * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__name(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__name(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__bindingTemplate
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__bindingTemplate (112)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__bindingTemplate(struct soap*, const std::vector<uddi2__bindingTemplate * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__bindingTemplate(struct soap*, std::vector<uddi2__bindingTemplate * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__bindingTemplate(struct soap*, const std::vector<uddi2__bindingTemplate * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__bindingTemplate(struct soap*, const char*, int, const std::vector<uddi2__bindingTemplate * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__bindingTemplate * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__bindingTemplate(struct soap*, std::vector<uddi2__bindingTemplate * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__bindingTemplate * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__bindingTemplate(struct soap*, const char*, std::vector<uddi2__bindingTemplate * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__bindingTemplate * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__bindingTemplate(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__bindingTemplate(struct soap*, std::vector<uddi2__bindingTemplate * >*);
SOAP_FMAC5 std::vector<uddi2__bindingTemplate * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__bindingTemplate(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__bindingTemplate(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__description
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__description (107)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__description(struct soap*, const std::vector<uddi2__description * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__description(struct soap*, std::vector<uddi2__description * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__description(struct soap*, const std::vector<uddi2__description * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__description(struct soap*, const char*, int, const std::vector<uddi2__description * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__description * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__description(struct soap*, std::vector<uddi2__description * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__description * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__description(struct soap*, const char*, std::vector<uddi2__description * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__description * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__description(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__description(struct soap*, std::vector<uddi2__description * >*);
SOAP_FMAC5 std::vector<uddi2__description * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__description(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__description(struct soap*, int, int, void*, const void*, size_t);

#ifndef SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__addressLine
#define SOAP_TYPE_std__vectorTemplateOfPointerTouddi2__addressLine (101)
#endif
SOAP_FMAC3 void SOAP_FMAC4 soap_serialize_std__vectorTemplateOfPointerTouddi2__addressLine(struct soap*, const std::vector<uddi2__addressLine * >*);
SOAP_FMAC3 void SOAP_FMAC4 soap_default_std__vectorTemplateOfPointerTouddi2__addressLine(struct soap*, std::vector<uddi2__addressLine * >*);
SOAP_FMAC3 int SOAP_FMAC4 soap_put_std__vectorTemplateOfPointerTouddi2__addressLine(struct soap*, const std::vector<uddi2__addressLine * >*, const char*, const char*);
SOAP_FMAC3 int SOAP_FMAC4 soap_out_std__vectorTemplateOfPointerTouddi2__addressLine(struct soap*, const char*, int, const std::vector<uddi2__addressLine * >*, const char*);
SOAP_FMAC3 std::vector<uddi2__addressLine * >* SOAP_FMAC4 soap_get_std__vectorTemplateOfPointerTouddi2__addressLine(struct soap*, std::vector<uddi2__addressLine * >*, const char*, const char*);
SOAP_FMAC3 std::vector<uddi2__addressLine * >* SOAP_FMAC4 soap_in_std__vectorTemplateOfPointerTouddi2__addressLine(struct soap*, const char*, std::vector<uddi2__addressLine * >*, const char*);

SOAP_FMAC5 std::vector<uddi2__addressLine * > * SOAP_FMAC6 soap_new_std__vectorTemplateOfPointerTouddi2__addressLine(struct soap*, int);

SOAP_FMAC5 void SOAP_FMAC6 soap_delete_std__vectorTemplateOfPointerTouddi2__addressLine(struct soap*, std::vector<uddi2__addressLine * >*);
SOAP_FMAC5 std::vector<uddi2__addressLine * > * SOAP_FMAC6 soap_instantiate_std__vectorTemplateOfPointerTouddi2__addressLine(struct soap*, int, const char*, const char*, size_t*);
SOAP_FMAC5 void SOAP_FMAC6 soap_copy_std__vectorTemplateOfPointerTouddi2__addressLine(struct soap*, int, int, void*, const void*, size_t);

SOAP_END_NAMESPACE(uddi)

#endif

/* End of uddiH.h */
