gnc-commodity.h

Go to the documentation of this file.
00001 /********************************************************************
00002  * gnc-commodity.h -- API for tradable commodities (incl. currency) *
00003  *                                                                  *
00004  * This program is free software; you can redistribute it and/or    *
00005  * modify it under the terms of the GNU General Public License as   *
00006  * published by the Free Software Foundation; either version 2 of   *
00007  * the License, or (at your option) any later version.              *
00008  *                                                                  *
00009  * This program is distributed in the hope that it will be useful,  *
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of   *
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the    *
00012  * GNU General Public License for more details.                     *
00013  *                                                                  *
00014  * You should have received a copy of the GNU General Public License*
00015  * along with this program; if not, contact:                        *
00016  *                                                                  *
00017  * Free Software Foundation           Voice:  +1-617-542-5942       *
00018  * 51 Franklin Street, Fifth Floor    Fax:    +1-617-542-2652       *
00019  * Boston, MA  02110-1301,  USA       gnu@gnu.org                   *
00020  *                                                                  *
00021  *******************************************************************/
00022 
00046 #ifndef GNC_COMMODITY_H
00047 #define GNC_COMMODITY_H
00048 
00049 typedef struct _GncCommodityClass gnc_commodityClass;
00050 typedef struct _GncCommodityNamespaceClass gnc_commodity_namespaceClass;
00051 
00052 #include <glib.h>
00053 #include "gnc-engine.h"
00054 
00055 /* --- type macros --- */
00056 #define GNC_TYPE_COMMODITY            (gnc_commodity_get_type ())
00057 #define GNC_COMMODITY(o)              \
00058      (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_COMMODITY, gnc_commodity))
00059 #define GNC_COMMODITY_CLASS(k)        \
00060      (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_COMMODITY, gnc_commodityClass))
00061 #define GNC_IS_COMMODITY(o)           \
00062      (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_COMMODITY))
00063 #define GNC_IS_COMMODITY_CLASS(k)     \
00064      (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_COMMODITY))
00065 #define GNC_COMMODITY_GET_CLASS(o)    \
00066      (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_COMMODITY, gnc_commodityClass))
00067 GType gnc_commodity_get_type(void);
00068 
00069 /* --- type macros --- */
00070 #define GNC_TYPE_COMMODITY_NAMESPACE            (gnc_commodity_namespace_get_type ())
00071 #define GNC_COMMODITY_NAMESPACE(o)              \
00072      (G_TYPE_CHECK_INSTANCE_CAST ((o), GNC_TYPE_COMMODITY_NAMESPACE, gnc_commodity_namespace))
00073 #define GNC_COMMODITY_NAMESPACE_CLASS(k)        \
00074      (G_TYPE_CHECK_CLASS_CAST((k), GNC_TYPE_COMMODITY_NAMESPACE, gnc_commodity_namespaceClass))
00075 #define GNC_IS_COMMODITY_NAMESPACE(o)           \
00076      (G_TYPE_CHECK_INSTANCE_TYPE ((o), GNC_TYPE_COMMODITY_NAMESPACE))
00077 #define GNC_IS_COMMODITY_NAMESPACE_CLASS(k)     \
00078      (G_TYPE_CHECK_CLASS_TYPE ((k), GNC_TYPE_COMMODITY_NAMESPACE))
00079 #define GNC_COMMODITY_NAMESPACE_GET_CLASS(o)    \
00080      (G_TYPE_INSTANCE_GET_CLASS ((o), GNC_TYPE_COMMODITY_NAMESPACE, gnc_commodity_namespaceClass))
00081 GType gnc_commodity_namespace_get_type(void);
00082 
00083 
00084 #define GNC_COMMODITY_TABLE "gnc_commodity_table"
00085 
00097 #define GNC_COMMODITY_NS_LEGACY "GNC_LEGACY_CURRENCIES"
00098 /* The ISO define is deprecated in favor of CURRENCY */
00099 #define GNC_COMMODITY_NS_ISO    "ISO4217"
00100 #define GNC_COMMODITY_NS_CURRENCY "CURRENCY"
00101 #define GNC_COMMODITY_NS_NASDAQ "NASDAQ"
00102 #define GNC_COMMODITY_NS_NYSE   "NYSE"
00103 #define GNC_COMMODITY_NS_EUREX  "EUREX"
00104 #define GNC_COMMODITY_NS_MUTUAL "FUND"
00105 #define GNC_COMMODITY_NS_AMEX   "AMEX"
00106 #define GNC_COMMODITY_NS_ASX    "ASX"
00107 
00108 typedef GList CommodityList;
00109 
00118 typedef enum
00119 {
00120   SOURCE_SINGLE = 0,    
00124   SOURCE_MULTI,         
00127   SOURCE_UNKNOWN,       
00131   SOURCE_MAX,
00132   SOURCE_CURRENCY = SOURCE_MAX, 
00133 } QuoteSourceType;
00134 
00141 gboolean gnc_quote_source_fq_installed (void);
00142 
00152 void gnc_quote_source_set_fq_installed (const GList *sources_list);
00153 
00160 gint gnc_quote_source_num_entries(QuoteSourceType type);
00161 
00173 gnc_quote_source *gnc_quote_source_add_new(const char * name, gboolean supported);
00174 
00183 gnc_quote_source *gnc_quote_source_lookup_by_internal(const char * internal_name);
00184 
00195 gnc_quote_source *gnc_quote_source_lookup_by_ti(QuoteSourceType type, gint index);
00196 
00205 gboolean gnc_quote_source_get_supported (const gnc_quote_source *source);
00206 
00214 QuoteSourceType gnc_quote_source_get_type (const gnc_quote_source *source);
00215 
00223 gint gnc_quote_source_get_index (const gnc_quote_source *source);
00224 
00233 const char *gnc_quote_source_get_user_name (const gnc_quote_source *source);
00234 
00243 const char *gnc_quote_source_get_internal_name (const gnc_quote_source *source);
00244 
00257 const char *gnc_quote_source_get_old_internal_name (const gnc_quote_source *source);
00297 gnc_commodity * gnc_commodity_new(QofBook *book,
00298                                   const char * fullname, 
00299                                   const char * namespace,
00300                                   const char * mnemonic,
00301                                   const char * cusip,
00302                                   int fraction);
00303 
00309 void  gnc_commodity_destroy(gnc_commodity * cm);
00310 
00312 void  gnc_commodity_copy(gnc_commodity * dest, const gnc_commodity *src);
00313 
00315 gnc_commodity * gnc_commodity_clone(const gnc_commodity *src, QofBook *dest_book);
00333 const char * gnc_commodity_get_mnemonic(const gnc_commodity * cm);
00334 
00344 const char * gnc_commodity_get_namespace(const gnc_commodity * cm);
00345 
00358 const char * gnc_commodity_get_namespace_compat(const gnc_commodity * cm);
00359 
00368 gnc_commodity_namespace *gnc_commodity_get_namespace_ds(const gnc_commodity * cm);
00369 
00379 const char * gnc_commodity_get_fullname(const gnc_commodity * cm);
00380 
00391 const char * gnc_commodity_get_printname(const gnc_commodity * cm);
00392 
00408 const char * gnc_commodity_get_cusip(const gnc_commodity * cm);
00409 
00421 const char * gnc_commodity_get_unique_name(const gnc_commodity * cm);
00422 
00433 int     gnc_commodity_get_fraction(const gnc_commodity * cm);
00434 
00443 gint16  gnc_commodity_get_mark(const gnc_commodity * cm);
00444 
00454 gboolean    gnc_commodity_get_quote_flag(const gnc_commodity *cm);
00455 
00464 gnc_quote_source* gnc_commodity_get_quote_source(const gnc_commodity *cm);
00465 gnc_quote_source* gnc_commodity_get_default_quote_source(const gnc_commodity *cm);
00466 
00477 const char* gnc_commodity_get_quote_tz(const gnc_commodity *cm);
00496 void  gnc_commodity_set_mnemonic(gnc_commodity * cm, const char * mnemonic);
00497 
00508 void  gnc_commodity_set_namespace(gnc_commodity * cm, const char * namespace);
00509 
00520 void  gnc_commodity_set_fullname(gnc_commodity * cm, const char * fullname);
00521 
00536 void  gnc_commodity_set_cusip(gnc_commodity * cm, const char * cusip);
00537 
00548 void  gnc_commodity_set_fraction(gnc_commodity * cm, int smallest_fraction);
00549 
00564 void  gnc_commodity_user_set_quote_flag(gnc_commodity *cm,
00565                                         const gboolean flag);
00566 
00576 void  gnc_commodity_set_quote_flag(gnc_commodity *cm, const gboolean flag);
00577 
00587 void  gnc_commodity_set_quote_source(gnc_commodity *cm, gnc_quote_source *src);
00588 
00600 void  gnc_commodity_set_quote_tz(gnc_commodity *cm, const char *tz);
00614 void
00615 gnc_commodity_increment_usage_count(gnc_commodity *cm);
00616 
00623 void
00624 gnc_commodity_decrement_usage_count(gnc_commodity *cm);
00638 gboolean gnc_commodity_equiv(const gnc_commodity * a, const gnc_commodity * b);
00639 
00644 gboolean gnc_commodity_equal(const gnc_commodity * a, const gnc_commodity * b);
00658 gboolean gnc_commodity_namespace_is_iso(const char *namespace);
00659 
00665 gboolean gnc_commodity_is_iso(const gnc_commodity * cm);
00666 
00673 gboolean gnc_commodity_is_currency(const gnc_commodity *cm);
00674 
00678 /* =============================================================== */
00685 gnc_commodity_table * gnc_commodity_table_get_table(QofBook *book);
00686 
00687 /* XXX backwards compat function; remove me someday */
00688 #define gnc_book_get_commodity_table gnc_commodity_table_get_table
00689 
00691 gboolean gnc_commodity_table_equal(gnc_commodity_table *t_1,
00692                                    gnc_commodity_table *t_2);
00693 
00695 void gnc_commodity_table_copy(gnc_commodity_table *dest,
00696                               gnc_commodity_table *src,
00697                               QofBook *dest_book);
00699 /* ---------------------------------------------------------- */
00703 gnc_commodity * gnc_commodity_table_lookup(const gnc_commodity_table * table, 
00704                                            const char * namespace, 
00705                                            const char * mnemonic);
00706 gnc_commodity *
00707 gnc_commodity_table_lookup_unique(const gnc_commodity_table *table,
00708                                   const char * unique_name);
00709 gnc_commodity * gnc_commodity_table_find_full(const gnc_commodity_table * t,
00710                                               const char * namespace,
00711                                               const char * fullname);
00712 
00713 gnc_commodity * gnc_commodity_find_commodity_by_guid(const GUID *guid, QofBook *book);
00714 gnc_commodity_namespace * gnc_commodity_find_namespace_by_guid(const GUID *guid, QofBook *book);
00715 
00717 /* ---------------------------------------------------------- */
00718 
00737 gnc_commodity * gnc_commodity_table_insert(gnc_commodity_table * table,
00738                                            gnc_commodity * comm);
00739 
00746 void gnc_commodity_table_remove(gnc_commodity_table * table,
00747                                 gnc_commodity * comm);
00748 
00757 gboolean gnc_commodity_table_add_default_data(gnc_commodity_table *table, QofBook *book);
00758 
00760 /* ---------------------------------------------------------- */
00771 const char * gnc_commodity_namespace_get_name (const gnc_commodity_namespace *ns) ;
00772 
00773 
00780 GList * gnc_commodity_namespace_get_commodity_list(const gnc_commodity_namespace * ns);
00781 
00782 
00788 guint gnc_commodity_table_get_number_of_namespaces(const gnc_commodity_table* tbl);
00789 
00798 int gnc_commodity_table_has_namespace(const gnc_commodity_table * table,
00799                                       const char * namespace);
00800 
00808 GList * gnc_commodity_table_get_namespaces(const gnc_commodity_table * t);
00809 
00817 GList * gnc_commodity_table_get_namespaces_list(const gnc_commodity_table * t);
00818 
00827 gnc_commodity_namespace * gnc_commodity_table_add_namespace(gnc_commodity_table * table,
00828                                                             const char * namespace,
00829                                                             QofBook *book);
00830 
00839 gnc_commodity_namespace * gnc_commodity_table_find_namespace(const gnc_commodity_table * table,
00840                                                              const char * namespace);
00841 
00851 void      gnc_commodity_table_delete_namespace(gnc_commodity_table * table,
00852                                                const char * namespace);
00854 /* ---------------------------------------------------------- */
00865 guint gnc_commodity_table_get_size(const gnc_commodity_table* tbl);
00866 
00879 CommodityList * gnc_commodity_table_get_commodities(
00880     const gnc_commodity_table * table, const char * namespace);
00881 
00899 CommodityList * gnc_commodity_table_get_quotable_commodities(
00900     const gnc_commodity_table * table);
00901 
00912 gboolean gnc_commodity_table_foreach_commodity(const gnc_commodity_table * table,
00913                                        gboolean (*f)(gnc_commodity *cm,
00914                                                      gpointer user_data),
00915                                        gpointer user_data);
00919 /* ---------------------------------------------------------- */
00932 void  gnc_commodity_set_mark(gnc_commodity * cm, gint16 mark);
00933 
00938 gnc_commodity_table * gnc_commodity_table_new(void);
00939 void          gnc_commodity_table_destroy(gnc_commodity_table * table);
00940 
00946 gnc_commodity * gnc_commodity_obtain_twin (const gnc_commodity *from, QofBook *book);
00947 
00952 gboolean gnc_commodity_table_register (void);
00953 
00954 void gnc_commodity_begin_edit (gnc_commodity *cm);
00955 void gnc_commodity_commit_edit (gnc_commodity *cm);
00956                   
00960 #endif /* GNC_COMMODITY_H */
00961 

Generated on Mon Sep 8 05:03:57 2008 for GnuCash by  doxygen 1.5.2