/*
 * Portions of this file Copyright 1999-2005 University of Chicago
 * Portions of this file Copyright 1999-2005 The University of Southern California.
 *
 * This file or a portion of this file is licensed under the
 * terms of the Globus Toolkit Public License, found at
 * http://www.globus.org/toolkit/download/license.html.
 * If you redistribute this file, with or without
 * modifications, you must include this notice in the file.
 */


/*
 * This file is automatically generated by the Globus WSDLtoC converter
 */

#ifndef _WSTRANSFER_RFTFAULTRESOURCEPROPERTYTYPE_CHOICE_H_
#define _WSTRANSFER_RFTFAULTRESOURCEPROPERTYTYPE_CHOICE_H_

#include "globus_common.h"

#ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
EXTERN_C_BEGIN
#endif /* GLOBUS_DONT_DOCUMENT_INTERNAL */

enum wstransfer_RFTFaultResourcePropertyType_e
{
    wstransfer_RFTFaultResourcePropertyType_undefined,
    wstransfer_RFTFaultResourcePropertyType_rftRepeatedlyStartedFaultType,
    wstransfer_RFTFaultResourcePropertyType_delegationEPRMissingFaultType,
    wstransfer_RFTFaultResourcePropertyType_rftDatabaseFaultType,
    wstransfer_RFTFaultResourcePropertyType_rftAuthenticationFaultType,
    wstransfer_RFTFaultResourcePropertyType_rftAuthorizationFaultType,
    wstransfer_RFTFaultResourcePropertyType_rftTransferFaultType,
    wstransfer_RFTFaultResourcePropertyType_transferTransientFaultType

};

/**
 * @defgroup wstransfer_RFTFaultResourcePropertyType_choice Complex choice type: wstransfer_RFTFaultResourcePropertyType
 * @ingroup wstransfer_RFTFaultResourcePropertyType
 */

/**
 * Enumeration of the types of values which the wstransfer_RFTFaultResourcePropertyType_choice
 * structure may take on.
 * @ingroup wstransfer_RFTFaultResourcePropertyType_choice
 */
typedef enum wstransfer_RFTFaultResourcePropertyType_e wstransfer_RFTFaultResourcePropertyType_enum;
/**
 * Union of the values which the wstransfer_RFTFaultResourcePropertyType_choice structure
 * contains
 * @ingroup wstransfer_RFTFaultResourcePropertyType_choice
 */
typedef union wstransfer_RFTFaultResourcePropertyType_u wstransfer_RFTFaultResourcePropertyType_union;
/**
 * The wstransfer_RFTFaultResourcePropertyType complex type, which represents the various values
 * possible by the choice used by the
 * {http://www.globus.org/namespaces/2004/10/rft}choice 34 element.
 * @ingroup wstransfer_RFTFaultResourcePropertyType_choice
 */
typedef struct wstransfer_RFTFaultResourcePropertyType_choice_s wstransfer_RFTFaultResourcePropertyType_choice;
/**
 * The wstransfer_RFTFaultResourcePropertyType_o complex type, which represents an optional instance
 * of the choice used by the
 * {http://www.globus.org/namespaces/2004/10/rft}choice 34 element.
 * @ingroup wstransfer_RFTFaultResourcePropertyType
 */
typedef wstransfer_RFTFaultResourcePropertyType_choice * wstransfer_RFTFaultResourcePropertyType_choice_o;

typedef struct wstransfer_RFTFaultResourcePropertyType_choice_array_s
{
    wstransfer_RFTFaultResourcePropertyType_choice * elements;
    int                                 length;
} wstransfer_RFTFaultResourcePropertyType_choice_array;

#define WSTRANSFER_RFTFAULTRESOURCEPROPERTYTYPE_NS "http://www.globus.org/namespaces/2004/10/rft"
#define WSTRANSFER_RFTFAULTRESOURCEPROPERTYTYPE_LOCAL "RFTFaultResourcePropertyType"

extern xsd_QName wstransfer_RFTFaultResourcePropertyType_choice_qname;
extern struct globus_xsd_type_info_s wstransfer_RFTFaultResourcePropertyType_choice_info;
extern struct globus_xsd_type_info_s wstransfer_RFTFaultResourcePropertyType_choice_contents_info;
extern struct globus_xsd_type_info_s wstransfer_RFTFaultResourcePropertyType_choice_array_info;


#include "wstransfer_RepeatedlyStartedFaultType.h"
#include "wstransfer_DelegationEPRMissingFaultType.h"
#include "wstransfer_RFTDatabaseFaultType.h"
#include "wstransfer_RFTAuthenticationFaultType.h"
#include "wstransfer_RFTAuthorizationFaultType.h"
#include "wstransfer_TransferFaultType.h"
#include "wstransfer_TransferTransientFaultType.h"

union wstransfer_RFTFaultResourcePropertyType_u
{
    /** wstransfer_RepeatedlyStartedFaultType subelement */
    wstransfer_RepeatedlyStartedFaultType rftRepeatedlyStartedFaultType;
    /** wstransfer_DelegationEPRMissingFaultType subelement */
    wstransfer_DelegationEPRMissingFaultType delegationEPRMissingFaultType;
    /** wstransfer_RFTDatabaseFaultType subelement */
    wstransfer_RFTDatabaseFaultType rftDatabaseFaultType;
    /** wstransfer_RFTAuthenticationFaultType subelement */
    wstransfer_RFTAuthenticationFaultType rftAuthenticationFaultType;
    /** wstransfer_RFTAuthorizationFaultType subelement */
    wstransfer_RFTAuthorizationFaultType rftAuthorizationFaultType;
    /** wstransfer_TransferFaultType subelement */
    wstransfer_TransferFaultType rftTransferFaultType;
    /** wstransfer_TransferTransientFaultType subelement */
    wstransfer_TransferTransientFaultType transferTransientFaultType;

};

struct wstransfer_RFTFaultResourcePropertyType_choice_s
{
    wstransfer_RFTFaultResourcePropertyType_enum type;
    wstransfer_RFTFaultResourcePropertyType_union value;
};

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_init(
    wstransfer_RFTFaultResourcePropertyType_choice ** inst);

void
wstransfer_RFTFaultResourcePropertyType_choice_destroy(
    wstransfer_RFTFaultResourcePropertyType_choice * inst);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_copy(
    wstransfer_RFTFaultResourcePropertyType_choice ** dest,
    const wstransfer_RFTFaultResourcePropertyType_choice * src);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_init_contents(
    wstransfer_RFTFaultResourcePropertyType_choice * instance);

void
wstransfer_RFTFaultResourcePropertyType_choice_destroy_contents(
    wstransfer_RFTFaultResourcePropertyType_choice * inst);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_copy_contents(
    wstransfer_RFTFaultResourcePropertyType_choice * dest,
    const wstransfer_RFTFaultResourcePropertyType_choice * src);
    
globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_array_init(
    wstransfer_RFTFaultResourcePropertyType_choice_array ** inst);

void
wstransfer_RFTFaultResourcePropertyType_choice_array_destroy(
    wstransfer_RFTFaultResourcePropertyType_choice_array * inst);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_array_copy(
    wstransfer_RFTFaultResourcePropertyType_choice_array ** dest,
    const wstransfer_RFTFaultResourcePropertyType_choice_array * src);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_array_init_contents(
    wstransfer_RFTFaultResourcePropertyType_choice_array * inst);

void
wstransfer_RFTFaultResourcePropertyType_choice_array_destroy_contents(
    wstransfer_RFTFaultResourcePropertyType_choice_array * inst);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_array_copy_contents(
    wstransfer_RFTFaultResourcePropertyType_choice_array * dest,
    const wstransfer_RFTFaultResourcePropertyType_choice_array * src);

wstransfer_RFTFaultResourcePropertyType_choice *
wstransfer_RFTFaultResourcePropertyType_choice_array_push(
    wstransfer_RFTFaultResourcePropertyType_choice_array * array);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_serialize(
    xsd_QName *                         element_name,
    wstransfer_RFTFaultResourcePropertyType_choice * val,
    globus_soap_message_handle_t        message_handle,
    globus_xsd_element_options_t        options);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_serialize_contents(
    xsd_QName *                         element_name,
    wstransfer_RFTFaultResourcePropertyType_choice * val,
    globus_soap_message_handle_t        message_handle,
    globus_xsd_element_options_t        options);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_deserialize(
    xsd_QName *                         element_name,
    wstransfer_RFTFaultResourcePropertyType_choice * val,
    globus_soap_message_handle_t        message_handle,
    globus_xsd_element_options_t        options);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_deserialize_contents(
    xsd_QName *                         element_name,
    wstransfer_RFTFaultResourcePropertyType_choice * val,
    globus_soap_message_handle_t        message_handle,
    globus_xsd_element_options_t        options);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_deserialize_pointer(
    xsd_QName *                         element_name,
    wstransfer_RFTFaultResourcePropertyType_choice ** instance,
    globus_soap_message_handle_t        message_handle,
    globus_xsd_element_options_t        options);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_array_serialize(
    xsd_QName *                         element,
    wstransfer_RFTFaultResourcePropertyType_choice_array * array_instance,
    globus_soap_message_handle_t        message_handle,
    globus_xsd_element_options_t        options);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_array_deserialize(
    xsd_QName *                         element,
    wstransfer_RFTFaultResourcePropertyType_choice_array * array_instance,
    globus_soap_message_handle_t        message_handle,
    globus_xsd_element_options_t        options);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_init_wrapper(
    void **                             object);
    
void
wstransfer_RFTFaultResourcePropertyType_choice_destroy_wrapper(
    void *                              object);
    
globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_copy_wrapper(
    void **                             dest_obj,
    void *                              src_obj);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_init_contents_wrapper(
    void *                              object);
    
void
wstransfer_RFTFaultResourcePropertyType_choice_destroy_contents_wrapper(
    void *                              object);
    
globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_copy_contents_wrapper(
    void *                              dest_obj,
    void *                              src_obj);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_serialize_wrapper(
    xsd_QName *                         element_qname,
    void *                              instance,
    globus_soap_message_handle_t        message_handle,
    globus_xsd_element_options_t        options);
    
globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_serialize_contents_wrapper(
    xsd_QName *                         element_qname,
    void *                              instance,
    globus_soap_message_handle_t        message_handle,
    globus_xsd_element_options_t        options);
    
globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_deserialize_contents_wrapper(
    xsd_QName *                         element_qname,
    void **                             instance,
    globus_soap_message_handle_t        message_handle,
    globus_xsd_element_options_t        options);
    
globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_array_serialize_wrapper(
    xsd_QName *                         element,
    void *                              instance,
    globus_soap_message_handle_t        message,
    globus_xsd_element_options_t        options);
    
globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_array_deserialize_wrapper(
    xsd_QName *                         element_qname,
    void **                             inst,
    globus_soap_message_handle_t        message,
    globus_xsd_element_options_t        options);
    
globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_array_init_wrapper(
    void **                             arr);
    
void
wstransfer_RFTFaultResourcePropertyType_choice_array_destroy_wrapper(
    void *                              arr);
    
globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_array_copy_wrapper(
    void **                             dest_arr,
    void *                              src_arr);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_array_init_contents_wrapper(
    void *                              arr);

void
wstransfer_RFTFaultResourcePropertyType_choice_array_destroy_contents_wrapper(
    void *                              arr);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_array_copy_contents_wrapper(
    void *                              dest_arr,
    void *                              src_arr);

void *
wstransfer_RFTFaultResourcePropertyType_choice_array_push_wrapper(
    void * array);

globus_result_t
wstransfer_RFTFaultResourcePropertyType_choice_deserialize_pointer_wrapper(
    xsd_QName *                         element_qname,
    void **                             ip,
    globus_soap_message_handle_t        message_handle,
    globus_xsd_element_options_t        options);

#ifndef GLOBUS_DONT_DOCUMENT_INTERNAL
EXTERN_C_END
#endif /* GLOBUS_DONT_DOCUMENT_INTERNAL */

#endif
