/* This file is auto-generated from "split.xml" by the typemaker
   tool of Gwenhywfar. 
   Do not edit this file -- all changes will be lost! */
#ifndef SPLIT_H
#define SPLIT_H

/** @page P_AB_SPLIT_PUBLIC AB_Split (public)
This page describes the properties of AB_SPLIT
This type contains all important information about transaction splits. Please note that all text fields are in UTF-8.<h3>Account Info</h3>
<p>
This group contains information about the remote account.</p>
@anchor AB_SPLIT_Country
<h4>Country</h4>
<p>
This is the two-character ISO country code (as used in toplevel domains). For Germany use &quot;DE&quot;.</p>
<p>
Set this property with @ref AB_Split_SetCountry, 
get it with @ref AB_Split_GetCountry
</p>

@anchor AB_SPLIT_BankCode
<h4>BankCode</h4>
<p>
</p>
<p>
Set this property with @ref AB_Split_SetBankCode, 
get it with @ref AB_Split_GetBankCode
</p>

@anchor AB_SPLIT_BranchId
<h4>BranchId</h4>
<p>
This is the branch id of the remote bank (OFX only)</p>
<p>
Set this property with @ref AB_Split_SetBranchId, 
get it with @ref AB_Split_GetBranchId
</p>

@anchor AB_SPLIT_AccountNumber
<h4>AccountNumber</h4>
<p>
</p>
<p>
Set this property with @ref AB_Split_SetAccountNumber, 
get it with @ref AB_Split_GetAccountNumber
</p>

@anchor AB_SPLIT_Suffix
<h4>Suffix</h4>
<p>
</p>
<p>
Set this property with @ref AB_Split_SetSuffix, 
get it with @ref AB_Split_GetSuffix
</p>

@anchor AB_SPLIT_Name
<h4>Name</h4>
<p>
</p>
<p>
Set this property with @ref AB_Split_SetName, 
get it with @ref AB_Split_GetName
</p>

<h3>Value</h3>
<p>
</p>
@anchor AB_SPLIT_Value
<h4>Value</h4>
<p>
</p>
<p>
Set this property with @ref AB_Split_SetValue, 
get it with @ref AB_Split_GetValue
</p>

@anchor AB_SPLIT_Purpose
<h3>Purpose</h3>
<p>
<p>This string list contains the purpose of the split. Every entry of this list represents a single purpose line.</p></p>
<p>
Set this property with @ref AB_Split_SetPurpose, 
get it with @ref AB_Split_GetPurpose
</p>

@anchor AB_SPLIT_Category
<h3>Category</h3>
<p>
<p>This string list contains the categories this split belongs to. This element is not used by AqBanking itself but some im/exporter plugins may choose to use these.</p></p>
<p>
Set this property with @ref AB_Split_SetCategory, 
get it with @ref AB_Split_GetCategory
</p>

*/
#ifdef __cplusplus
extern "C" {
#endif

typedef struct AB_SPLIT AB_SPLIT;

#ifdef __cplusplus
} /* __cplusplus */
#endif

#include <gwenhywfar/db.h>
#include <gwenhywfar/inherit.h>
#include <gwenhywfar/misc.h>
#include <gwenhywfar/list2.h>
/* headers */
#include <gwenhywfar/types.h>
#include <gwenhywfar/gwentime.h>
#include <gwenhywfar/stringlist.h>
#include <aqbanking/value.h>

#ifdef __cplusplus
extern "C" {
#endif


GWEN_INHERIT_FUNCTION_LIB_DEFS(AB_SPLIT, AQBANKING_API)
GWEN_LIST_FUNCTION_LIB_DEFS(AB_SPLIT, AB_Split, AQBANKING_API)
AQBANKING_API AB_SPLIT_LIST *AB_Split_List_dup(const AB_SPLIT_LIST *stl);

GWEN_LIST2_FUNCTION_LIB_DEFS(AB_SPLIT, AB_Split, AQBANKING_API)

/** Destroys all objects stored in the given LIST2 and the list itself
*/
AQBANKING_API void AB_Split_List2_freeAll(AB_SPLIT_LIST2 *stl);

/** Creates a new object.
*/
AQBANKING_API AB_SPLIT *AB_Split_new();
/** Creates an object from the data in the given GWEN_DB_NODE
*/
AQBANKING_API AB_SPLIT *AB_Split_fromDb(GWEN_DB_NODE *db);
/** Creates and returns a deep copy of thegiven object.
*/
AQBANKING_API AB_SPLIT *AB_Split_dup(const AB_SPLIT*st);
/** Destroys the given object.
*/
AQBANKING_API void AB_Split_free(AB_SPLIT *st);
/** Increments the usage counter of the given object, so an additional free() is needed to destroy the object.
*/
AQBANKING_API void AB_Split_Attach(AB_SPLIT *st);
/** Reads data from a GWEN_DB.
*/
AQBANKING_API int AB_Split_ReadDb(AB_SPLIT *st, GWEN_DB_NODE *db);
/** Stores an object in the given GWEN_DB_NODE
*/
AQBANKING_API int AB_Split_toDb(const AB_SPLIT*st, GWEN_DB_NODE *db);
/** Returns 0 if this object has not been modified, !=0 otherwise
*/
AQBANKING_API int AB_Split_IsModified(const AB_SPLIT *st);
/** Sets the modified state of the given object
*/
AQBANKING_API void AB_Split_SetModified(AB_SPLIT *st, int i);


/** @name Account Info
 *
This group contains information about the remote account.*/
/*@{*/

/**
* Returns the property @ref AB_SPLIT_Country
*/
AQBANKING_API const char *AB_Split_GetCountry(const AB_SPLIT *el);
/**
* Set the property @ref AB_SPLIT_Country
*/
AQBANKING_API void AB_Split_SetCountry(AB_SPLIT *el, const char *d);

/**
* Returns the property @ref AB_SPLIT_BankCode
*/
AQBANKING_API const char *AB_Split_GetBankCode(const AB_SPLIT *el);
/**
* Set the property @ref AB_SPLIT_BankCode
*/
AQBANKING_API void AB_Split_SetBankCode(AB_SPLIT *el, const char *d);

/**
* Returns the property @ref AB_SPLIT_BranchId
*/
AQBANKING_API const char *AB_Split_GetBranchId(const AB_SPLIT *el);
/**
* Set the property @ref AB_SPLIT_BranchId
*/
AQBANKING_API void AB_Split_SetBranchId(AB_SPLIT *el, const char *d);

/**
* Returns the property @ref AB_SPLIT_AccountNumber
*/
AQBANKING_API const char *AB_Split_GetAccountNumber(const AB_SPLIT *el);
/**
* Set the property @ref AB_SPLIT_AccountNumber
*/
AQBANKING_API void AB_Split_SetAccountNumber(AB_SPLIT *el, const char *d);

/**
* Returns the property @ref AB_SPLIT_Suffix
*/
AQBANKING_API const char *AB_Split_GetSuffix(const AB_SPLIT *el);
/**
* Set the property @ref AB_SPLIT_Suffix
*/
AQBANKING_API void AB_Split_SetSuffix(AB_SPLIT *el, const char *d);

/**
* Returns the property @ref AB_SPLIT_Name
*/
AQBANKING_API const GWEN_STRINGLIST *AB_Split_GetName(const AB_SPLIT *el);
/**
* Set the property @ref AB_SPLIT_Name
*/
AQBANKING_API void AB_Split_SetName(AB_SPLIT *el, const GWEN_STRINGLIST *d);
AQBANKING_API void AB_Split_AddName(AB_SPLIT *st, const char *d, int chk);
AQBANKING_API void AB_Split_RemoveName(AB_SPLIT *st, const char *d);
AQBANKING_API void AB_Split_ClearName(AB_SPLIT *st);
AQBANKING_API int AB_Split_HasName(const AB_SPLIT *st, const char *d);

/*@}*/

/** @name Value
*/
/*@{*/
/**
* Returns the property @ref AB_SPLIT_Value
*/
AQBANKING_API const AB_VALUE *AB_Split_GetValue(const AB_SPLIT *el);
/**
* Set the property @ref AB_SPLIT_Value
*/
AQBANKING_API void AB_Split_SetValue(AB_SPLIT *el, const AB_VALUE *d);

/*@}*/

/**
* Returns the property @ref AB_SPLIT_Purpose
*/
AQBANKING_API const GWEN_STRINGLIST *AB_Split_GetPurpose(const AB_SPLIT *el);
/**
* Set the property @ref AB_SPLIT_Purpose
*/
AQBANKING_API void AB_Split_SetPurpose(AB_SPLIT *el, const GWEN_STRINGLIST *d);
AQBANKING_API void AB_Split_AddPurpose(AB_SPLIT *st, const char *d, int chk);
AQBANKING_API void AB_Split_RemovePurpose(AB_SPLIT *st, const char *d);
AQBANKING_API void AB_Split_ClearPurpose(AB_SPLIT *st);
AQBANKING_API int AB_Split_HasPurpose(const AB_SPLIT *st, const char *d);

/**
* Returns the property @ref AB_SPLIT_Category
*/
AQBANKING_API const GWEN_STRINGLIST *AB_Split_GetCategory(const AB_SPLIT *el);
/**
* Set the property @ref AB_SPLIT_Category
*/
AQBANKING_API void AB_Split_SetCategory(AB_SPLIT *el, const GWEN_STRINGLIST *d);
AQBANKING_API void AB_Split_AddCategory(AB_SPLIT *st, const char *d, int chk);
AQBANKING_API void AB_Split_RemoveCategory(AB_SPLIT *st, const char *d);
AQBANKING_API void AB_Split_ClearCategory(AB_SPLIT *st);
AQBANKING_API int AB_Split_HasCategory(const AB_SPLIT *st, const char *d);


#ifdef __cplusplus
} /* __cplusplus */
#endif


#endif /* SPLIT_H */
