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

#ifndef AB_IMEXPORTER_CONTEXT_IMEXPORTER_CONTEXT_H
#define AB_IMEXPORTER_CONTEXT_IMEXPORTER_CONTEXT_H


#ifdef __cplusplus
extern "C" {
#endif

/** @page P_AB_IMEXPORTER_CONTEXT Structure AB_IMEXPORTER_CONTEXT
<p>This page describes the properties of AB_IMEXPORTER_CONTEXT.</p>



<h1>AB_IMEXPORTER_CONTEXT</h1>



@anchor AB_IMEXPORTER_CONTEXT_accountInfoList
<h2>accountInfoList</h2>

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


@anchor AB_IMEXPORTER_CONTEXT_securityList
<h2>securityList</h2>

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


@anchor AB_IMEXPORTER_CONTEXT_messageList
<h2>messageList</h2>

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

*/

/* needed system headers */
#include <gwenhywfar/types.h>
#include <gwenhywfar/list1.h>
#include <gwenhywfar/list2.h>
#include <gwenhywfar/db.h>
#include <gwenhywfar/xml.h>

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

typedef struct AB_IMEXPORTER_CONTEXT AB_IMEXPORTER_CONTEXT;
GWEN_LIST_FUNCTION_LIB_DEFS(AB_IMEXPORTER_CONTEXT, AB_ImExporterContext, AQBANKING_API)
GWEN_LIST2_FUNCTION_LIB_DEFS(AB_IMEXPORTER_CONTEXT, AB_ImExporterContext, AQBANKING_API)



/* post-headers */
#include <aqbanking/types/value.h>
#include <aqbanking/types/security.h>
#include <aqbanking/types/message.h>
#include <aqbanking/types/imexporter_accountinfo.h>


/** Constructor. */
AQBANKING_API AB_IMEXPORTER_CONTEXT *AB_ImExporterContext_new(void);

/** Destructor. */
AQBANKING_API void AB_ImExporterContext_free(AB_IMEXPORTER_CONTEXT *p_struct);

AQBANKING_API void AB_ImExporterContext_Attach(AB_IMEXPORTER_CONTEXT *p_struct);

AQBANKING_API AB_IMEXPORTER_CONTEXT *AB_ImExporterContext_dup(const AB_IMEXPORTER_CONTEXT *p_struct);

AQBANKING_API AB_IMEXPORTER_CONTEXT *AB_ImExporterContext_copy(AB_IMEXPORTER_CONTEXT *p_struct,
                                                               const AB_IMEXPORTER_CONTEXT *p_src);

/** Getter.
 * Use this function to get the member "accountInfoList" (see @ref AB_IMEXPORTER_CONTEXT_accountInfoList)
*/
AQBANKING_API AB_IMEXPORTER_ACCOUNTINFO_LIST *AB_ImExporterContext_GetAccountInfoList(
  const AB_IMEXPORTER_CONTEXT *p_struct);

/** Getter.
 * Use this function to get the member "securityList" (see @ref AB_IMEXPORTER_CONTEXT_securityList)
*/
AQBANKING_API AB_SECURITY_LIST *AB_ImExporterContext_GetSecurityList(const AB_IMEXPORTER_CONTEXT *p_struct);

/** Getter.
 * Use this function to get the member "messageList" (see @ref AB_IMEXPORTER_CONTEXT_messageList)
*/
AQBANKING_API AB_MESSAGE_LIST *AB_ImExporterContext_GetMessageList(const AB_IMEXPORTER_CONTEXT *p_struct);

/** Setter.
 * Use this function to set the member "accountInfoList" (see @ref AB_IMEXPORTER_CONTEXT_accountInfoList)
*/
AQBANKING_API void AB_ImExporterContext_SetAccountInfoList(AB_IMEXPORTER_CONTEXT *p_struct,
                                                           AB_IMEXPORTER_ACCOUNTINFO_LIST *p_src);

/** Setter.
 * Use this function to set the member "securityList" (see @ref AB_IMEXPORTER_CONTEXT_securityList)
*/
AQBANKING_API void AB_ImExporterContext_SetSecurityList(AB_IMEXPORTER_CONTEXT *p_struct, AB_SECURITY_LIST *p_src);

/** Setter.
 * Use this function to set the member "messageList" (see @ref AB_IMEXPORTER_CONTEXT_messageList)
*/
AQBANKING_API void AB_ImExporterContext_SetMessageList(AB_IMEXPORTER_CONTEXT *p_struct, AB_MESSAGE_LIST *p_src);

/* list1 functions */
AQBANKING_API AB_IMEXPORTER_CONTEXT_LIST *AB_ImExporterContext_List_dup(const AB_IMEXPORTER_CONTEXT_LIST *p_src);

AQBANKING_API void AB_ImExporterContext_ReadDb(AB_IMEXPORTER_CONTEXT *p_struct, GWEN_DB_NODE *p_db);

AQBANKING_API int AB_ImExporterContext_WriteDb(const AB_IMEXPORTER_CONTEXT *p_struct, GWEN_DB_NODE *p_db);

AQBANKING_API AB_IMEXPORTER_CONTEXT *AB_ImExporterContext_fromDb(GWEN_DB_NODE *p_db);

AQBANKING_API int AB_ImExporterContext_toDb(const AB_IMEXPORTER_CONTEXT *p_struct, GWEN_DB_NODE *p_db);

AQBANKING_API void AB_ImExporterContext_ReadXml(AB_IMEXPORTER_CONTEXT *p_struct, GWEN_XMLNODE *p_db);

AQBANKING_API void AB_ImExporterContext_WriteXml(const AB_IMEXPORTER_CONTEXT *p_struct, GWEN_XMLNODE *p_db);

AQBANKING_API void AB_ImExporterContext_toXml(const AB_IMEXPORTER_CONTEXT *p_struct, GWEN_XMLNODE *p_db);

AQBANKING_API AB_IMEXPORTER_CONTEXT *AB_ImExporterContext_fromXml(GWEN_XMLNODE *p_db);

AQBANKING_API int AB_ImExporterContext_List2_freeAll(AB_IMEXPORTER_CONTEXT_LIST2 *tl);
/**
 * This function clears the context (e.g. removes all transactions etc).
 */
AQBANKING_API void AB_ImExporterContext_Clear(AB_IMEXPORTER_CONTEXT *st);
/**
 * Adds the content of the second context to the first one.
 * Frees the second context.
 */
AQBANKING_API void AB_ImExporterContext_AddContext(AB_IMEXPORTER_CONTEXT *st, AB_IMEXPORTER_CONTEXT *stSrc);
AQBANKING_API AB_IMEXPORTER_ACCOUNTINFO *AB_ImExporterContext_GetFirstAccountInfo(const AB_IMEXPORTER_CONTEXT *st);
AQBANKING_API void AB_ImExporterContext_AddAccountInfo(AB_IMEXPORTER_CONTEXT *st, AB_IMEXPORTER_ACCOUNTINFO *ai);
AQBANKING_API int AB_ImExporterContext_GetAccountInfoCount(const AB_IMEXPORTER_CONTEXT *st);
AQBANKING_API AB_IMEXPORTER_ACCOUNTINFO *AB_ImExporterContext_GetOrAddAccountInfo(AB_IMEXPORTER_CONTEXT *st,
    uint32_t uniqueId, const char *iban, const char *bankCode, const char *accountNumber, int accountType);
AQBANKING_API AB_SECURITY *AB_ImExporterContext_GetFirstSecurity(const AB_IMEXPORTER_CONTEXT *st);
AQBANKING_API AB_SECURITY *AB_ImExporterContext_FindSecurity(const AB_IMEXPORTER_CONTEXT *st, const char *nameSpace,
                                                             const char *id);
AQBANKING_API void AB_ImExporterContext_AddSecurity(AB_IMEXPORTER_CONTEXT *st, AB_SECURITY *sec);
AQBANKING_API AB_MESSAGE *AB_ImExporterContext_GetFirstMessage(const AB_IMEXPORTER_CONTEXT *st);
AQBANKING_API void AB_ImExporterContext_AddMessage(AB_IMEXPORTER_CONTEXT *st, AB_MESSAGE *msg);
AQBANKING_API void AB_ImExporterContext_AddTransaction(AB_IMEXPORTER_CONTEXT *st, AB_TRANSACTION *t);
/* end-headers */


#ifdef __cplusplus
}
#endif

#endif

