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

#ifndef AB_USERQUEUE_USERQUEUE_H
#define AB_USERQUEUE_USERQUEUE_H


#ifdef __cplusplus
extern "C" {
#endif

/** @page P_AB_USERQUEUE Structure AB_USERQUEUE
<p>This page describes the properties of AB_USERQUEUE.</p>



<h1>AB_USERQUEUE</h1>



@anchor AB_USERQUEUE_userId
<h2>userId</h2>

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


@anchor AB_USERQUEUE_user
<h2>user</h2>

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


@anchor AB_USERQUEUE_accountQueueList
<h2>accountQueueList</h2>

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

*/

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

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

typedef struct AB_USERQUEUE AB_USERQUEUE;
GWEN_LIST_FUNCTION_DEFS(AB_USERQUEUE, AB_UserQueue)
GWEN_INHERIT_FUNCTION_DEFS(AB_USERQUEUE)



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


/** Constructor. */
AB_USERQUEUE *AB_UserQueue_new(void);

/** Destructor. */
void AB_UserQueue_free(AB_USERQUEUE *p_struct);

void AB_UserQueue_Attach(AB_USERQUEUE *p_struct);

AB_USERQUEUE *AB_UserQueue_dup(const AB_USERQUEUE *p_src);

/** Getter.
 * Use this function to get the member "userId" (see @ref AB_USERQUEUE_userId)
*/
uint32_t AB_UserQueue_GetUserId(const AB_USERQUEUE *p_struct);

/** Getter.
 * Use this function to get the member "user" (see @ref AB_USERQUEUE_user)
*/
AB_USER *AB_UserQueue_GetUser(const AB_USERQUEUE *p_struct);

/** Getter.
 * Use this function to get the member "accountQueueList" (see @ref AB_USERQUEUE_accountQueueList)
*/
AB_ACCOUNTQUEUE_LIST *AB_UserQueue_GetAccountQueueList(const AB_USERQUEUE *p_struct);

/** Setter.
 * Use this function to set the member "userId" (see @ref AB_USERQUEUE_userId)
*/
void AB_UserQueue_SetUserId(AB_USERQUEUE *p_struct, uint32_t p_src);

/** Setter.
 * Use this function to set the member "user" (see @ref AB_USERQUEUE_user)
*/
void AB_UserQueue_SetUser(AB_USERQUEUE *p_struct, AB_USER *p_src);

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

AB_USERQUEUE_LIST *AB_UserQueue_List_dup(const AB_USERQUEUE_LIST *p_src);

AB_USERQUEUE *AB_UserQueue_List_GetByUserId(const AB_USERQUEUE_LIST *p_list, uint32_t p_cmp);

 AB_ACCOUNTQUEUE *AB_UserQueue_FindAccountQueue(const AB_USERQUEUE *uq, AB_ACCOUNT *acc);
 void AB_UserQueue_AddAccountQueue(AB_USERQUEUE *up, AB_ACCOUNTQUEUE *aq);
 AB_ACCOUNTQUEUE *AB_UserQueue_GetFirstAccountQueue(const AB_USERQUEUE *up);


#ifdef __cplusplus
}
#endif

#endif

