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

#ifndef AB_TRANSACTION_LIMITS_TRANSACTIONLIMITS_H
#define AB_TRANSACTION_LIMITS_TRANSACTIONLIMITS_H


#ifdef __cplusplus
extern "C" {
#endif

/** @page P_AB_TRANSACTION_LIMITS Structure AB_TRANSACTION_LIMITS
<p>This page describes the properties of AB_TRANSACTION_LIMITS.</p>



<h1>AB_TRANSACTION_LIMITS</h1>

This type describes the limits for fields of an @ref AB_TRANSACTION. The limits have the following meanings:
<ul>
<li>maxLenSOMETHING: if 0 then this limit is unknown, if -1 then the described element is not allowed to be set in the transaction. All other values represent the maximum length of the described field.</li>
<li>minLenSOMETHING: if 0 then this limit is unknown. All other values represent the minimum length of the described field.</li>
<li>maxLinesSOMETHING: if 0 then this limit is unknown All other values represent the maximum number of lines for the described field.</li>
<li>minLinesSOMETHING: if 0 then this limit is unknown. All other values represent the minimum number of lines for the described field.</li>
<li>valuesSOMETHING: A list of allowed values (as string). If this list is empty then there all values are allowed (those lists @b exist in any case, so the appropriate getter function will never return NULL).</li>
<li>allowSOMETHING: If SOMETHING is allowed then the value is "1". If SOMETHING is NOT allowed then the value is "-1". If it is unknown whether SOMETHING is allowed or not then this value is "0".</li>
</ul>

So if you want to check whether an given field is at all allowed you must check whether "maxLenSOMETHING" has a value of "-1".


<h2>Unnamed Group</h2>



@anchor AB_TRANSACTION_LIMITS_command
<h3>command</h3>

Command to which these hints apply (see @ref AB_Transaction_CommandGetBalance and others).
<p>Set this property with @ref AB_TransactionLimits_SetCommand(), get it with @ref AB_TransactionLimits_GetCommand().</p>


<h2>Unnamed Group</h2>

Limits for the issuer name.


@anchor AB_TRANSACTION_LIMITS_maxLenLocalName
<h3>maxLenLocalName</h3>

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


@anchor AB_TRANSACTION_LIMITS_minLenLocalName
<h3>minLenLocalName</h3>

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


<h2>Unnamed Group</h2>

Limits for the payee name.


@anchor AB_TRANSACTION_LIMITS_maxLenRemoteName
<h3>maxLenRemoteName</h3>

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


@anchor AB_TRANSACTION_LIMITS_minLenRemoteName
<h3>minLenRemoteName</h3>

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


<h2>Unnamed Group</h2>

Limits for customer reference.


@anchor AB_TRANSACTION_LIMITS_maxLenCustomerReference
<h3>maxLenCustomerReference</h3>

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


@anchor AB_TRANSACTION_LIMITS_minLenCustomerReference
<h3>minLenCustomerReference</h3>

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


<h2>Unnamed Group</h2>

Limits for bank reference.


@anchor AB_TRANSACTION_LIMITS_maxLenBankReference
<h3>maxLenBankReference</h3>

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


@anchor AB_TRANSACTION_LIMITS_minLenBankReference
<h3>minLenBankReference</h3>

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


<h2>Unnamed Group</h2>

Limits for purpose (called
<i>memo</i>

in some apps).


@anchor AB_TRANSACTION_LIMITS_maxLenPurpose
<h3>maxLenPurpose</h3>

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


@anchor AB_TRANSACTION_LIMITS_minLenPurpose
<h3>minLenPurpose</h3>

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


@anchor AB_TRANSACTION_LIMITS_maxLinesPurpose
<h3>maxLinesPurpose</h3>

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


@anchor AB_TRANSACTION_LIMITS_minLinesPurpose
<h3>minLinesPurpose</h3>

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


<h2>Unnamed Group</h2>

Limits for date.


@anchor AB_TRANSACTION_LIMITS_needDate
<h3>needDate</h3>

Defines whether setting of the execution date (@ref AB_Transaction_SetDate) is required (value=1) or forbidden (value=-1), value=0 means "unknown".
<p>Set this property with @ref AB_TransactionLimits_SetNeedDate(), get it with @ref AB_TransactionLimits_GetNeedDate().</p>


<h2>Unnamed Group</h2>

These limits apply to standing orders and dated transfers only.


@anchor AB_TRANSACTION_LIMITS_minValueSetupTime
<h3>minValueSetupTime</h3>

Minimum time in days between issuing of a request and its first execution.
<p>Set this property with @ref AB_TransactionLimits_SetMinValueSetupTime(), get it with @ref AB_TransactionLimits_GetMinValueSetupTime().</p>


@anchor AB_TRANSACTION_LIMITS_maxValueSetupTime
<h3>maxValueSetupTime</h3>

Maximum time in days between issuing of a request and its first execution.
<p>Set this property with @ref AB_TransactionLimits_SetMaxValueSetupTime(), get it with @ref AB_TransactionLimits_GetMaxValueSetupTime().</p>


@anchor AB_TRANSACTION_LIMITS_minValueSetupTimeFirst
<h3>minValueSetupTimeFirst</h3>

Minimum time in days between issuing of a request and its first execution. This is for a first request (e.g. first debit note).
<p>Set this property with @ref AB_TransactionLimits_SetMinValueSetupTimeFirst(), get it with @ref AB_TransactionLimits_GetMinValueSetupTimeFirst().</p>


@anchor AB_TRANSACTION_LIMITS_maxValueSetupTimeFirst
<h3>maxValueSetupTimeFirst</h3>

Maximum time in days between issuing of a request and its first execution. This is for a first request (e.g. first debit note).
<p>Set this property with @ref AB_TransactionLimits_SetMaxValueSetupTimeFirst(), get it with @ref AB_TransactionLimits_GetMaxValueSetupTimeFirst().</p>


@anchor AB_TRANSACTION_LIMITS_minValueSetupTimeOnce
<h3>minValueSetupTimeOnce</h3>

Minimum time in days between issuing of a request and its execution. This is for a one time only request (e.g. onetime debit note).
<p>Set this property with @ref AB_TransactionLimits_SetMinValueSetupTimeOnce(), get it with @ref AB_TransactionLimits_GetMinValueSetupTimeOnce().</p>


@anchor AB_TRANSACTION_LIMITS_maxValueSetupTimeOnce
<h3>maxValueSetupTimeOnce</h3>

Maximum time in days between issuing of a request and its execution. This is for a one time only request (e.g. onetime debit note).
<p>Set this property with @ref AB_TransactionLimits_SetMaxValueSetupTimeOnce(), get it with @ref AB_TransactionLimits_GetMaxValueSetupTimeOnce().</p>


@anchor AB_TRANSACTION_LIMITS_minValueSetupTimeRecurring
<h3>minValueSetupTimeRecurring</h3>

Minimum time in days between issuing of a request and its execution. This is for a following request (e.g. a recurring debit note).
<p>Set this property with @ref AB_TransactionLimits_SetMinValueSetupTimeRecurring(), get it with @ref AB_TransactionLimits_GetMinValueSetupTimeRecurring().</p>


@anchor AB_TRANSACTION_LIMITS_maxValueSetupTimeRecurring
<h3>maxValueSetupTimeRecurring</h3>

Maximum time in days between issuing of a request and its first execution. This is for a following request (e.g. a recurring debit note).
<p>Set this property with @ref AB_TransactionLimits_SetMaxValueSetupTimeRecurring(), get it with @ref AB_TransactionLimits_GetMaxValueSetupTimeRecurring().</p>


@anchor AB_TRANSACTION_LIMITS_minValueSetupTimeFinal
<h3>minValueSetupTimeFinal</h3>

Minimum time in days between issuing of a request and its execution. This is for a final request (e.g. last debit note).
<p>Set this property with @ref AB_TransactionLimits_SetMinValueSetupTimeFinal(), get it with @ref AB_TransactionLimits_GetMinValueSetupTimeFinal().</p>


@anchor AB_TRANSACTION_LIMITS_maxValueSetupTimeFinal
<h3>maxValueSetupTimeFinal</h3>

Maximum time in days between issuing of a request and its execution. This is for a final request (e.g. last debit note).
<p>Set this property with @ref AB_TransactionLimits_SetMaxValueSetupTimeFinal(), get it with @ref AB_TransactionLimits_GetMaxValueSetupTimeFinal().</p>


@anchor AB_TRANSACTION_LIMITS_valuesCycleWeek
<h3>valuesCycleWeek</h3>

This array contains one entry for every supported cycle. These value are accepted when "period" is "weekly". The first entry is the number of used entries following. Allowed values are "0" (all cycles possible) and "1"-"52".
<p>Set this property with @ref AB_TransactionLimits_SetValuesCycleWeek(), get it with @ref AB_TransactionLimits_GetValuesCycleWeek().</p>


@anchor AB_TRANSACTION_LIMITS_valuesCycleWeekUsed
<h3>valuesCycleWeekUsed</h3>

Number of bytes actually stored in the array valuesCycleWeek.
<p>Set this property with @ref AB_TransactionLimits_SetValuesCycleWeekUsed(), get it with @ref AB_TransactionLimits_GetValuesCycleWeekUsed().</p>


@anchor AB_TRANSACTION_LIMITS_valuesCycleMonth
<h3>valuesCycleMonth</h3>

This array contains one entry for every supported cycle. These value are accepted when "period" is "monthly". The first entry is the number of used entries following. Allowed values are "0" (all cycles possible) and "1"-"12".
<p>Set this property with @ref AB_TransactionLimits_SetValuesCycleMonth(), get it with @ref AB_TransactionLimits_GetValuesCycleMonth().</p>


@anchor AB_TRANSACTION_LIMITS_valuesCycleMonthUsed
<h3>valuesCycleMonthUsed</h3>

Number of bytes actually stored in the array valuesCycleMonth.
<p>Set this property with @ref AB_TransactionLimits_SetValuesCycleMonthUsed(), get it with @ref AB_TransactionLimits_GetValuesCycleMonthUsed().</p>


@anchor AB_TRANSACTION_LIMITS_valuesExecutionDayWeek
<h3>valuesExecutionDayWeek</h3>

This array contains one entry for every supported day of the week. These value are accepted when "period" is "weekly". The first entry is the number of used entries following. Allowed values are "0" (all days allowed) and "1"-"7".
<p>Set this property with @ref AB_TransactionLimits_SetValuesExecutionDayWeek(), get it with @ref AB_TransactionLimits_GetValuesExecutionDayWeek().</p>


@anchor AB_TRANSACTION_LIMITS_valuesExecutionDayWeekUsed
<h3>valuesExecutionDayWeekUsed</h3>

Number of bytes actually stored in the array valuesExecutionDayWeek.
<p>Set this property with @ref AB_TransactionLimits_SetValuesExecutionDayWeekUsed(), get it with @ref AB_TransactionLimits_GetValuesExecutionDayWeekUsed().</p>


@anchor AB_TRANSACTION_LIMITS_valuesExecutionDayMonth
<h3>valuesExecutionDayMonth</h3>

This list contains one entry for every supported monthly cycle. These value are accepted when "period" is "monthly". The first entry is the number of used entries following. Allowed are "0" (all days possible), "1"-"30", "97" (ultimo-2), "98" (ultimo-1) and "99" (ultimo).
<p>Set this property with @ref AB_TransactionLimits_SetValuesExecutionDayMonth(), get it with @ref AB_TransactionLimits_GetValuesExecutionDayMonth().</p>


@anchor AB_TRANSACTION_LIMITS_valuesExecutionDayMonthUsed
<h3>valuesExecutionDayMonthUsed</h3>

Number of bytes actually stored in the array valuesExecutionDayMonth.
<p>Set this property with @ref AB_TransactionLimits_SetValuesExecutionDayMonthUsed(), get it with @ref AB_TransactionLimits_GetValuesExecutionDayMonthUsed().</p>


@anchor AB_TRANSACTION_LIMITS_allowMonthly
<h3>allowMonthly</h3>

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


@anchor AB_TRANSACTION_LIMITS_allowWeekly
<h3>allowWeekly</h3>

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


@anchor AB_TRANSACTION_LIMITS_allowChangeRecipientAccount
<h3>allowChangeRecipientAccount</h3>

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


@anchor AB_TRANSACTION_LIMITS_allowChangeRecipientName
<h3>allowChangeRecipientName</h3>

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


@anchor AB_TRANSACTION_LIMITS_allowChangeValue
<h3>allowChangeValue</h3>

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


@anchor AB_TRANSACTION_LIMITS_allowChangeTextKey
<h3>allowChangeTextKey</h3>

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


@anchor AB_TRANSACTION_LIMITS_allowChangePurpose
<h3>allowChangePurpose</h3>

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


@anchor AB_TRANSACTION_LIMITS_allowChangeFirstExecutionDate
<h3>allowChangeFirstExecutionDate</h3>

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


@anchor AB_TRANSACTION_LIMITS_allowChangeLastExecutionDate
<h3>allowChangeLastExecutionDate</h3>

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


@anchor AB_TRANSACTION_LIMITS_allowChangeCycle
<h3>allowChangeCycle</h3>

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


@anchor AB_TRANSACTION_LIMITS_allowChangePeriod
<h3>allowChangePeriod</h3>

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


@anchor AB_TRANSACTION_LIMITS_allowChangeExecutionDay
<h3>allowChangeExecutionDay</h3>

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

typedef struct AB_TRANSACTION_LIMITS AB_TRANSACTION_LIMITS;
GWEN_LIST_FUNCTION_LIB_DEFS(AB_TRANSACTION_LIMITS, AB_TransactionLimits, AQBANKING_API)
GWEN_LIST2_FUNCTION_LIB_DEFS(AB_TRANSACTION_LIMITS, AB_TransactionLimits, AQBANKING_API)



/* post-headers */


/** Constructor. */
AQBANKING_API AB_TRANSACTION_LIMITS *AB_TransactionLimits_new(void);

/** Destructor. */
AQBANKING_API void AB_TransactionLimits_free(AB_TRANSACTION_LIMITS *p_struct);

AQBANKING_API void AB_TransactionLimits_Attach(AB_TRANSACTION_LIMITS *p_struct);

AQBANKING_API AB_TRANSACTION_LIMITS *AB_TransactionLimits_dup(const AB_TRANSACTION_LIMITS *p_struct);

AQBANKING_API AB_TRANSACTION_LIMITS *AB_TransactionLimits_copy(AB_TRANSACTION_LIMITS *p_struct,
                                                               const AB_TRANSACTION_LIMITS *p_src);

/** Getter.
 * Use this function to get the member "command" (see @ref AB_TRANSACTION_LIMITS_command)
*/
AQBANKING_API int AB_TransactionLimits_GetCommand(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "maxLenLocalName" (see @ref AB_TRANSACTION_LIMITS_maxLenLocalName)
*/
AQBANKING_API int AB_TransactionLimits_GetMaxLenLocalName(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "minLenLocalName" (see @ref AB_TRANSACTION_LIMITS_minLenLocalName)
*/
AQBANKING_API int AB_TransactionLimits_GetMinLenLocalName(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "maxLenRemoteName" (see @ref AB_TRANSACTION_LIMITS_maxLenRemoteName)
*/
AQBANKING_API int AB_TransactionLimits_GetMaxLenRemoteName(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "minLenRemoteName" (see @ref AB_TRANSACTION_LIMITS_minLenRemoteName)
*/
AQBANKING_API int AB_TransactionLimits_GetMinLenRemoteName(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "maxLenCustomerReference" (see @ref AB_TRANSACTION_LIMITS_maxLenCustomerReference)
*/
AQBANKING_API int AB_TransactionLimits_GetMaxLenCustomerReference(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "minLenCustomerReference" (see @ref AB_TRANSACTION_LIMITS_minLenCustomerReference)
*/
AQBANKING_API int AB_TransactionLimits_GetMinLenCustomerReference(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "maxLenBankReference" (see @ref AB_TRANSACTION_LIMITS_maxLenBankReference)
*/
AQBANKING_API int AB_TransactionLimits_GetMaxLenBankReference(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "minLenBankReference" (see @ref AB_TRANSACTION_LIMITS_minLenBankReference)
*/
AQBANKING_API int AB_TransactionLimits_GetMinLenBankReference(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "maxLenPurpose" (see @ref AB_TRANSACTION_LIMITS_maxLenPurpose)
*/
AQBANKING_API int AB_TransactionLimits_GetMaxLenPurpose(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "minLenPurpose" (see @ref AB_TRANSACTION_LIMITS_minLenPurpose)
*/
AQBANKING_API int AB_TransactionLimits_GetMinLenPurpose(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "maxLinesPurpose" (see @ref AB_TRANSACTION_LIMITS_maxLinesPurpose)
*/
AQBANKING_API int AB_TransactionLimits_GetMaxLinesPurpose(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "minLinesPurpose" (see @ref AB_TRANSACTION_LIMITS_minLinesPurpose)
*/
AQBANKING_API int AB_TransactionLimits_GetMinLinesPurpose(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "needDate" (see @ref AB_TRANSACTION_LIMITS_needDate)
*/
AQBANKING_API int AB_TransactionLimits_GetNeedDate(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "minValueSetupTime" (see @ref AB_TRANSACTION_LIMITS_minValueSetupTime)
*/
AQBANKING_API int AB_TransactionLimits_GetMinValueSetupTime(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "maxValueSetupTime" (see @ref AB_TRANSACTION_LIMITS_maxValueSetupTime)
*/
AQBANKING_API int AB_TransactionLimits_GetMaxValueSetupTime(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "minValueSetupTimeFirst" (see @ref AB_TRANSACTION_LIMITS_minValueSetupTimeFirst)
*/
AQBANKING_API int AB_TransactionLimits_GetMinValueSetupTimeFirst(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "maxValueSetupTimeFirst" (see @ref AB_TRANSACTION_LIMITS_maxValueSetupTimeFirst)
*/
AQBANKING_API int AB_TransactionLimits_GetMaxValueSetupTimeFirst(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "minValueSetupTimeOnce" (see @ref AB_TRANSACTION_LIMITS_minValueSetupTimeOnce)
*/
AQBANKING_API int AB_TransactionLimits_GetMinValueSetupTimeOnce(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "maxValueSetupTimeOnce" (see @ref AB_TRANSACTION_LIMITS_maxValueSetupTimeOnce)
*/
AQBANKING_API int AB_TransactionLimits_GetMaxValueSetupTimeOnce(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "minValueSetupTimeRecurring" (see @ref AB_TRANSACTION_LIMITS_minValueSetupTimeRecurring)
*/
AQBANKING_API int AB_TransactionLimits_GetMinValueSetupTimeRecurring(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "maxValueSetupTimeRecurring" (see @ref AB_TRANSACTION_LIMITS_maxValueSetupTimeRecurring)
*/
AQBANKING_API int AB_TransactionLimits_GetMaxValueSetupTimeRecurring(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "minValueSetupTimeFinal" (see @ref AB_TRANSACTION_LIMITS_minValueSetupTimeFinal)
*/
AQBANKING_API int AB_TransactionLimits_GetMinValueSetupTimeFinal(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "maxValueSetupTimeFinal" (see @ref AB_TRANSACTION_LIMITS_maxValueSetupTimeFinal)
*/
AQBANKING_API int AB_TransactionLimits_GetMaxValueSetupTimeFinal(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "valuesCycleWeek" (see @ref AB_TRANSACTION_LIMITS_valuesCycleWeek)
*/
AQBANKING_API const uint8_t *AB_TransactionLimits_GetValuesCycleWeek(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "valuesCycleWeekUsed" (see @ref AB_TRANSACTION_LIMITS_valuesCycleWeekUsed)
*/
AQBANKING_API int AB_TransactionLimits_GetValuesCycleWeekUsed(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "valuesCycleMonth" (see @ref AB_TRANSACTION_LIMITS_valuesCycleMonth)
*/
AQBANKING_API const uint8_t *AB_TransactionLimits_GetValuesCycleMonth(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "valuesCycleMonthUsed" (see @ref AB_TRANSACTION_LIMITS_valuesCycleMonthUsed)
*/
AQBANKING_API int AB_TransactionLimits_GetValuesCycleMonthUsed(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "valuesExecutionDayWeek" (see @ref AB_TRANSACTION_LIMITS_valuesExecutionDayWeek)
*/
AQBANKING_API const uint8_t *AB_TransactionLimits_GetValuesExecutionDayWeek(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "valuesExecutionDayWeekUsed" (see @ref AB_TRANSACTION_LIMITS_valuesExecutionDayWeekUsed)
*/
AQBANKING_API int AB_TransactionLimits_GetValuesExecutionDayWeekUsed(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "valuesExecutionDayMonth" (see @ref AB_TRANSACTION_LIMITS_valuesExecutionDayMonth)
*/
AQBANKING_API const uint8_t *AB_TransactionLimits_GetValuesExecutionDayMonth(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "valuesExecutionDayMonthUsed" (see @ref AB_TRANSACTION_LIMITS_valuesExecutionDayMonthUsed)
*/
AQBANKING_API int AB_TransactionLimits_GetValuesExecutionDayMonthUsed(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "allowMonthly" (see @ref AB_TRANSACTION_LIMITS_allowMonthly)
*/
AQBANKING_API int AB_TransactionLimits_GetAllowMonthly(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "allowWeekly" (see @ref AB_TRANSACTION_LIMITS_allowWeekly)
*/
AQBANKING_API int AB_TransactionLimits_GetAllowWeekly(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "allowChangeRecipientAccount" (see @ref AB_TRANSACTION_LIMITS_allowChangeRecipientAccount)
*/
AQBANKING_API int AB_TransactionLimits_GetAllowChangeRecipientAccount(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "allowChangeRecipientName" (see @ref AB_TRANSACTION_LIMITS_allowChangeRecipientName)
*/
AQBANKING_API int AB_TransactionLimits_GetAllowChangeRecipientName(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "allowChangeValue" (see @ref AB_TRANSACTION_LIMITS_allowChangeValue)
*/
AQBANKING_API int AB_TransactionLimits_GetAllowChangeValue(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "allowChangeTextKey" (see @ref AB_TRANSACTION_LIMITS_allowChangeTextKey)
*/
AQBANKING_API int AB_TransactionLimits_GetAllowChangeTextKey(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "allowChangePurpose" (see @ref AB_TRANSACTION_LIMITS_allowChangePurpose)
*/
AQBANKING_API int AB_TransactionLimits_GetAllowChangePurpose(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "allowChangeFirstExecutionDate" (see @ref AB_TRANSACTION_LIMITS_allowChangeFirstExecutionDate)
*/
AQBANKING_API int AB_TransactionLimits_GetAllowChangeFirstExecutionDate(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "allowChangeLastExecutionDate" (see @ref AB_TRANSACTION_LIMITS_allowChangeLastExecutionDate)
*/
AQBANKING_API int AB_TransactionLimits_GetAllowChangeLastExecutionDate(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "allowChangeCycle" (see @ref AB_TRANSACTION_LIMITS_allowChangeCycle)
*/
AQBANKING_API int AB_TransactionLimits_GetAllowChangeCycle(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "allowChangePeriod" (see @ref AB_TRANSACTION_LIMITS_allowChangePeriod)
*/
AQBANKING_API int AB_TransactionLimits_GetAllowChangePeriod(const AB_TRANSACTION_LIMITS *p_struct);

/** Getter.
 * Use this function to get the member "allowChangeExecutionDay" (see @ref AB_TRANSACTION_LIMITS_allowChangeExecutionDay)
*/
AQBANKING_API int AB_TransactionLimits_GetAllowChangeExecutionDay(const AB_TRANSACTION_LIMITS *p_struct);

/** Setter.
 * Use this function to set the member "command" (see @ref AB_TRANSACTION_LIMITS_command)
*/
AQBANKING_API void AB_TransactionLimits_SetCommand(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "maxLenLocalName" (see @ref AB_TRANSACTION_LIMITS_maxLenLocalName)
*/
AQBANKING_API void AB_TransactionLimits_SetMaxLenLocalName(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "minLenLocalName" (see @ref AB_TRANSACTION_LIMITS_minLenLocalName)
*/
AQBANKING_API void AB_TransactionLimits_SetMinLenLocalName(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "maxLenRemoteName" (see @ref AB_TRANSACTION_LIMITS_maxLenRemoteName)
*/
AQBANKING_API void AB_TransactionLimits_SetMaxLenRemoteName(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "minLenRemoteName" (see @ref AB_TRANSACTION_LIMITS_minLenRemoteName)
*/
AQBANKING_API void AB_TransactionLimits_SetMinLenRemoteName(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "maxLenCustomerReference" (see @ref AB_TRANSACTION_LIMITS_maxLenCustomerReference)
*/
AQBANKING_API void AB_TransactionLimits_SetMaxLenCustomerReference(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "minLenCustomerReference" (see @ref AB_TRANSACTION_LIMITS_minLenCustomerReference)
*/
AQBANKING_API void AB_TransactionLimits_SetMinLenCustomerReference(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "maxLenBankReference" (see @ref AB_TRANSACTION_LIMITS_maxLenBankReference)
*/
AQBANKING_API void AB_TransactionLimits_SetMaxLenBankReference(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "minLenBankReference" (see @ref AB_TRANSACTION_LIMITS_minLenBankReference)
*/
AQBANKING_API void AB_TransactionLimits_SetMinLenBankReference(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "maxLenPurpose" (see @ref AB_TRANSACTION_LIMITS_maxLenPurpose)
*/
AQBANKING_API void AB_TransactionLimits_SetMaxLenPurpose(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "minLenPurpose" (see @ref AB_TRANSACTION_LIMITS_minLenPurpose)
*/
AQBANKING_API void AB_TransactionLimits_SetMinLenPurpose(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "maxLinesPurpose" (see @ref AB_TRANSACTION_LIMITS_maxLinesPurpose)
*/
AQBANKING_API void AB_TransactionLimits_SetMaxLinesPurpose(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "minLinesPurpose" (see @ref AB_TRANSACTION_LIMITS_minLinesPurpose)
*/
AQBANKING_API void AB_TransactionLimits_SetMinLinesPurpose(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "needDate" (see @ref AB_TRANSACTION_LIMITS_needDate)
*/
AQBANKING_API void AB_TransactionLimits_SetNeedDate(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "minValueSetupTime" (see @ref AB_TRANSACTION_LIMITS_minValueSetupTime)
*/
AQBANKING_API void AB_TransactionLimits_SetMinValueSetupTime(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "maxValueSetupTime" (see @ref AB_TRANSACTION_LIMITS_maxValueSetupTime)
*/
AQBANKING_API void AB_TransactionLimits_SetMaxValueSetupTime(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "minValueSetupTimeFirst" (see @ref AB_TRANSACTION_LIMITS_minValueSetupTimeFirst)
*/
AQBANKING_API void AB_TransactionLimits_SetMinValueSetupTimeFirst(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "maxValueSetupTimeFirst" (see @ref AB_TRANSACTION_LIMITS_maxValueSetupTimeFirst)
*/
AQBANKING_API void AB_TransactionLimits_SetMaxValueSetupTimeFirst(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "minValueSetupTimeOnce" (see @ref AB_TRANSACTION_LIMITS_minValueSetupTimeOnce)
*/
AQBANKING_API void AB_TransactionLimits_SetMinValueSetupTimeOnce(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "maxValueSetupTimeOnce" (see @ref AB_TRANSACTION_LIMITS_maxValueSetupTimeOnce)
*/
AQBANKING_API void AB_TransactionLimits_SetMaxValueSetupTimeOnce(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "minValueSetupTimeRecurring" (see @ref AB_TRANSACTION_LIMITS_minValueSetupTimeRecurring)
*/
AQBANKING_API void AB_TransactionLimits_SetMinValueSetupTimeRecurring(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "maxValueSetupTimeRecurring" (see @ref AB_TRANSACTION_LIMITS_maxValueSetupTimeRecurring)
*/
AQBANKING_API void AB_TransactionLimits_SetMaxValueSetupTimeRecurring(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "minValueSetupTimeFinal" (see @ref AB_TRANSACTION_LIMITS_minValueSetupTimeFinal)
*/
AQBANKING_API void AB_TransactionLimits_SetMinValueSetupTimeFinal(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "maxValueSetupTimeFinal" (see @ref AB_TRANSACTION_LIMITS_maxValueSetupTimeFinal)
*/
AQBANKING_API void AB_TransactionLimits_SetMaxValueSetupTimeFinal(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "valuesCycleWeekUsed" (see @ref AB_TRANSACTION_LIMITS_valuesCycleWeekUsed)
*/
AQBANKING_API void AB_TransactionLimits_SetValuesCycleWeekUsed(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "valuesCycleMonthUsed" (see @ref AB_TRANSACTION_LIMITS_valuesCycleMonthUsed)
*/
AQBANKING_API void AB_TransactionLimits_SetValuesCycleMonthUsed(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "valuesExecutionDayWeekUsed" (see @ref AB_TRANSACTION_LIMITS_valuesExecutionDayWeekUsed)
*/
AQBANKING_API void AB_TransactionLimits_SetValuesExecutionDayWeekUsed(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "valuesExecutionDayMonthUsed" (see @ref AB_TRANSACTION_LIMITS_valuesExecutionDayMonthUsed)
*/
AQBANKING_API void AB_TransactionLimits_SetValuesExecutionDayMonthUsed(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "allowMonthly" (see @ref AB_TRANSACTION_LIMITS_allowMonthly)
*/
AQBANKING_API void AB_TransactionLimits_SetAllowMonthly(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "allowWeekly" (see @ref AB_TRANSACTION_LIMITS_allowWeekly)
*/
AQBANKING_API void AB_TransactionLimits_SetAllowWeekly(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "allowChangeRecipientAccount" (see @ref AB_TRANSACTION_LIMITS_allowChangeRecipientAccount)
*/
AQBANKING_API void AB_TransactionLimits_SetAllowChangeRecipientAccount(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "allowChangeRecipientName" (see @ref AB_TRANSACTION_LIMITS_allowChangeRecipientName)
*/
AQBANKING_API void AB_TransactionLimits_SetAllowChangeRecipientName(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "allowChangeValue" (see @ref AB_TRANSACTION_LIMITS_allowChangeValue)
*/
AQBANKING_API void AB_TransactionLimits_SetAllowChangeValue(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "allowChangeTextKey" (see @ref AB_TRANSACTION_LIMITS_allowChangeTextKey)
*/
AQBANKING_API void AB_TransactionLimits_SetAllowChangeTextKey(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "allowChangePurpose" (see @ref AB_TRANSACTION_LIMITS_allowChangePurpose)
*/
AQBANKING_API void AB_TransactionLimits_SetAllowChangePurpose(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "allowChangeFirstExecutionDate" (see @ref AB_TRANSACTION_LIMITS_allowChangeFirstExecutionDate)
*/
AQBANKING_API void AB_TransactionLimits_SetAllowChangeFirstExecutionDate(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "allowChangeLastExecutionDate" (see @ref AB_TRANSACTION_LIMITS_allowChangeLastExecutionDate)
*/
AQBANKING_API void AB_TransactionLimits_SetAllowChangeLastExecutionDate(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "allowChangeCycle" (see @ref AB_TRANSACTION_LIMITS_allowChangeCycle)
*/
AQBANKING_API void AB_TransactionLimits_SetAllowChangeCycle(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "allowChangePeriod" (see @ref AB_TRANSACTION_LIMITS_allowChangePeriod)
*/
AQBANKING_API void AB_TransactionLimits_SetAllowChangePeriod(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/** Setter.
 * Use this function to set the member "allowChangeExecutionDay" (see @ref AB_TRANSACTION_LIMITS_allowChangeExecutionDay)
*/
AQBANKING_API void AB_TransactionLimits_SetAllowChangeExecutionDay(AB_TRANSACTION_LIMITS *p_struct, int p_src);

/* list1 functions */
AQBANKING_API AB_TRANSACTION_LIMITS_LIST *AB_TransactionLimits_List_dup(const AB_TRANSACTION_LIMITS_LIST *p_src);

AQBANKING_API void AB_TransactionLimits_ReadDb(AB_TRANSACTION_LIMITS *p_struct, GWEN_DB_NODE *p_db);

AQBANKING_API int AB_TransactionLimits_WriteDb(const AB_TRANSACTION_LIMITS *p_struct, GWEN_DB_NODE *p_db);

AQBANKING_API AB_TRANSACTION_LIMITS *AB_TransactionLimits_fromDb(GWEN_DB_NODE *p_db);

AQBANKING_API int AB_TransactionLimits_toDb(const AB_TRANSACTION_LIMITS *p_struct, GWEN_DB_NODE *p_db);

AQBANKING_API void AB_TransactionLimits_ReadXml(AB_TRANSACTION_LIMITS *p_struct, GWEN_XMLNODE *p_db);

AQBANKING_API void AB_TransactionLimits_WriteXml(const AB_TRANSACTION_LIMITS *p_struct, GWEN_XMLNODE *p_db);

AQBANKING_API void AB_TransactionLimits_toXml(const AB_TRANSACTION_LIMITS *p_struct, GWEN_XMLNODE *p_db);

AQBANKING_API AB_TRANSACTION_LIMITS *AB_TransactionLimits_fromXml(GWEN_XMLNODE *p_db);

AQBANKING_API AB_TRANSACTION_LIMITS *AB_TransactionLimits_List_GetByCommand(const AB_TRANSACTION_LIMITS_LIST *p_list,
                                                                            int p_cmp);

AQBANKING_API uint8_t AB_TransactionLimits_GetValuesCycleWeekAt(const AB_TRANSACTION_LIMITS *p_struct, int idx);
AQBANKING_API int AB_TransactionLimits_SetValuesCycleWeekAt(AB_TRANSACTION_LIMITS *p_struct, int idx, uint8_t v);
AQBANKING_API void AB_TransactionLimits_PresetValuesCycleWeek(AB_TRANSACTION_LIMITS *p_struct, uint8_t v);
AQBANKING_API int AB_TransactionLimits_GetValuesCycleWeekArraySize(void);
AQBANKING_API uint8_t AB_TransactionLimits_GetValuesCycleMonthAt(const AB_TRANSACTION_LIMITS *p_struct, int idx);
AQBANKING_API int AB_TransactionLimits_SetValuesCycleMonthAt(AB_TRANSACTION_LIMITS *p_struct, int idx, uint8_t v);
AQBANKING_API void AB_TransactionLimits_PresetValuesCycleMonth(AB_TRANSACTION_LIMITS *p_struct, uint8_t v);
AQBANKING_API int AB_TransactionLimits_GetValuesCycleMonthArraySize(void);
AQBANKING_API uint8_t AB_TransactionLimits_GetValuesExecutionDayWeekAt(const AB_TRANSACTION_LIMITS *p_struct, int idx);
AQBANKING_API int AB_TransactionLimits_SetValuesExecutionDayWeekAt(AB_TRANSACTION_LIMITS *p_struct, int idx, uint8_t v);
AQBANKING_API void AB_TransactionLimits_PresetValuesExecutionDayWeek(AB_TRANSACTION_LIMITS *p_struct, uint8_t v);
AQBANKING_API int AB_TransactionLimits_GetValuesExecutionDayWeekArraySize(void);
AQBANKING_API uint8_t AB_TransactionLimits_GetValuesExecutionDayMonthAt(const AB_TRANSACTION_LIMITS *p_struct, int idx);
AQBANKING_API int AB_TransactionLimits_SetValuesExecutionDayMonthAt(AB_TRANSACTION_LIMITS *p_struct, int idx,
                                                                    uint8_t v);
AQBANKING_API void AB_TransactionLimits_PresetValuesExecutionDayMonth(AB_TRANSACTION_LIMITS *p_struct, uint8_t v);
AQBANKING_API int AB_TransactionLimits_GetValuesExecutionDayMonthArraySize(void);
AQBANKING_API int AB_TransactionLimits_ValuesCycleWeekAdd(AB_TRANSACTION_LIMITS *t, uint8_t v);
AQBANKING_API int AB_TransactionLimits_ValuesCycleWeekHas(const AB_TRANSACTION_LIMITS *t, uint8_t v);
AQBANKING_API int AB_TransactionLimits_ValuesCycleMonthAdd(AB_TRANSACTION_LIMITS *t, uint8_t v);
AQBANKING_API int AB_TransactionLimits_ValuesCycleMonthHas(const AB_TRANSACTION_LIMITS *t, uint8_t v);
AQBANKING_API int AB_TransactionLimits_ValuesExecutionDayWeekAdd(AB_TRANSACTION_LIMITS *t, uint8_t v);
AQBANKING_API int AB_TransactionLimits_ValuesExecutionDayWeekHas(const AB_TRANSACTION_LIMITS *t, uint8_t v);
AQBANKING_API int AB_TransactionLimits_ValuesExecutionDayMonthAdd(AB_TRANSACTION_LIMITS *t, uint8_t v);
AQBANKING_API int AB_TransactionLimits_ValuesExecutionDayMonthHas(const AB_TRANSACTION_LIMITS *t, uint8_t v);
/* end-headers */


#ifdef __cplusplus
}
#endif

#endif

