/*
 * 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.
 */

#ifndef _XSD_ANY_ATTRIBUTES_H_
#define _XSD_ANY_ATTRIBUTES_H_

#include "globus_common.h"

EXTERN_C_BEGIN

#include "xsd_QName.h"
#include "globus_soap_message.h"

typedef globus_hashtable_t              xsd_anyAttributes_t;

int
xsd_anyAttributes_size(
    xsd_anyAttributes_t                 attrs);

const char *
xsd_anyAttributes_lookup(
     xsd_anyAttributes_t                attrs,           
     xsd_QName *                        name);

int
xsd_anyAttributes_insert(
    xsd_anyAttributes_t                 attrs,
    xsd_QName *                         name,
    const char *                        value);

int
xsd_anyAttributes_remove(
    xsd_anyAttributes_t                 attrs,
    xsd_QName *                         name);

void
xsd_anyAttributes_destroy(
    xsd_anyAttributes_t                 attrs);

globus_result_t
xsd_anyAttributes_init(
    xsd_anyAttributes_t *               attrs);

globus_result_t
xsd_anyAttributes_copy(
    xsd_anyAttributes_t *               dest_attrs,
    xsd_anyAttributes_t                 src_attrs);

globus_list_t *
xsd_anyAttributes_lex_sort(
    xsd_anyAttributes_t                 attrs);

globus_result_t
xsd_anyAttributes_serialize(
    globus_soap_message_handle_t        message,
    xsd_anyAttributes_t                 attrs);

globus_result_t
xsd_anyAttributes_namespace_set(
    globus_soap_message_handle_t        message,
    xsd_anyAttributes_t                 attrs,
    globus_xsd_element_options_t *      options);

globus_result_t
xsd_anyAttributes_namespace_add(
    globus_soap_message_handle_t        message,
    xsd_anyAttributes_t                 attrs,
    globus_xsd_element_options_t *      options);

globus_result_t
xsd_anyAttributes_namespace_remove(
    globus_soap_message_handle_t        message,
    xsd_anyAttributes_t                 attrs,
    globus_xsd_element_options_t *      options);

globus_result_t
xsd_anyAttributes_serialize_lex_before(
    globus_soap_message_handle_t        message,
    globus_list_t **                    lex_sorted_keys,
    xsd_anyAttributes_t                 attrs,
    xsd_QName *                         comparable_value);

globus_result_t
xsd_anyAttributes_deserialize(
    globus_soap_message_handle_t        message,
    xsd_anyAttributes_t                 attrs);

EXTERN_C_END

#endif
