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

/** @page P_AB_SECURITY_PUBLIC AB_Security (public)
This page describes the properties of AB_SECURITY
@anchor AB_SECURITY_Name
<h3>Name</h3>
<p>
Full name of the security.</p>
<p>
Set this property with @ref AB_Security_SetName, 
get it with @ref AB_Security_GetName
</p>

@anchor AB_SECURITY_UniqueId
<h3>UniqueId</h3>
<p>
Unique id of the security within the namespace.</p>
<p>
Set this property with @ref AB_Security_SetUniqueId, 
get it with @ref AB_Security_GetUniqueId
</p>

@anchor AB_SECURITY_NameSpace
<h3>NameSpace</h3>
<p>
Namespace for uniqueId (e.g. CUSIP for North America)</p>
<p>
Set this property with @ref AB_Security_SetNameSpace, 
get it with @ref AB_Security_GetNameSpace
</p>

@anchor AB_SECURITY_TickerSymbol
<h3>TickerSymbol</h3>
<p>
Ticker symbol of the security.</p>
<p>
Set this property with @ref AB_Security_SetTickerSymbol, 
get it with @ref AB_Security_GetTickerSymbol
</p>

@anchor AB_SECURITY_Units
<h3>Units</h3>
<p>
Number of units held (e.g. number of stock units etc)</p>
<p>
Set this property with @ref AB_Security_SetUnits, 
get it with @ref AB_Security_GetUnits
</p>

@anchor AB_SECURITY_UnitPriceValue
<h3>UnitPriceValue</h3>
<p>
Price of a unit as of unitPriceDate.</p>
<p>
Set this property with @ref AB_Security_SetUnitPriceValue, 
get it with @ref AB_Security_GetUnitPriceValue
</p>

@anchor AB_SECURITY_UnitPriceDate
<h3>UnitPriceDate</h3>
<p>
Date for the unitPriceValue</p>
<p>
Set this property with @ref AB_Security_SetUnitPriceDate, 
get it with @ref AB_Security_GetUnitPriceDate
</p>

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

typedef struct AB_SECURITY AB_SECURITY;

#ifdef __cplusplus
} /* __cplusplus */
#endif

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

#ifdef __cplusplus
extern "C" {
#endif


GWEN_LIST_FUNCTION_LIB_DEFS(AB_SECURITY, AB_Security, AQBANKING_API)
AQBANKING_API AB_SECURITY_LIST *AB_Security_List_dup(const AB_SECURITY_LIST *stl);

GWEN_LIST2_FUNCTION_LIB_DEFS(AB_SECURITY, AB_Security, AQBANKING_API)

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

/** Creates a new object.
*/
AQBANKING_API AB_SECURITY *AB_Security_new(void);
/** Creates an object from the data in the given GWEN_DB_NODE
*/
AQBANKING_API AB_SECURITY *AB_Security_fromDb(GWEN_DB_NODE *db);
/** Creates and returns a deep copy of thegiven object.
*/
AQBANKING_API AB_SECURITY *AB_Security_dup(const AB_SECURITY*st);
/** Destroys the given object.
*/
AQBANKING_API void AB_Security_free(AB_SECURITY *st);
/** Increments the usage counter of the given object, so an additional free() is needed to destroy the object.
*/
AQBANKING_API void AB_Security_Attach(AB_SECURITY *st);
/** Reads data from a GWEN_DB.
*/
AQBANKING_API int AB_Security_ReadDb(AB_SECURITY *st, GWEN_DB_NODE *db);
/** Stores an object in the given GWEN_DB_NODE
*/
AQBANKING_API int AB_Security_toDb(const AB_SECURITY*st, GWEN_DB_NODE *db);
/** Returns 0 if this object has not been modified, !=0 otherwise
*/
AQBANKING_API int AB_Security_IsModified(const AB_SECURITY *st);
/** Sets the modified state of the given object
*/
AQBANKING_API void AB_Security_SetModified(AB_SECURITY *st, int i);

/**
* Returns the property @ref AB_SECURITY_Name
*/
AQBANKING_API const char *AB_Security_GetName(const AB_SECURITY *el);
/**
* Set the property @ref AB_SECURITY_Name
*/
AQBANKING_API void AB_Security_SetName(AB_SECURITY *el, const char *d);

/**
* Returns the property @ref AB_SECURITY_UniqueId
*/
AQBANKING_API const char *AB_Security_GetUniqueId(const AB_SECURITY *el);
/**
* Set the property @ref AB_SECURITY_UniqueId
*/
AQBANKING_API void AB_Security_SetUniqueId(AB_SECURITY *el, const char *d);

/**
* Returns the property @ref AB_SECURITY_NameSpace
*/
AQBANKING_API const char *AB_Security_GetNameSpace(const AB_SECURITY *el);
/**
* Set the property @ref AB_SECURITY_NameSpace
*/
AQBANKING_API void AB_Security_SetNameSpace(AB_SECURITY *el, const char *d);

/**
* Returns the property @ref AB_SECURITY_TickerSymbol
*/
AQBANKING_API const char *AB_Security_GetTickerSymbol(const AB_SECURITY *el);
/**
* Set the property @ref AB_SECURITY_TickerSymbol
*/
AQBANKING_API void AB_Security_SetTickerSymbol(AB_SECURITY *el, const char *d);

/**
* Returns the property @ref AB_SECURITY_Units
*/
AQBANKING_API const AB_VALUE *AB_Security_GetUnits(const AB_SECURITY *el);
/**
* Set the property @ref AB_SECURITY_Units
*/
AQBANKING_API void AB_Security_SetUnits(AB_SECURITY *el, const AB_VALUE *d);

/**
* Returns the property @ref AB_SECURITY_UnitPriceValue
*/
AQBANKING_API const AB_VALUE *AB_Security_GetUnitPriceValue(const AB_SECURITY *el);
/**
* Set the property @ref AB_SECURITY_UnitPriceValue
*/
AQBANKING_API void AB_Security_SetUnitPriceValue(AB_SECURITY *el, const AB_VALUE *d);

/**
* Returns the property @ref AB_SECURITY_UnitPriceDate
*/
AQBANKING_API const GWEN_TIME *AB_Security_GetUnitPriceDate(const AB_SECURITY *el);
/**
* Set the property @ref AB_SECURITY_UnitPriceDate
*/
AQBANKING_API void AB_Security_SetUnitPriceDate(AB_SECURITY *el, const GWEN_TIME *d);


#ifdef __cplusplus
} /* __cplusplus */
#endif


#endif /* SECURITY_H */
