GnuCash  2.6.99
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
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 [email protected] *
20  * *
21  *******************************************************************/
22 
46 #ifndef GNC_COMMODITY_H
47 #define GNC_COMMODITY_H
48 
51 
52 #include <glib.h>
53 #include "gnc-engine.h"
54 
55 /* --- type macros --- */
56 #define GNC_TYPE_COMMODITY (gnc_commodity_get_type ())
57 #define GNC_COMMODITY(o) \
58  (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_COMMODITY, gnc_commodity))
59 #define GNC_COMMODITY_CLASS(k) \
60  (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_COMMODITY, gnc_commodityClass))
61 #define GNC_IS_COMMODITY(o) \
62  (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_COMMODITY))
63 #define GNC_IS_COMMODITY_CLASS(k) \
64  (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_COMMODITY))
65 #define GNC_COMMODITY_GET_CLASS(o) \
66  (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_COMMODITY, gnc_commodityClass))
67 GType gnc_commodity_get_type(void);
68 
69 /* --- type macros --- */
70 #define GNC_TYPE_COMMODITY_NAMESPACE (gnc_commodity_namespace_get_type ())
71 #define GNC_COMMODITY_NAMESPACE(o) \
72  (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_COMMODITY_NAMESPACE, gnc_commodity_namespace))
73 #define GNC_COMMODITY_NAMESPACE_CLASS(k) \
74  (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_COMMODITY_NAMESPACE, gnc_commodity_namespaceClass))
75 #define GNC_IS_COMMODITY_NAMESPACE(o) \
76  (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_COMMODITY_NAMESPACE))
77 #define GNC_IS_COMMODITY_NAMESPACE_CLASS(k) \
78  (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_COMMODITY_NAMESPACE))
79 #define GNC_COMMODITY_NAMESPACE_GET_CLASS(o) \
80  (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_COMMODITY_NAMESPACE, gnc_commodity_namespaceClass))
81 GType gnc_commodity_namespace_get_type(void);
82 
83 
84 #define GNC_COMMODITY_TABLE "gnc_commodity_table"
85 
97 #define GNC_COMMODITY_NS_LEGACY "GNC_LEGACY_CURRENCIES"
98 /* The ISO define is deprecated in favor of CURRENCY */
99 #define GNC_COMMODITY_NS_ISO "ISO4217"
100 #define GNC_COMMODITY_NS_CURRENCY "CURRENCY"
101 #define GNC_COMMODITY_NS_NASDAQ "NASDAQ"
102 #define GNC_COMMODITY_NS_NYSE "NYSE"
103 #define GNC_COMMODITY_NS_EUREX "EUREX"
104 #define GNC_COMMODITY_NS_MUTUAL "FUND"
105 #define GNC_COMMODITY_NS_AMEX "AMEX"
106 #define GNC_COMMODITY_NS_ASX "ASX"
107 
108 typedef GList CommodityList;
109 
118 typedef enum
119 {
131  SOURCE_MAX,
132  SOURCE_CURRENCY = SOURCE_MAX,
134 
141 gboolean gnc_quote_source_fq_installed (void);
142 
152 void gnc_quote_source_set_fq_installed (const GList *sources_list);
153 
161 
173 gnc_quote_source *gnc_quote_source_add_new(const char * name, gboolean supported);
174 
183 /*@ dependent @*/
184 gnc_quote_source *gnc_quote_source_lookup_by_internal(const char * internal_name);
185 
197 
206 gboolean gnc_quote_source_get_supported (const gnc_quote_source *source);
207 
216 
224 gint gnc_quote_source_get_index (const gnc_quote_source *source);
225 
234 /*@ dependent @*/
235 const char *gnc_quote_source_get_user_name (const gnc_quote_source *source);
236 
245 /*@ dependent @*/
246 const char *gnc_quote_source_get_internal_name (const gnc_quote_source *source);
247 
287 /*@ dependent @*/
289  /*@ null @*/ const char * fullname,
290  /*@ null @*/ const char * commodity_namespace,
291  /*@ null @*/ const char * mnemonic,
292  /*@ null @*/ const char * cusip,
293  int fraction);
294 
301 
303 void gnc_commodity_copy(gnc_commodity * dest, const gnc_commodity *src);
304 
306 gnc_commodity * gnc_commodity_clone(const gnc_commodity *src, QofBook *dest_book);
324 const char * gnc_commodity_get_mnemonic(const gnc_commodity * cm);
325 
335 const char * gnc_commodity_get_namespace(const gnc_commodity * cm);
336 
349 const char * gnc_commodity_get_namespace_compat(const gnc_commodity * cm);
350 
360 
370 const char * gnc_commodity_get_fullname(const gnc_commodity * cm);
371 
382 const char * gnc_commodity_get_printname(const gnc_commodity * cm);
383 
399 const char * gnc_commodity_get_cusip(const gnc_commodity * cm);
400 
412 const char * gnc_commodity_get_unique_name(const gnc_commodity * cm);
413 
425 
435 gboolean gnc_commodity_get_quote_flag(const gnc_commodity *cm);
436 
445 /*@ dependent @*/
447 /*@ dependent @*/
448 gnc_quote_source* gnc_commodity_get_default_quote_source(const gnc_commodity *cm);
449 
460 const char* gnc_commodity_get_quote_tz(const gnc_commodity *cm);
461 
472 const char* gnc_commodity_get_user_symbol(const gnc_commodity *cm);
473 
483 const char* gnc_commodity_get_default_symbol(const gnc_commodity *cm);
484 
495 const char*gnc_commodity_get_nice_symbol(const gnc_commodity *cm);
512 void gnc_commodity_set_mnemonic(gnc_commodity * cm, const char * mnemonic);
513 
524 void gnc_commodity_set_namespace(gnc_commodity * cm, const char * new_namespace);
525 
536 void gnc_commodity_set_fullname(gnc_commodity * cm, const char * fullname);
537 
552 void gnc_commodity_set_cusip(gnc_commodity * cm, const char * cusip);
553 
564 void gnc_commodity_set_fraction(gnc_commodity * cm, int smallest_fraction);
565 
581  const gboolean flag);
582 
592 void gnc_commodity_set_quote_flag(gnc_commodity *cm, const gboolean flag);
593 
604 
616 void gnc_commodity_set_quote_tz(gnc_commodity *cm, const char *tz);
617 
626 void gnc_commodity_set_user_symbol(gnc_commodity *cm, const char *user_symbol);
639 void
641 
648 void
663 gboolean gnc_commodity_equiv(const gnc_commodity * a, const gnc_commodity * b);
664 
669 gboolean gnc_commodity_equal(const gnc_commodity * a, const gnc_commodity * b);
670 
678 int gnc_commodity_compare(const gnc_commodity * a, const gnc_commodity * b);
679 
684 int gnc_commodity_compare_void(const void * a, const void * b);
698 gboolean gnc_commodity_namespace_is_iso(const char *commodity_namespace);
699 
705 gboolean gnc_commodity_is_iso(const gnc_commodity * cm);
706 
713 gboolean gnc_commodity_is_currency(const gnc_commodity *cm);
714 
718 /* =============================================================== */
725 /*@ dependent @*/
727 
729 /* ---------------------------------------------------------- */
733 gnc_commodity * gnc_commodity_table_lookup(const gnc_commodity_table * table,
734  const char * commodity_namespace,
735  const char * mnemonic);
737 gnc_commodity_table_lookup_unique(const gnc_commodity_table *table,
738  const char * unique_name);
739 gnc_commodity * gnc_commodity_table_find_full(const gnc_commodity_table * t,
740  const char * commodity_namespace,
741  const char * fullname);
742 
743 /*@ dependent @*/
744 gnc_commodity * gnc_commodity_find_commodity_by_guid(const GncGUID *guid,
745  QofBook *book);
746 
748 /* ---------------------------------------------------------- */
749 
768 /*@ dependent @*/
770  gnc_commodity * comm);
771 
779  gnc_commodity * comm);
780 
790 
792 /* ---------------------------------------------------------- */
804 
805 
813 
814 
824  const char * commodity_namespace);
825 
834 
843 
855  const char * commodity_namespace,
856  QofBook *book);
857 
867  const char * commodity_namespace);
868 
879  const char * commodity_namespace);
881 /* ---------------------------------------------------------- */
893 
907  const gnc_commodity_table * table, const char * commodity_namespace);
908 
927  const gnc_commodity_table * table);
928 
940  gboolean (*f)(gnc_commodity *cm,
941  gpointer user_data),
942  gpointer user_data);
946 /* ---------------------------------------------------------- */
956 void gnc_commodity_table_destroy(gnc_commodity_table * table);
957 
964 
969 gboolean gnc_commodity_table_register (void);
970 
971 void gnc_commodity_begin_edit (gnc_commodity *cm);
972 void gnc_commodity_commit_edit (gnc_commodity *cm);
973 
977 #define gnc_commodity_get_kvp_frame(cm) \
978  qof_instance_get_slots(QOF_INSTANCE(cm))
979 
986 {
987  gnc_commodity *commodity;
988  gnc_numeric value;
989 };
990 
991 typedef struct _gnc_monetary gnc_monetary;
992 
993 /* A list of monetary values. This could be a hash table, but as currently
994 * used it rarely contains more than one or two different commodities so
995 * it doesn't seem worth the trouble.
996 */
997 typedef GList MonetaryList;
998 
1002 static inline
1003 gnc_monetary gnc_monetary_create(gnc_commodity *commod, gnc_numeric val)
1004 {
1005  gnc_monetary out;
1006  out.commodity = commod;
1007  out.value = val;
1008  return out;
1009 }
1015 static inline
1016 gnc_commodity * gnc_monetary_commodity(gnc_monetary a)
1017 {
1018  return a.commodity;
1019 }
1020 
1021 static inline
1022 gnc_numeric gnc_monetary_value(gnc_monetary a)
1023 {
1024  return a.value;
1025 }
1033 MonetaryList *gnc_monetary_list_add_monetary(MonetaryList *list, gnc_monetary mon);
1034 
1036 static inline
1037 MonetaryList *gnc_monetary_list_add_value(MonetaryList *list,
1038  gnc_commodity *commod,
1039  gnc_numeric value)
1040 {
1041  return gnc_monetary_list_add_monetary(list,
1042  gnc_monetary_create(commod, value));
1043 }
1044 
1046 MonetaryList *gnc_monetary_list_delete_zeros(MonetaryList *list);
1047 
1049 void gnc_monetary_list_free(MonetaryList *list);
1054 #endif /* GNC_COMMODITY_H */
1055 
gnc_commodity * gnc_commodity_table_insert(gnc_commodity_table *table, gnc_commodity *comm)
const char * gnc_commodity_get_cusip(const gnc_commodity *cm)
gboolean gnc_commodity_table_foreach_commodity(const gnc_commodity_table *table, gboolean(*f)(gnc_commodity *cm, gpointer user_data), gpointer user_data)
gnc_commodity_table * gnc_commodity_table_get_table(QofBook *book)
gboolean gnc_commodity_is_currency(const gnc_commodity *cm)
int gnc_commodity_get_fraction(const gnc_commodity *cm)
gboolean gnc_commodity_table_add_default_data(gnc_commodity_table *table, QofBook *book)
const char * gnc_quote_source_get_user_name(const gnc_quote_source *source)
const char * gnc_commodity_get_mnemonic(const gnc_commodity *cm)
gnc_quote_source * gnc_quote_source_add_new(const char *name, gboolean supported)
gboolean gnc_commodity_get_quote_flag(const gnc_commodity *cm)
const char * gnc_commodity_get_namespace_compat(const gnc_commodity *cm)
const char * gnc_commodity_get_user_symbol(const gnc_commodity *cm)
void gnc_commodity_set_quote_tz(gnc_commodity *cm, const char *tz)
void gnc_commodity_decrement_usage_count(gnc_commodity *cm)
void gnc_quote_source_set_fq_installed(const GList *sources_list)
const char * gnc_commodity_get_quote_tz(const gnc_commodity *cm)
void gnc_commodity_set_fraction(gnc_commodity *cm, int smallest_fraction)
gboolean gnc_commodity_equal(const gnc_commodity *a, const gnc_commodity *b)
gboolean gnc_quote_source_get_supported(const gnc_quote_source *source)
QuoteSourceType gnc_quote_source_get_type(const gnc_quote_source *source)
int gnc_commodity_compare_void(const void *a, const void *b)
gnc_commodity * gnc_commodity_clone(const gnc_commodity *src, QofBook *dest_book)
const char * gnc_commodity_get_namespace(const gnc_commodity *cm)
void gnc_commodity_set_quote_flag(gnc_commodity *cm, const gboolean flag)
QuoteSourceType
gnc_quote_source * gnc_quote_source_lookup_by_ti(QuoteSourceType type, gint index)
void gnc_commodity_user_set_quote_flag(gnc_commodity *cm, const gboolean flag)
gnc_commodity_namespace * gnc_commodity_table_add_namespace(gnc_commodity_table *table, const char *commodity_namespace, QofBook *book)
GList * gnc_commodity_namespace_get_commodity_list(const gnc_commodity_namespace *ns)
void gnc_commodity_set_user_symbol(gnc_commodity *cm, const char *user_symbol)
Definition: guid.h:65
const char * gnc_commodity_namespace_get_name(const gnc_commodity_namespace *ns)
MonetaryList * gnc_monetary_list_delete_zeros(MonetaryList *list)
void gnc_commodity_set_quote_source(gnc_commodity *cm, gnc_quote_source *src)
gint gnc_quote_source_num_entries(QuoteSourceType type)
GList * gnc_commodity_table_get_namespaces(const gnc_commodity_table *t)
gboolean gnc_commodity_table_register(void)
void gnc_commodity_increment_usage_count(gnc_commodity *cm)
void gnc_commodity_set_cusip(gnc_commodity *cm, const char *cusip)
void gnc_monetary_list_free(MonetaryList *list)
gnc_commodity * gnc_commodity_new(QofBook *book, const char *fullname, const char *commodity_namespace, const char *mnemonic, const char *cusip, int fraction)
int gnc_commodity_table_has_namespace(const gnc_commodity_table *table, const char *commodity_namespace)
void gnc_commodity_table_delete_namespace(gnc_commodity_table *table, const char *commodity_namespace)
gboolean gnc_commodity_namespace_is_iso(const char *commodity_namespace)
const char * gnc_commodity_get_fullname(const gnc_commodity *cm)
const char * gnc_commodity_get_nice_symbol(const gnc_commodity *cm)
All type declarations for the whole Gnucash engine.
CommodityList * gnc_commodity_table_get_commodities(const gnc_commodity_table *table, const char *commodity_namespace)
gnc_quote_source * gnc_quote_source_lookup_by_internal(const char *internal_name)
const char * gnc_commodity_get_printname(const gnc_commodity *cm)
int gnc_commodity_compare(const gnc_commodity *a, const gnc_commodity *b)
void gnc_commodity_set_fullname(gnc_commodity *cm, const char *fullname)
gnc_quote_source * gnc_commodity_get_quote_source(const gnc_commodity *cm)
gnc_commodity_namespace * gnc_commodity_table_find_namespace(const gnc_commodity_table *table, const char *commodity_namespace)
void gnc_commodity_set_mnemonic(gnc_commodity *cm, const char *mnemonic)
const char * gnc_commodity_get_default_symbol(const gnc_commodity *cm)
CommodityList * gnc_commodity_table_get_quotable_commodities(const gnc_commodity_table *table)
gnc_commodity_table * gnc_commodity_table_new(void)
gint gnc_quote_source_get_index(const gnc_quote_source *source)
gnc_commodity_namespace * gnc_commodity_get_namespace_ds(const gnc_commodity *cm)
const char * gnc_commodity_get_unique_name(const gnc_commodity *cm)
MonetaryList * gnc_monetary_list_add_monetary(MonetaryList *list, gnc_monetary mon)
void gnc_commodity_table_remove(gnc_commodity_table *table, gnc_commodity *comm)
void gnc_commodity_set_namespace(gnc_commodity *cm, const char *new_namespace)
guint gnc_commodity_table_get_size(const gnc_commodity_table *tbl)
const char * gnc_quote_source_get_internal_name(const gnc_quote_source *source)
void gnc_commodity_copy(gnc_commodity *dest, const gnc_commodity *src)
GList * gnc_commodity_table_get_namespaces_list(const gnc_commodity_table *t)
gnc_commodity * gnc_commodity_obtain_twin(const gnc_commodity *findlike, QofBook *book)
void gnc_commodity_destroy(gnc_commodity *cm)
gboolean gnc_commodity_equiv(const gnc_commodity *a, const gnc_commodity *b)
gboolean gnc_commodity_is_iso(const gnc_commodity *cm)
gboolean gnc_quote_source_fq_installed(void)