GnuCash c935c2f+
Loading...
Searching...
No Matches
gnc-commodity.h
Go to the documentation of this file.
1/********************************************************************
2 * gnc-commodity.h -- API for tradable commodities (incl. currency) *
3 * *
4 * This program is free software; you can redistribute it and/or *
5 * modify it under the terms of the GNU General Public License as *
6 * published by the Free Software Foundation; either version 2 of *
7 * the License, or (at your option) any later version. *
8 * *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
13 * *
14 * You should have received a copy of the GNU General Public License*
15 * along with this program; if not, contact: *
16 * *
17 * Free Software Foundation Voice: +1-617-542-5942 *
18 * 51 Franklin Street, Fifth Floor Fax: +1-617-542-2652 *
19 * Boston, MA 02110-1301, USA gnu@gnu.org *
20 * *
21 *******************************************************************/
22
46#ifndef GNC_COMMODITY_H
47#define GNC_COMMODITY_H
48
49typedef struct _GncCommodityClass gnc_commodityClass;
50typedef struct _GncCommodityNamespaceClass gnc_commodity_namespaceClass;
51
52#include <glib.h>
53#include <glib/gi18n.h>
54
55#include "gnc-engine.h"
56
57#ifdef __cplusplus
58extern "C" {
59#endif
60
61/* --- type macros --- */
62#define GNC_TYPE_COMMODITY (gnc_commodity_get_type ())
63#define GNC_COMMODITY(o) \
64 (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_COMMODITY, gnc_commodity))
65#define GNC_COMMODITY_CLASS(k) \
66 (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_COMMODITY, gnc_commodityClass))
67#define GNC_IS_COMMODITY(o) \
68 (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_COMMODITY))
69#define GNC_IS_COMMODITY_CLASS(k) \
70 (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_COMMODITY))
71#define GNC_COMMODITY_GET_CLASS(o) \
72 (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_COMMODITY, gnc_commodityClass))
73GType gnc_commodity_get_type(void);
74
75/* --- type macros --- */
76#define GNC_TYPE_COMMODITY_NAMESPACE (gnc_commodity_namespace_get_type ())
77#define GNC_COMMODITY_NAMESPACE(o) \
78 (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_COMMODITY_NAMESPACE, gnc_commodity_namespace))
79#define GNC_COMMODITY_NAMESPACE_CLASS(k) \
80 (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_COMMODITY_NAMESPACE, gnc_commodity_namespaceClass))
81#define GNC_IS_COMMODITY_NAMESPACE(o) \
82 (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_COMMODITY_NAMESPACE))
83#define GNC_IS_COMMODITY_NAMESPACE_CLASS(k) \
84 (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_COMMODITY_NAMESPACE))
85#define GNC_COMMODITY_NAMESPACE_GET_CLASS(o) \
86 (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_COMMODITY_NAMESPACE, gnc_commodity_namespaceClass))
87GType gnc_commodity_namespace_get_type(void);
88
89
90#define GNC_COMMODITY_TABLE "gnc_commodity_table"
91
103#define GNC_COMMODITY_NS_LEGACY "GNC_LEGACY_CURRENCIES"
104#define GNC_COMMODITY_NS_TEMPLATE "template"
105/* The ISO define is deprecated in favor of CURRENCY */
106#define GNC_COMMODITY_NS_ISO "ISO4217"
107#define GNC_COMMODITY_NS_CURRENCY "CURRENCY"
108#define GNC_COMMODITY_NS_NONCURRENCY "NONCURRENCY"
109
110#define GNC_COMMODITY_NS_NONISO_GUI NC_("Commodity Type", "All non-currency")
111#define GNC_COMMODITY_NS_ISO_GUI NC_("Commodity Type", "Currencies")
112
116#define GNC_COMMODITY_MAX_FRACTION 1000000000
117
118typedef GList CommodityList;
119
128typedef enum
129{
130 SOURCE_SINGLE = 0,
141 SOURCE_MAX,
142 SOURCE_CURRENCY = SOURCE_MAX,
144
151gboolean gnc_quote_source_fq_installed (void);
152
159const char* gnc_quote_source_fq_version (void);
160
168
180gnc_quote_source *gnc_quote_source_add_new(const char * name, gboolean supported);
181
190/*@ dependent @*/
191gnc_quote_source *gnc_quote_source_lookup_by_internal(const char * internal_name);
192
203gnc_quote_source *gnc_quote_source_lookup_by_ti(QuoteSourceType type, gint index);
204
213gboolean gnc_quote_source_get_supported (const gnc_quote_source *source);
214
222QuoteSourceType gnc_quote_source_get_type (const gnc_quote_source *source);
223
231gint gnc_quote_source_get_index (const gnc_quote_source *source);
232
241/*@ dependent @*/
242const char *gnc_quote_source_get_user_name (const gnc_quote_source *source);
243
252/*@ dependent @*/
253const char *gnc_quote_source_get_internal_name (const gnc_quote_source *source);
254
294/*@ dependent @*/
295gnc_commodity * gnc_commodity_new(QofBook *book,
296 /*@ null @*/ const char * fullname,
297 /*@ null @*/ const char * commodity_namespace,
298 /*@ null @*/ const char * mnemonic,
299 /*@ null @*/ const char * cusip,
300 int fraction);
301
307void gnc_commodity_destroy(gnc_commodity * cm);
308
310void gnc_commodity_copy(gnc_commodity * dest, const gnc_commodity *src);
311
313gnc_commodity * gnc_commodity_clone(const gnc_commodity *src, QofBook *dest_book);
322gboolean gnc_commodity_get_auto_quote_control_flag (const gnc_commodity *cm);
323
333const char * gnc_commodity_get_mnemonic(const gnc_commodity * cm);
334
344const char * gnc_commodity_get_namespace(const gnc_commodity * cm);
345
354gnc_commodity_namespace *gnc_commodity_get_namespace_ds(const gnc_commodity * cm);
355
365const char * gnc_commodity_get_fullname(const gnc_commodity * cm);
366
377const char * gnc_commodity_get_printname(const gnc_commodity * cm);
378
394const char * gnc_commodity_get_cusip(const gnc_commodity * cm);
395
407const char * gnc_commodity_get_unique_name(const gnc_commodity * cm);
408
419int gnc_commodity_get_fraction(const gnc_commodity * cm);
420
430gboolean gnc_commodity_get_quote_flag(const gnc_commodity *cm);
431
440/*@ dependent @*/
441gnc_quote_source* gnc_commodity_get_quote_source(const gnc_commodity *cm);
442/*@ dependent @*/
443gnc_quote_source* gnc_commodity_get_default_quote_source(const gnc_commodity *cm);
444
455const char* gnc_commodity_get_quote_tz(const gnc_commodity *cm);
456
467const char* gnc_commodity_get_user_symbol(const gnc_commodity *cm);
468
478const char* gnc_commodity_get_default_symbol(const gnc_commodity *cm);
479
490const char*gnc_commodity_get_nice_symbol(const gnc_commodity *cm);
497void gnc_commodity_set_auto_quote_control_flag (gnc_commodity *cm, const gboolean flag);
498
509void gnc_commodity_set_mnemonic(gnc_commodity * cm, const char * mnemonic);
510
521void gnc_commodity_set_namespace(gnc_commodity * cm, const char * new_namespace);
522
533void gnc_commodity_set_fullname(gnc_commodity * cm, const char * fullname);
534
549void gnc_commodity_set_cusip(gnc_commodity * cm, const char * cusip);
550
561void gnc_commodity_set_fraction(gnc_commodity * cm, int smallest_fraction);
562
577void gnc_commodity_user_set_quote_flag(gnc_commodity *cm,
578 const gboolean flag);
579
589void gnc_commodity_set_quote_flag(gnc_commodity *cm, const gboolean flag);
590
600void gnc_commodity_set_quote_source(gnc_commodity *cm, gnc_quote_source *src);
601
613void gnc_commodity_set_quote_tz(gnc_commodity *cm, const char *tz);
614
623void gnc_commodity_set_user_symbol(gnc_commodity *cm, const char *user_symbol);
636void
637gnc_commodity_increment_usage_count(gnc_commodity *cm);
638
645void
646gnc_commodity_decrement_usage_count(gnc_commodity *cm);
660gboolean gnc_commodity_equiv(const gnc_commodity * a, const gnc_commodity * b);
661
666gboolean gnc_commodity_equal(const gnc_commodity * a, const gnc_commodity * b);
667
675int gnc_commodity_compare(const gnc_commodity * a, const gnc_commodity * b);
676
681int gnc_commodity_compare_void(const void * a, const void * b);
695gboolean gnc_commodity_namespace_is_iso(const char *commodity_namespace);
696
702gboolean gnc_commodity_is_iso(const gnc_commodity * cm);
703
710gboolean gnc_commodity_is_currency(const gnc_commodity *cm);
711
715/* =============================================================== */
722/*@ dependent @*/
723gnc_commodity_table * gnc_commodity_table_get_table(QofBook *book);
724
726/* ---------------------------------------------------------- */
730gnc_commodity * gnc_commodity_table_lookup(const gnc_commodity_table * table,
731 const char * commodity_namespace,
732 const char * mnemonic);
733gnc_commodity *
734gnc_commodity_table_lookup_unique(const gnc_commodity_table *table,
735 const char * unique_name);
736gnc_commodity * gnc_commodity_table_find_full(const gnc_commodity_table * t,
737 const char * commodity_namespace,
738 const char * fullname);
739
740/*@ dependent @*/
741gnc_commodity * gnc_commodity_find_commodity_by_guid(const GncGUID *guid,
742 QofBook *book);
743
745/* ---------------------------------------------------------- */
746
765/*@ dependent @*/
766gnc_commodity * gnc_commodity_table_insert(gnc_commodity_table * table,
767 gnc_commodity * comm);
768
775void gnc_commodity_table_remove(gnc_commodity_table * table,
776 gnc_commodity * comm);
777
786gboolean gnc_commodity_table_add_default_data(gnc_commodity_table *table, QofBook *book);
787
789/* ---------------------------------------------------------- */
800const char * gnc_commodity_namespace_get_name (const gnc_commodity_namespace *ns) ;
801
813const char * gnc_commodity_namespace_get_gui_name (const gnc_commodity_namespace *ns) ;
814
815
822GList * gnc_commodity_namespace_get_commodity_list(const gnc_commodity_namespace * ns);
823
824
833int gnc_commodity_table_has_namespace(const gnc_commodity_table * table,
834 const char * commodity_namespace);
835
843GList * gnc_commodity_table_get_namespaces(const gnc_commodity_table * t);
844
852GList * gnc_commodity_table_get_namespaces_list(const gnc_commodity_table * t);
853
864gnc_commodity_namespace * gnc_commodity_table_add_namespace(gnc_commodity_table * table,
865 const char * commodity_namespace,
866 QofBook *book);
867
876gnc_commodity_namespace * gnc_commodity_table_find_namespace(const gnc_commodity_table * table,
877 const char * commodity_namespace);
878
888void gnc_commodity_table_delete_namespace(gnc_commodity_table * table,
889 const char * commodity_namespace);
891/* ---------------------------------------------------------- */
902guint gnc_commodity_table_get_size(const gnc_commodity_table* tbl);
903
917 const gnc_commodity_table * table, const char * commodity_namespace);
918
937 const gnc_commodity_table * table);
938
949gboolean gnc_commodity_table_foreach_commodity(const gnc_commodity_table * table,
950 gboolean (*f)(gnc_commodity *cm,
951 gpointer user_data),
952 gpointer user_data);
956/* ---------------------------------------------------------- */
965gnc_commodity_table * gnc_commodity_table_new(void);
966void gnc_commodity_table_destroy(gnc_commodity_table * table);
967
973gnc_commodity * gnc_commodity_obtain_twin (const gnc_commodity *findlike, QofBook *book);
974
979gboolean gnc_commodity_table_register (void);
980
981void gnc_commodity_begin_edit (gnc_commodity *cm);
982void gnc_commodity_commit_edit (gnc_commodity *cm);
983
987#define gnc_commodity_get_kvp_frame(cm) \
988 qof_instance_get_slots(QOF_INSTANCE(cm))
989
996{
997 gnc_commodity *commodity;
998 gnc_numeric value;
999};
1000
1001typedef struct _gnc_monetary gnc_monetary;
1002
1003/* A list of monetary values. This could be a hash table, but as currently
1004* used it rarely contains more than one or two different commodities so
1005* it doesn't seem worth the trouble.
1006*/
1007typedef GList MonetaryList;
1008
1012static inline
1013gnc_monetary gnc_monetary_create(gnc_commodity *commod, gnc_numeric val)
1014{
1015 gnc_monetary out;
1016 out.commodity = commod;
1017 out.value = val;
1018 return out;
1019}
1025static inline
1026gnc_commodity * gnc_monetary_commodity(gnc_monetary a)
1027{
1028 return a.commodity;
1029}
1030
1031static inline
1032gnc_numeric gnc_monetary_value(gnc_monetary a)
1033{
1034 return a.value;
1035}
1043MonetaryList *gnc_monetary_list_add_monetary(MonetaryList *list, gnc_monetary mon);
1044
1046static inline
1047MonetaryList *gnc_monetary_list_add_value(MonetaryList *list,
1048 gnc_commodity *commod,
1049 gnc_numeric value)
1050{
1052 gnc_monetary_create(commod, value));
1053}
1054
1056MonetaryList *gnc_monetary_list_delete_zeros(MonetaryList *list);
1057
1059void gnc_monetary_list_free(MonetaryList *list);
1064#ifdef __cplusplus
1065} /* extern "C" */
1066#endif
1067
1068#endif /* GNC_COMMODITY_H */
All type declarations for the whole Gnucash engine.
int gnc_commodity_table_has_namespace(const gnc_commodity_table *table, const char *commodity_namespace)
Test to see if the indicated namespace exits in the commodity table.
const char * gnc_quote_source_fq_version(void)
This function returns the version of the Finance::Quote module installed on a user's computer.
gboolean gnc_commodity_equiv(const gnc_commodity *a, const gnc_commodity *b)
This routine returns TRUE if the two commodities are equivalent.
gboolean gnc_commodity_equal(const gnc_commodity *a, const gnc_commodity *b)
This routine returns TRUE if the two commodities are equal.
CommodityList * gnc_commodity_table_get_quotable_commodities(const gnc_commodity_table *table)
This function returns a list of commodities for which price quotes should be retrieved.
const char * gnc_quote_source_get_user_name(const gnc_quote_source *source)
Given a gnc_quote_source data structure, return the user friendly name of this quote source.
guint gnc_commodity_table_get_size(const gnc_commodity_table *tbl)
Returns the number of commodities in the commodity table.
void gnc_commodity_set_cusip(gnc_commodity *cm, const char *cusip)
Set the 'exchange code' for the specified commodity.
int gnc_commodity_compare(const gnc_commodity *a, const gnc_commodity *b)
This routine returns 0 if the two commodities are equal, 1 otherwise.
const char * gnc_commodity_get_fullname(const gnc_commodity *cm)
Retrieve the full name for the specified commodity.
gboolean gnc_quote_source_get_supported(const gnc_quote_source *source)
Given a gnc_quote_source data structure, return the flag that indicates whether this particular quote...
const char * gnc_commodity_get_user_symbol(const gnc_commodity *cm)
Retrieve the user-defined symbol for the specified commodity.
gnc_commodity_namespace * gnc_commodity_table_find_namespace(const gnc_commodity_table *table, const char *commodity_namespace)
This function finds a commodity namespace in the set of existing commodity namespaces.
void gnc_commodity_table_remove(gnc_commodity_table *table, gnc_commodity *comm)
Remove a commodity from the commodity table.
gboolean gnc_quote_source_fq_installed(void)
This function indicates whether or not the Finance::Quote module is installed on a user's computer.
void gnc_commodity_set_namespace(gnc_commodity *cm, const char *new_namespace)
Set the namespace for the specified commodity.
gint gnc_quote_source_get_index(const gnc_quote_source *source)
Given a gnc_quote_source data structure, return the index of this particular quote source within its ...
gnc_quote_source * gnc_quote_source_add_new(const char *name, gboolean supported)
Create a new quote source.
const char * gnc_commodity_get_namespace(const gnc_commodity *cm)
Retrieve the namespace for the specified commodity.
const char * gnc_quote_source_get_internal_name(const gnc_quote_source *source)
Given a gnc_quote_source data structure, return the internal name of this quote source.
int gnc_commodity_get_fraction(const gnc_commodity *cm)
Retrieve the fraction for the specified commodity.
gnc_commodity_namespace * gnc_commodity_table_add_namespace(gnc_commodity_table *table, const char *commodity_namespace, QofBook *book)
This function adds a new string to the list of commodity namespaces.
gnc_commodity * gnc_commodity_new(QofBook *book, const char *fullname, const char *commodity_namespace, const char *mnemonic, const char *cusip, int fraction)
Create a new commodity.
void gnc_commodity_set_fullname(gnc_commodity *cm, const char *fullname)
Set the full name for the specified commodity.
GList * gnc_commodity_namespace_get_commodity_list(const gnc_commodity_namespace *ns)
Return a list of all commodity data structures in the specified namespace.
void gnc_commodity_set_quote_flag(gnc_commodity *cm, const gboolean flag)
Set the automatic price quote flag for the specified commodity.
MonetaryList * gnc_monetary_list_add_monetary(MonetaryList *list, gnc_monetary mon)
Add a gnc_monetary to the list.
gnc_commodity * gnc_commodity_obtain_twin(const gnc_commodity *findlike, QofBook *book)
Given the commodity 'findlike', this routine will find and return the equivalent commodity (commodity...
gboolean gnc_commodity_namespace_is_iso(const char *commodity_namespace)
Checks to see if the specified commodity namespace is the namespace for ISO 4217 currencies.
gboolean gnc_commodity_table_add_default_data(gnc_commodity_table *table, QofBook *book)
Add all the standard namespaces and currencies to the commodity table.
const char * gnc_commodity_get_quote_tz(const gnc_commodity *cm)
Retrieve the automatic price quote timezone for the specified commodity.
const char * gnc_commodity_get_default_symbol(const gnc_commodity *cm)
Retrieve the default symbol for the specified commodity.
const char * gnc_commodity_get_nice_symbol(const gnc_commodity *cm)
Retrieve a symbol for the specified commodity, suitable for display to the user.
void gnc_commodity_set_quote_source(gnc_commodity *cm, gnc_quote_source *src)
Set the automatic price quote source for the specified commodity.
int gnc_commodity_compare_void(const void *a, const void *b)
A wrapper around gnc_commodity_compare() which offers the function declaration that is needed for g_l...
gnc_commodity_table * gnc_commodity_table_get_table(QofBook *book)
Returns the commodity table associated with a book.
gboolean gnc_commodity_table_foreach_commodity(const gnc_commodity_table *table, gboolean(*f)(gnc_commodity *cm, gpointer user_data), gpointer user_data)
Call a function once for each commodity in the commodity table.
void gnc_commodity_set_fraction(gnc_commodity *cm, int smallest_fraction)
Set the fraction for the specified commodity.
gboolean gnc_commodity_table_register(void)
You should probably not be using gnc_commodity_table_register() It is an internal routine for registe...
gnc_quote_source * gnc_commodity_get_quote_source(const gnc_commodity *cm)
Retrieve the automatic price quote source for the specified commodity.
const char * gnc_commodity_get_cusip(const gnc_commodity *cm)
Retrieve the 'exchange code' for the specified commodity.
gnc_quote_source * gnc_quote_source_lookup_by_ti(QuoteSourceType type, gint index)
Given the type/index of a quote source, find the data structure identified by this pair.
gnc_quote_source * gnc_quote_source_lookup_by_internal(const char *internal_name)
Given the internal (gnucash or F::Q) name of a quote source, find the data structure identified by th...
void gnc_commodity_table_delete_namespace(gnc_commodity_table *table, const char *commodity_namespace)
This function deletes a string from the list of commodity namespaces.
void gnc_commodity_increment_usage_count(gnc_commodity *cm)
Increment a commodity's internal counter that tracks how many accounts are using that commodity.
gnc_commodity * gnc_commodity_table_insert(gnc_commodity_table *table, gnc_commodity *comm)
Add a new commodity to the commodity table.
const char * gnc_commodity_get_printname(const gnc_commodity *cm)
Retrieve the 'print' name for the specified commodity.
GList * gnc_commodity_table_get_namespaces(const gnc_commodity_table *t)
Return a list of all namespaces in the commodity table.
QuoteSourceType
The quote source type enum account types are used to determine how the transaction data in the accoun...
MonetaryList * gnc_monetary_list_delete_zeros(MonetaryList *list)
Delete all the zero-value entries from a list.
GList * gnc_commodity_table_get_namespaces_list(const gnc_commodity_table *t)
Return a list of all namespace data structures in the commodity table.
void gnc_commodity_set_user_symbol(gnc_commodity *cm, const char *user_symbol)
Set a user-defined symbol for the specified commodity.
void gnc_commodity_decrement_usage_count(gnc_commodity *cm)
Decrement a commodity's internal counter that tracks how many accounts are using that commodity.
gnc_commodity * gnc_commodity_clone(const gnc_commodity *src, QofBook *dest_book)
allocate and copy
void gnc_commodity_user_set_quote_flag(gnc_commodity *cm, const gboolean flag)
Set the automatic price quote flag for the specified commodity, based on user input.
void gnc_monetary_list_free(MonetaryList *list)
Free a monetary list and all the items it points to.
gboolean gnc_commodity_is_iso(const gnc_commodity *cm)
Checks to see if the specified commodity is an ISO 4217 recognized currency.
gnc_commodity_namespace * gnc_commodity_get_namespace_ds(const gnc_commodity *cm)
Retrieve the namespace data structure for the specified commodity.
gnc_commodity_table * gnc_commodity_table_new(void)
You probably shouldn't be using gnc_commodity_table_new() directly, it's for internal use only.
void gnc_commodity_destroy(gnc_commodity *cm)
Destroy a commodity.
const char * gnc_commodity_namespace_get_name(const gnc_commodity_namespace *ns)
Return the textual name of a namespace data structure.
const char * gnc_commodity_get_mnemonic(const gnc_commodity *cm)
Retrieve the mnemonic for the specified commodity.
gboolean gnc_commodity_get_quote_flag(const gnc_commodity *cm)
Retrieve the automatic price quote flag for the specified commodity.
void gnc_commodity_set_mnemonic(gnc_commodity *cm, const char *mnemonic)
Set the mnemonic for the specified commodity.
const char * gnc_commodity_namespace_get_gui_name(const gnc_commodity_namespace *ns)
Return the textual name of a namespace data structure in a form suitable to present to the user.
void gnc_commodity_set_quote_tz(gnc_commodity *cm, const char *tz)
Set the automatic price quote timezone for the specified commodity.
QuoteSourceType gnc_quote_source_get_type(const gnc_quote_source *source)
Given a gnc_quote_source data structure, return the type of this particular quote source.
CommodityList * gnc_commodity_table_get_commodities(const gnc_commodity_table *table, const char *commodity_namespace)
Return a list of all commodities in the commodity table that are in the given namespace.
const char * gnc_commodity_get_unique_name(const gnc_commodity *cm)
Retrieve the 'unique' name for the specified commodity.
void gnc_commodity_copy(gnc_commodity *dest, const gnc_commodity *src)
Copy src into dest.
gboolean gnc_commodity_is_currency(const gnc_commodity *cm)
Checks to see if the specified commodity is an ISO 4217 recognized currency or a legacy currency.
gint gnc_quote_source_num_entries(QuoteSourceType type)
Return the number of entries for a given type of quote source.
@ SOURCE_MULTI
This quote source may pull from multiple web sites.
@ SOURCE_SINGLE
This quote source pulls from a single specific web site.
@ SOURCE_CURRENCY
The special currency quote source.
@ SOURCE_UNKNOWN
This is a locally installed quote source that gnucash knows nothing about.
The type used to store guids in C.
Definition guid.h:75
QofBook reference.
Definition qofbook-p.hpp:47