/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#ifndef AXIS2_WSDL_BINDING_OP_H
#define AXIS2_WSDL_BINDING_OP_H

/**
 * @file axis2_wsdl_binding_op.h
 * @brief axis2 wsdl binding_op interface. 
 */
#include <axis2_const.h>
#include <axis2_error.h>
#include <axis2_defines.h>
#include <axis2_env.h>
#include <axis2_allocator.h>
#include <axis2_string.h>
#include <axis2_hash.h>
#include <axis2_linked_list.h>
#include <axis2_qname.h>
#include <axis2_wsdl_extensible_component.h>
#include <axis2_wsdl_binding_msg_ref.h>
#include <axis2_wsdl_op.h>
#include <axis2_wsdl_binding_fault.h>

#ifdef __cplusplus
extern "C"
{
#endif

struct axis2_wsdl_binding_msg_ref;
struct axis2_wsdl_binding_fault;
struct axis2_wsdl_extensible_component;   
typedef struct axis2_wsdl_binding_op_ops axis2_wsdl_binding_op_ops_t;
typedef struct axis2_wsdl_binding_op axis2_wsdl_binding_op_t;
   
/** @defgroup axis2_wsdl_binding_op Wsdl Binding Operation
  * @ingroup axis2_wsdl
  * @{
  */

/** 
 * @brief Wsdl Binding Operation ops struct
 * Encapsulator struct for ops of axis2_wsdl_binding_op
 */
struct axis2_wsdl_binding_op_ops
{
   /** Deallocate memory
     * @return status code
     */
    axis2_status_t (AXIS2_CALL *
    free) (axis2_wsdl_binding_op_t *wsdl_binding_op, 
                                        const axis2_env_t *env);
    
    /**
     * Method getInput
     *
     * @return message reference
     */
    struct axis2_wsdl_binding_msg_ref * (AXIS2_CALL *
    get_input) (axis2_wsdl_binding_op_t *binding_op,
                                            const axis2_env_t *env);
    
    
    /**
     * Method setInput
     *
     * @param input
     */
    axis2_status_t (AXIS2_CALL *
    set_input) (axis2_wsdl_binding_op_t *binding_op,
                const axis2_env_t *env,
                struct axis2_wsdl_binding_msg_ref *input);
    
    /**
     * Method getOperation
     *
     * @return op
     */
    void *(AXIS2_CALL *
    get_op) (axis2_wsdl_binding_op_t *binding_op,
                                        const axis2_env_t *env);
    
    /**
     * Method setOperation
     *
     * @param op
     */
    axis2_status_t (AXIS2_CALL *
    set_op)(axis2_wsdl_binding_op_t *binding_op,
                const axis2_env_t *env,
                void *op);
    
    /**
     * Method getOutput
     *
     * @return message reference
     */
    struct axis2_wsdl_binding_msg_ref * (AXIS2_CALL *
    get_output)(axis2_wsdl_binding_op_t *binding_op,
                                            const axis2_env_t *env);
    
    /**
     * Method setOutput
     *
     * @param output
     */
    axis2_status_t (AXIS2_CALL *
    set_output) (axis2_wsdl_binding_op_t *binding_op,
                                            const axis2_env_t *env,
                                            struct axis2_wsdl_binding_msg_ref *output);
    
    /**
     * Method getName
     *
     * @return QName
     */
    axis2_qname_t *(AXIS2_CALL *
    get_qname) (axis2_wsdl_binding_op_t *binding_op,
                                        const axis2_env_t *env);
    
    /**
     * Method setName
     *
     * @param name
     */
    axis2_status_t (AXIS2_CALL *
    set_qname) (axis2_wsdl_binding_op_t *binding_op,
                                                const axis2_env_t *env,
                                                axis2_qname_t *qname);
    
    /**
     * Add the InFault to the Components InFaults
     *
     * @param inFault
     */
    axis2_status_t (AXIS2_CALL *
    add_in_fault) (axis2_wsdl_binding_op_t *binding_op,
                                                const axis2_env_t *env,
                                                struct axis2_wsdl_binding_fault *in_fault);
    
    /**
     * Add the OutFault to the Component OutFaults
     *
     * @param outFault
     */
    axis2_status_t (AXIS2_CALL *
    add_out_fault) (axis2_wsdl_binding_op_t *binding_op,
                                                const axis2_env_t *env,
                                                struct axis2_wsdl_binding_fault *out_fault);
    
    axis2_linked_list_t * (AXIS2_CALL *
    get_in_faults) (axis2_wsdl_binding_op_t *binding_op,
                                                const axis2_env_t *env);
    
    axis2_status_t (AXIS2_CALL *
    set_in_faults) (axis2_wsdl_binding_op_t *binding_op,
                                                const axis2_env_t *env,
                                                axis2_linked_list_t *in_faults);
    
    axis2_linked_list_t * (AXIS2_CALL *
    get_out_faults) (axis2_wsdl_binding_op_t *binding_op,
                                                const axis2_env_t *env);
    
    axis2_status_t (AXIS2_CALL *
    set_out_faults) (axis2_wsdl_binding_op_t *binding_op,
                                                const axis2_env_t *env,
                                                axis2_linked_list_t *out_faults);
};

/**
 * @brief Wsdl Binding Operation struct
 * Axis2 Wsdl Binding Operation
 * Binding Operation is used to hold wsdl_binding_op properties
 */
struct axis2_wsdl_binding_op
{
   axis2_wsdl_binding_op_ops_t *ops;
    struct axis2_wsdl_extensible_component *extensible_component;
};

/** create Wsdl Binding Operation struct
 * @return pointer to newly created wsdl wsdl_binding_op
 */
AXIS2_EXTERN axis2_wsdl_binding_op_t * AXIS2_CALL 
axis2_wsdl_binding_op_create (const axis2_env_t *env);

/**************************** Start of function macros ************************/

#define AXIS2_WSDL_BINDING_OP_FREE(wsdl_binding_op, env) \
      ((wsdl_binding_op)->ops->free (wsdl_binding_op, env))

#define AXIS2_WSDL_BINDING_OP_SET_INPUT(wsdl_binding_op, env, input) \
      ((wsdl_binding_op)->ops->set_input(wsdl_binding_op , env, input))
   
#define AXIS2_WSDL_BINDING_OP_GET_OP(wsdl_binding_op, env) \
      ((wsdl_binding_op)->ops->get_op(wsdl_binding_op, env))

#define AXIS2_WSDL_BINDING_OP_SET_OP(wsdl_binding_op, env, \
      op) \
      ((wsdl_binding_op)->ops->set_op(wsdl_binding_op, env,\
            op))
      
#define AXIS2_WSDL_BINDING_OP_GET_OUTPUT(wsdl_binding_op, env) \
      ((wsdl_binding_op)->ops->get_output(wsdl_binding_op, env))
        
#define AXIS2_WSDL_BINDING_OP_SET_OUTPUT(wsdl_binding_op, env, output) \
      ((wsdl_binding_op)->ops->set_output(wsdl_binding_op, env, output))

#define AXIS2_WSDL_BINDING_OP_GET_QNAME(wsdl_binding_op, env) \
      ((wsdl_binding_op)->ops->get_qname(wsdl_binding_op, env))
        
#define AXIS2_WSDL_BINDING_OP_SET_QNAME(wsdl_binding_op, env, qname) \
      ((wsdl_binding_op)->ops->set_qname(wsdl_binding_op, env, qname))

#define AXIS2_WSDL_BINDING_OP_ADD_IN_FAULT(wsdl_binding_op, env, in_fault) \
      ((wsdl_binding_op)->ops->add_in_fault(wsdl_binding_op, env, in_fault))
        
#define AXIS2_WSDL_BINDING_OP_ADD_OUT_FAULT(wsdl_binding_op, env, out_fault) \
      ((wsdl_binding_op)->ops->add_out_fault(wsdl_binding_op, env, out_fault))

#define AXIS2_WSDL_BINDING_OP_GET_IN_FAULTS(wsdl_binding_op, env) \
      ((wsdl_binding_op)->ops->get_in_faults(wsdl_binding_op, env))
        
#define AXIS2_WSDL_BINDING_OP_SET_IN_FAULTS(wsdl_binding_op, env, in_faults) \
      ((wsdl_binding_op)->ops->set_in_faults(wsdl_binding_op, env, in_faults))        

#define AXIS2_WSDL_BINDING_OP_GET_OUT_FAULTS(wsdl_binding_op, env) \
      ((wsdl_binding_op)->ops->get_out_faults(wsdl_binding_op, env))
        
#define AXIS2_WSDL_BINDING_OP_SET_OUT_FAULTS(wsdl_binding_op, env, out_faults) \
      ((wsdl_binding_op)->ops->set_out_faults(wsdl_binding_op, env, out_faults))
     
/**************************** End of function macros **************************/

/** @} */
#ifdef __cplusplus
}
#endif

#endif /*AXIS2_WSDL_BINDING_OP_H*/
