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

#ifndef AB_BANKINFO_SERVICE_BANKINFOSERVICE_H
#define AB_BANKINFO_SERVICE_BANKINFOSERVICE_H


#ifdef __cplusplus
extern "C" {
#endif

/** @page P_AB_BANKINFO_SERVICE Structure AB_BANKINFO_SERVICE
<p>This page describes the properties of AB_BANKINFO_SERVICE.</p>



<h1>AB_BANKINFO_SERVICE</h1>



@anchor AB_BANKINFO_SERVICE_type
<h2>type</h2>

The following types have been registered with AqBanking:

<ul>

<li>
<b>HBCI</b>
- German homebanking protocol</li>

<li>
<b>EBICS</b>
- German and French homebanking protocol</li>

<li>
<b>OFX</b>
- OFX direct connect protocol</li>

</ul>



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


@anchor AB_BANKINFO_SERVICE_address
<h2>address</h2>

For most services this is the URL or hostname of the server.
<p>Set this property with @ref AB_BankInfoService_SetAddress(), get it with @ref AB_BankInfoService_GetAddress().</p>


@anchor AB_BANKINFO_SERVICE_suffix
<h2>suffix</h2>

For IP based services this is the port to be used (if omitted a default value suitable for the service is chosen).
<p>Set this property with @ref AB_BankInfoService_SetSuffix(), get it with @ref AB_BankInfoService_GetSuffix().</p>


@anchor AB_BANKINFO_SERVICE_pversion
<h2>pversion</h2>

The content of this field depends on the service type.
 For
<b>HBCI</b>

this is the protocol version to be used:

<ul>

<li>2.01</li>

<li>2.10</li>

<li>2.20</li>

</ul>



 For
<b>EBICS</b>

this is also the protocol version:

<ul>

<li>H002</li>

<li>H003</li>

</ul>



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


@anchor AB_BANKINFO_SERVICE_hversion
<h2>hversion</h2>

For HTTP-based protocols this is the HTTP version to be
 used:

<ul>

<li>1.0</li>

<li>1.1</li>

</ul>



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


@anchor AB_BANKINFO_SERVICE_mode
<h2>mode</h2>

The content of this field depends on the service type.
 For
<b>HBCI</b>

the following values are used:

<ul>

<li>DDV</li>

<li>RDH1</li>

<li>RDH2</li>

<li>RDH3</li>

<li>RDH4</li>

<li>RDH5</li>

<li>RDH6</li>

<li>RDH7</li>

<li>RDH8</li>

<li>RDH9</li>

<li>RDH10</li>

<li>RAH7</li>

<li>RAH9</li>

<li>RAH10</li>

<li>PINTAN</li>

</ul>



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


@anchor AB_BANKINFO_SERVICE_aux1
<h2>aux1</h2>

This is a multi purpose field to be used by a bankinfo plugin as it sees fit. OFX uses this to store the FID from the bankinfo file. EBICS stores the HOSTID here.
<p>Set this property with @ref AB_BankInfoService_SetAux1(), get it with @ref AB_BankInfoService_GetAux1().</p>


@anchor AB_BANKINFO_SERVICE_aux2
<h2>aux2</h2>

This is a multi purpose field to be used by a bankinfo plugin as it sees fit. OFX uses this to store the ORG field from the bankinfo file.
<p>Set this property with @ref AB_BankInfoService_SetAux2(), get it with @ref AB_BankInfoService_GetAux2().</p>


@anchor AB_BANKINFO_SERVICE_aux3
<h2>aux3</h2>

This is a multi purpose field to be used by a bankinfo plugin as it sees fit. OFX uses this to store the APPID field from the bankinfo file.
<p>Set this property with @ref AB_BankInfoService_SetAux3(), get it with @ref AB_BankInfoService_GetAux3().</p>


@anchor AB_BANKINFO_SERVICE_aux4
<h2>aux4</h2>

This is a multi purpose field to be used by a bankinfo plugin as it sees fit. OFX uses this to store the APPVER field from the bankinfo file.
<p>Set this property with @ref AB_BankInfoService_SetAux4(), get it with @ref AB_BankInfoService_GetAux4().</p>


@anchor AB_BANKINFO_SERVICE_userFlags
<h2>userFlags</h2>

<p>Set this property with @ref AB_BankInfoService_SetUserFlags(), get it with @ref AB_BankInfoService_GetUserFlags().</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>

typedef struct AB_BANKINFO_SERVICE AB_BANKINFO_SERVICE;
GWEN_LIST_FUNCTION_LIB_DEFS(AB_BANKINFO_SERVICE, AB_BankInfoService, AQBANKING_API)
GWEN_LIST2_FUNCTION_LIB_DEFS(AB_BANKINFO_SERVICE, AB_BankInfoService, AQBANKING_API)



/* post-headers */


/** Constructor. */
AQBANKING_API AB_BANKINFO_SERVICE *AB_BankInfoService_new(void);

/** Destructor. */
AQBANKING_API void AB_BankInfoService_free(AB_BANKINFO_SERVICE *p_struct);

AQBANKING_API void AB_BankInfoService_Attach(AB_BANKINFO_SERVICE *p_struct);

AQBANKING_API AB_BANKINFO_SERVICE *AB_BankInfoService_dup(const AB_BANKINFO_SERVICE *p_struct);

AQBANKING_API AB_BANKINFO_SERVICE *AB_BankInfoService_copy(AB_BANKINFO_SERVICE *p_struct,
                                                           const AB_BANKINFO_SERVICE *p_src);

/** Getter.
 * Use this function to get the member "type" (see @ref AB_BANKINFO_SERVICE_type)
*/
AQBANKING_API const char *AB_BankInfoService_GetType(const AB_BANKINFO_SERVICE *p_struct);

/** Getter.
 * Use this function to get the member "address" (see @ref AB_BANKINFO_SERVICE_address)
*/
AQBANKING_API const char *AB_BankInfoService_GetAddress(const AB_BANKINFO_SERVICE *p_struct);

/** Getter.
 * Use this function to get the member "suffix" (see @ref AB_BANKINFO_SERVICE_suffix)
*/
AQBANKING_API const char *AB_BankInfoService_GetSuffix(const AB_BANKINFO_SERVICE *p_struct);

/** Getter.
 * Use this function to get the member "pversion" (see @ref AB_BANKINFO_SERVICE_pversion)
*/
AQBANKING_API const char *AB_BankInfoService_GetPversion(const AB_BANKINFO_SERVICE *p_struct);

/** Getter.
 * Use this function to get the member "hversion" (see @ref AB_BANKINFO_SERVICE_hversion)
*/
AQBANKING_API const char *AB_BankInfoService_GetHversion(const AB_BANKINFO_SERVICE *p_struct);

/** Getter.
 * Use this function to get the member "mode" (see @ref AB_BANKINFO_SERVICE_mode)
*/
AQBANKING_API const char *AB_BankInfoService_GetMode(const AB_BANKINFO_SERVICE *p_struct);

/** Getter.
 * Use this function to get the member "aux1" (see @ref AB_BANKINFO_SERVICE_aux1)
*/
AQBANKING_API const char *AB_BankInfoService_GetAux1(const AB_BANKINFO_SERVICE *p_struct);

/** Getter.
 * Use this function to get the member "aux2" (see @ref AB_BANKINFO_SERVICE_aux2)
*/
AQBANKING_API const char *AB_BankInfoService_GetAux2(const AB_BANKINFO_SERVICE *p_struct);

/** Getter.
 * Use this function to get the member "aux3" (see @ref AB_BANKINFO_SERVICE_aux3)
*/
AQBANKING_API const char *AB_BankInfoService_GetAux3(const AB_BANKINFO_SERVICE *p_struct);

/** Getter.
 * Use this function to get the member "aux4" (see @ref AB_BANKINFO_SERVICE_aux4)
*/
AQBANKING_API const char *AB_BankInfoService_GetAux4(const AB_BANKINFO_SERVICE *p_struct);

/** Getter.
 * Use this function to get the member "userFlags" (see @ref AB_BANKINFO_SERVICE_userFlags)
*/
AQBANKING_API uint32_t AB_BankInfoService_GetUserFlags(const AB_BANKINFO_SERVICE *p_struct);

/** Setter.
 * Use this function to set the member "type" (see @ref AB_BANKINFO_SERVICE_type)
*/
AQBANKING_API void AB_BankInfoService_SetType(AB_BANKINFO_SERVICE *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "address" (see @ref AB_BANKINFO_SERVICE_address)
*/
AQBANKING_API void AB_BankInfoService_SetAddress(AB_BANKINFO_SERVICE *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "suffix" (see @ref AB_BANKINFO_SERVICE_suffix)
*/
AQBANKING_API void AB_BankInfoService_SetSuffix(AB_BANKINFO_SERVICE *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "pversion" (see @ref AB_BANKINFO_SERVICE_pversion)
*/
AQBANKING_API void AB_BankInfoService_SetPversion(AB_BANKINFO_SERVICE *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "hversion" (see @ref AB_BANKINFO_SERVICE_hversion)
*/
AQBANKING_API void AB_BankInfoService_SetHversion(AB_BANKINFO_SERVICE *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "mode" (see @ref AB_BANKINFO_SERVICE_mode)
*/
AQBANKING_API void AB_BankInfoService_SetMode(AB_BANKINFO_SERVICE *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "aux1" (see @ref AB_BANKINFO_SERVICE_aux1)
*/
AQBANKING_API void AB_BankInfoService_SetAux1(AB_BANKINFO_SERVICE *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "aux2" (see @ref AB_BANKINFO_SERVICE_aux2)
*/
AQBANKING_API void AB_BankInfoService_SetAux2(AB_BANKINFO_SERVICE *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "aux3" (see @ref AB_BANKINFO_SERVICE_aux3)
*/
AQBANKING_API void AB_BankInfoService_SetAux3(AB_BANKINFO_SERVICE *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "aux4" (see @ref AB_BANKINFO_SERVICE_aux4)
*/
AQBANKING_API void AB_BankInfoService_SetAux4(AB_BANKINFO_SERVICE *p_struct, const char *p_src);

/** Setter.
 * Use this function to set the member "userFlags" (see @ref AB_BANKINFO_SERVICE_userFlags)
*/
AQBANKING_API void AB_BankInfoService_SetUserFlags(AB_BANKINFO_SERVICE *p_struct, uint32_t p_src);

/** Add flags.
 * Use this function to add flags to the member "userFlags"
*/
AQBANKING_API void AB_BankInfoService_AddUserFlags(AB_BANKINFO_SERVICE *p_struct, uint32_t p_src);

/** Sub flags.
 * Use this function to sub flags from the member "userFlags"
*/
AQBANKING_API void AB_BankInfoService_SubUserFlags(AB_BANKINFO_SERVICE *p_struct, uint32_t p_src);

/* list1 functions */
AQBANKING_API AB_BANKINFO_SERVICE_LIST *AB_BankInfoService_List_dup(const AB_BANKINFO_SERVICE_LIST *p_src);

AQBANKING_API void AB_BankInfoService_ReadDb(AB_BANKINFO_SERVICE *p_struct, GWEN_DB_NODE *p_db);

AQBANKING_API int AB_BankInfoService_WriteDb(const AB_BANKINFO_SERVICE *p_struct, GWEN_DB_NODE *p_db);

AQBANKING_API AB_BANKINFO_SERVICE *AB_BankInfoService_fromDb(GWEN_DB_NODE *p_db);

AQBANKING_API int AB_BankInfoService_toDb(const AB_BANKINFO_SERVICE *p_struct, GWEN_DB_NODE *p_db);

AQBANKING_API void AB_BankInfoService_ReadXml(AB_BANKINFO_SERVICE *p_struct, GWEN_XMLNODE *p_db);

AQBANKING_API void AB_BankInfoService_WriteXml(const AB_BANKINFO_SERVICE *p_struct, GWEN_XMLNODE *p_db);

AQBANKING_API void AB_BankInfoService_toXml(const AB_BANKINFO_SERVICE *p_struct, GWEN_XMLNODE *p_db);

AQBANKING_API AB_BANKINFO_SERVICE *AB_BankInfoService_fromXml(GWEN_XMLNODE *p_db);

/* end-headers */


#ifdef __cplusplus
}
#endif

#endif

