/**********************************************************
 * This file has been automatically created by "typemaker2"
 * from the file "providerqueue.xml".
 * Please do not edit this file, all changes will be lost.
 * Better edit the mentioned source file instead.
 **********************************************************/

#ifndef AB_PROVIDERQUEUE_PROVIDERQUEUE_H
#define AB_PROVIDERQUEUE_PROVIDERQUEUE_H


#ifdef __cplusplus
extern "C" {
#endif

/** @page P_AB_PROVIDERQUEUE Structure AB_PROVIDERQUEUE
<p>This page describes the properties of AB_PROVIDERQUEUE.</p>



<h1>AB_PROVIDERQUEUE</h1>



@anchor AB_PROVIDERQUEUE_providerName
<h2>providerName</h2>

<p>Set this property with @ref AB_ProviderQueue_SetProviderName(), get it with @ref AB_ProviderQueue_GetProviderName().</p>


@anchor AB_PROVIDERQUEUE_provider
<h2>provider</h2>

<p>Set this property with @ref AB_ProviderQueue_SetProvider(), get it with @ref AB_ProviderQueue_GetProvider().</p>


@anchor AB_PROVIDERQUEUE_accountQueueList
<h2>accountQueueList</h2>

<p>Set this property with @ref AB_ProviderQueue_SetAccountQueueList(), get it with @ref AB_ProviderQueue_GetAccountQueueList().</p>

*/

/* needed system headers */
#include <gwenhywfar/types.h>
#include <gwenhywfar/list1.h>
#include <gwenhywfar/inherit.h>

/* pre-headers */
#include <aqbanking/error.h>

typedef struct AB_PROVIDERQUEUE AB_PROVIDERQUEUE;
GWEN_LIST_FUNCTION_DEFS(AB_PROVIDERQUEUE, AB_ProviderQueue)
GWEN_INHERIT_FUNCTION_DEFS(AB_PROVIDERQUEUE)



/* post-headers */
#include <aqbanking/backendsupport/accountqueue.h>
#include <aqbanking/backendsupport/provider.h>


/** Constructor. */
AB_PROVIDERQUEUE *AB_ProviderQueue_new(void);

/** Destructor. */
void AB_ProviderQueue_free(AB_PROVIDERQUEUE *p_struct);

void AB_ProviderQueue_Attach(AB_PROVIDERQUEUE *p_struct);

AB_PROVIDERQUEUE *AB_ProviderQueue_dup(const AB_PROVIDERQUEUE *p_src);

/** Getter.
 * Use this function to get the member "providerName" (see @ref AB_PROVIDERQUEUE_providerName)
*/
const char *AB_ProviderQueue_GetProviderName(const AB_PROVIDERQUEUE *p_struct);

/** Getter.
 * Use this function to get the member "provider" (see @ref AB_PROVIDERQUEUE_provider)
*/
AB_PROVIDER *AB_ProviderQueue_GetProvider(const AB_PROVIDERQUEUE *p_struct);

/** Getter.
 * Use this function to get the member "accountQueueList" (see @ref AB_PROVIDERQUEUE_accountQueueList)
*/
AB_ACCOUNTQUEUE_LIST *AB_ProviderQueue_GetAccountQueueList(const AB_PROVIDERQUEUE *p_struct);

/** Setter.
 * Use this function to set the member "providerName" (see @ref AB_PROVIDERQUEUE_providerName)
*/
void AB_ProviderQueue_SetProviderName(AB_PROVIDERQUEUE *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "provider" (see @ref AB_PROVIDERQUEUE_provider)
*/
void AB_ProviderQueue_SetProvider(AB_PROVIDERQUEUE *p_struct, AB_PROVIDER *p_src);

/** Setter.
 * Use this function to set the member "accountQueueList" (see @ref AB_PROVIDERQUEUE_accountQueueList)
*/
void AB_ProviderQueue_SetAccountQueueList(AB_PROVIDERQUEUE *p_struct, AB_ACCOUNTQUEUE_LIST *p_src);

AB_PROVIDERQUEUE_LIST *AB_ProviderQueue_List_dup(const AB_PROVIDERQUEUE_LIST *p_src);

AB_PROVIDERQUEUE *AB_ProviderQueue_List_GetByProviderName(const AB_PROVIDERQUEUE_LIST *p_list,  const char *p_cmp);

 AB_ACCOUNTQUEUE *AB_ProviderQueue_FindAccountQueueById(const AB_PROVIDERQUEUE *pq, uint32_t uid);
 void AB_ProviderQueue_AddAccountQueue(AB_PROVIDERQUEUE *pq, AB_ACCOUNTQUEUE *aq);
 AB_ACCOUNTQUEUE *AB_ProviderQueue_GetFirstAccountQueue(const AB_PROVIDERQUEUE *pq);


#ifdef __cplusplus
}
#endif

#endif

