23 #ifndef QOF_DISABLE_DEPRECATED
34 #define gncLogLevel QofLogLevel
60 void gnc_set_logfile (FILE * outfile);
63 const char *gnc_log_prettify (
const char *name);
69 #define GNC_LOG_FATAL QOF_LOG_FATAL
71 #define GNC_LOG_ERROR QOF_LOG_ERROR
73 #define GNC_LOG_WARNING QOF_LOG_WARNING
75 #define GNC_LOG_INFO QOF_LOG_INFO
77 #define GNC_LOG_DEBUG QOF_LOG_DEBUG
79 #define GNC_LOG_DETAIL QOF_LOG_DETAIL
81 #define GNC_LOG_TRACE QOF_LOG_TRACE
94 #define GNC_EVENT_NONE QOF_EVENT_NONE
96 #define GNC_EVENT_CREATE QOF_EVENT_CREATE
98 #define GNC_EVENT_MODIFY QOF_EVENT_MODIFY
100 #define GNC_EVENT_DESTROY QOF_EVENT_DESTROY
102 #define GNC_EVENT_ADD QOF_EVENT_ADD
104 #define GNC_EVENT_REMOVE QOF_EVENT_REMOVE
106 #define GNC_EVENT_ALL QOF_EVENT_ALL
108 #define GNCEngineEventType QofEventId
122 void gnc_engine_unregister_event_handler (gint handler_id);
126 void gnc_engine_suspend_events (
void);
128 void gnc_engine_resume_events (
void);
133 #define qof_book_mergeResult QofBookMergeResult
135 #define qof_book_mergeRule QofBookMergeRule
137 #define qof_book_mergeData QofBookMergeData
155 #define SAFE_STRCMP_REAL(fcn,da,db) { \
156 if ((da) && (db)) { \
157 if ((da) != (db)) { \
158 gint retval = fcn ((da), (db)); \
160 if (retval) return retval; \
163 if ((!(da)) && (db)) { \
166 if ((da) && (!(db))) { \
171 #define SAFE_STRCMP(da,db) SAFE_STRCMP_REAL(strcmp,(da),(db))
173 #define SAFE_STRCASECMP(da,db) SAFE_STRCMP_REAL(strcasecmp,(da),(db))
175 gpointer gnc_string_cache_insert (gconstpointer key);
177 #define GNC_SCANF_LLD QOF_SCANF_LLD
179 gchar *gnc_stpcpy (gchar * dest,
const gchar * src);
181 GCache *gnc_engine_get_string_cache (
void);
185 void gnc_engine_string_cache_destroy (
void);
187 void gnc_string_cache_remove (gconstpointer key);
201 const gchar* gnc_date_dateformat_to_string(
QofDateFormat format);
212 gboolean gnc_date_string_to_dateformat (
const gchar * format_string,
215 gboolean gnc_date_string_to_monthformat (
const gchar * format_string,
228 time_t timespecToTime_t (
Timespec ts);
230 void timespecFromTime_t (
Timespec * ts, time_t t);
232 Timespec gnc_dmy2timespec (gint day, gint month, gint year);
234 Timespec gnc_dmy2timespec_end (gint day, gint month, gint year);
236 Timespec gnc_iso8601_to_timespec_gmt (
const gchar *);
238 gchar *gnc_timespec_to_iso8601_buff (
Timespec ts, gchar * buff);
240 void gnc_timespec2dmy (
Timespec ts, gint * day, gint * month, gint * year);
242 void date_add_months (
struct tm *tm, gint months, gboolean track_last_day);
244 gboolean qof_date_add_days(
Timespec *ts, gint days);
246 gboolean qof_date_add_months(
Timespec *ts, gint months, gboolean track_last_day);
252 glong gnc_timezone (
struct tm *tm);
258 const gchar *qof_date_text_format_get_string(
QofDateFormat df);
260 char dateSeparator (
void);
263 time_t qof_date_dmy_to_sec (gint day, gint month, gint year);
265 size_t qof_print_hours_elapsed_buff (
char *buff,
size_t len,
int secs,
268 size_t qof_print_minutes_elapsed_buff (
char *buff,
size_t len,
int secs,
273 size_t qof_print_date_time_buff (
char *buff,
size_t len, time_t secs);
275 gboolean qof_is_same_day (time_t, time_t);
277 void gnc_tm_get_day_start (
struct tm *tm, time_t time_val);
279 void gnc_tm_set_day_start (
struct tm *tm);
281 void gnc_tm_set_day_middle (
struct tm *tm);
283 void gnc_tm_set_day_end (
struct tm *tm);
285 void gnc_tm_get_day_end (
struct tm *tm, time_t time_val);
287 time_t gnc_timet_get_day_start (time_t time_val);
289 time_t gnc_timet_get_day_end (time_t time_val);
291 void gnc_tm_get_today_start (
struct tm *tm);
293 void gnc_tm_get_today_end (
struct tm *tm);
295 time_t gnc_timet_get_today_start (
void);
297 time_t gnc_timet_get_today_end (
void);
298 #ifndef GNUCASH_MAJOR_VERSION
300 time_t gnc_timet_get_day_start_gdate (GDate * date);
302 time_t gnc_timet_get_day_end_gdate (GDate * date);
305 int date_get_last_mday (
struct tm *tm);
307 gboolean date_is_last_mday (
struct tm *tm);
309 int gnc_date_my_last_mday (
int month,
int year);
311 int gnc_timespec_last_mday (
Timespec ts);
313 char * xaccDateUtilGetStampNow (
void);
315 char *xaccDateUtilGetStamp (time_t thyme);
318 gint day, gint month, gint year);
320 size_t qof_print_date_buff (
char *buff,
size_t buflen, time_t secs);
324 char *qof_print_date (time_t secs);
326 const char *gnc_print_date (
Timespec ts);
328 gboolean qof_scan_date (
const char *buff,
int *day,
int *month,
int *year);
333 #define qof_book_set_guid(book,guid) \
334 qof_entity_set_guid(QOF_ENTITY(book), guid)
336 #define QOF_TYPE_DATE "date"
353 #define qof_book_get_guid(X) qof_entity_get_guid (QOF_ENTITY(X))
356 QofLogLevel log_level,
const gchar * function_name,
357 const gchar * format, ...);
362 const gchar * function_name,
363 const gchar * format, ...);
368 const gchar * function_name,
369 const gchar * format, ...);
371 #define START_CLOCK(clockno,format, args...) do { \
372 if (qof_log_check (log_module, QOF_LOG_INFO)) \
373 qof_start_clock (clockno, log_module, QOF_LOG_INFO, \
374 __FUNCTION__, format , ## args); \
377 #define REPORT_CLOCK(clockno,format, args...) do { \
378 if (qof_log_check (log_module, QOF_LOG_INFO)) \
379 qof_report_clock (clockno, log_module, QOF_LOG_INFO, \
380 __FUNCTION__, format , ## args); \
383 #define REPORT_CLOCK_TOTAL(clockno,format, args...) do { \
384 if (qof_log_check (log_module, QOF_LOG_INFO)) \
385 qof_report_clock_total (clockno, log_module, QOF_LOG_INFO, \
386 __FUNCTION__, format , ## args); \
409 QofSession *qof_session_get_current_session (
void);
412 void qof_session_set_current_session (
QofSession * session);
416 qof_session_clear_current_session (
void);
418 gboolean gnc_strisnum (
const guchar * s);
421 gnc_kvp_bag_add (
KvpFrame * pwd,
const char *path,
422 time_t secs,
const char *first_name, ...);
426 const char *guid_name,
GUID * desired_guid);
429 gnc_kvp_bag_remove_frame (
KvpFrame * root,
const char *path,
433 gnc_kvp_bag_merge (
KvpFrame * kvp_into,
const char *intopath,
434 KvpFrame * kvp_from,
const char *frompath);
445 #define QOF_BEGIN_EDIT(inst) qof_begin_edit (inst)
460 #define QOF_COMMIT_EDIT_PART1(inst) qof_commit_edit (inst)
479 #define QOF_COMMIT_EDIT_PART2(inst,on_error,on_done,on_free) { \
482 be = qof_book_get_backend ((inst)->book); \
485 QofBackendError errcode; \
487 errcode = qof_backend_get_error (be); \
488 if (ERR_BACKEND_NO_ERR != errcode) \
490 (inst)->do_free = FALSE; \
491 qof_backend_set_error (be, errcode); \
492 (on_error)((inst), errcode); \
494 (inst)->dirty = FALSE; \
498 if ((inst)->do_free) { \
510 #define GNC_NUMERIC_RND_MASK QOF_NUMERIC_RND_MASK
512 #define GNC_NUMERIC_DENOM_MASK QOF_NUMERIC_DENOM_MASK
514 #define GNC_NUMERIC_SIGFIGS_MASK QOF_NUMERIC_SIGFIGS_MASK
516 #define GNC_HOW_RND_FLOOR QOF_HOW_RND_FLOOR
518 #define GNC_HOW_RND_CEIL QOF_HOW_RND_CEIL
520 #define GNC_HOW_RND_TRUNC QOF_HOW_RND_TRUNC
522 #define GNC_HOW_RND_PROMOTE QOF_HOW_RND_PROMOTE
524 #define GNC_HOW_RND_ROUND_HALF_DOWN QOF_HOW_RND_ROUND_HALF_DOWN
526 #define GNC_HOW_RND_ROUND_HALF_UP QOF_HOW_RND_ROUND_HALF_UP
528 #define GNC_HOW_RND_ROUND QOF_HOW_RND_ROUND
530 #define GNC_HOW_RND_NEVER QOF_HOW_RND_NEVER
532 #define GNC_HOW_DENOM_EXACT QOF_HOW_DENOM_EXACT
534 #define GNC_HOW_DENOM_REDUCE QOF_HOW_DENOM_REDUCE
536 #define GNC_HOW_DENOM_LCD QOF_HOW_DENOM_LCD
538 #define GNC_HOW_DENOM_FIXED QOF_HOW_DENOM_FIXED
540 #define GNC_HOW_DENOM_SIGFIG QOF_HOW_DENOM_SIGFIG
542 #define GNC_HOW_DENOM_SIGFIGS QOF_HOW_DENOM_SIGFIGS
544 #define GNC_HOW_GET_SIGFIGS QOF_HOW_GET_SIGFIGS
546 #define GNC_ERROR_OK QOF_ERROR_OK
548 #define GNC_ERROR_ARG QOF_ERROR_ARG
550 #define GNC_ERROR_OVERFLOW QOF_ERROR_OVERFLOW
552 #define GNC_ERROR_DENOM_DIFF QOF_ERROR_DENOM_DIFF
554 #define GNC_ERROR_REMAINDER QOF_ERROR_REMAINDER
556 #define GNCNumericErrorCode QofNumericErrorCode
558 #define GNC_DENOM_AUTO QOF_DENOM_AUTO
560 #define GNC_DENOM_RECIPROCAL QOF_DENOM_RECIPROCAL
578 double_to_gnc_numeric (
double in, gint64 denom, gint how);
581 string_to_gnc_numeric (
const gchar * str,
gnc_numeric * n);
630 gint64 denom, gint how);
634 gint64 denom, gint how);
638 gint64 denom, gint how);
642 gint64 denom, gint how);
646 gint64 denom, gint how);
668 gint64 denom, gint how,
673 gint64 denom, gint how,
678 gint64 denom, gint how,
683 gint64 denom, gint how,
687 gnc_numeric_convert (
gnc_numeric in, gint64 denom, gint how);
695 #define GNC_RND_FLOOR QOF_HOW_RND_FLOOR
697 #define GNC_RND_CEIL QOF_HOW_RND_CEIL
699 #define GNC_RND_TRUNC QOF_HOW_RND_TRUNC
701 #define GNC_RND_PROMOTE QOF_HOW_RND_PROMOTE
703 #define GNC_RND_ROUND_HALF_DOWN QOF_HOW_RND_ROUND_HALF_DOWN
705 #define GNC_RND_ROUND_HALF_UP QOF_HOW_RND_ROUND_HALF_UP
707 #define GNC_RND_ROUND QOF_HOW_RND_ROUND
709 #define GNC_RND_NEVER QOF_HOW_RND_NEVER
711 #define GNC_DENOM_EXACT QOF_HOW_DENOM_EXACT
713 #define GNC_DENOM_REDUCE QOF_HOW_DENOM_REDUCE
715 #define GNC_DENOM_LCD QOF_HOW_DENOM_LCD
717 #define GNC_DENOM_FIXED QOF_HOW_DENOM_FIXED
719 #define GNC_DENOM_SIGFIG QOF_HOW_DENOM_SIGFIG
721 #define GNC_DENOM_SIGFIGS(X) QOF_HOW_DENOM_SIGFIGS(X)
723 #define GNC_NUMERIC_GET_SIGFIGS(X) QOF_HOW_GET_SIGFIGS(X)
731 #define ENUM_LIST_DEP(_) \
732 _(ERR_BACKEND_NO_ERR, =0) \
733 _(ERR_BACKEND_NO_HANDLER,) \
734 _(ERR_BACKEND_NO_BACKEND,) \
735 _(ERR_BACKEND_BAD_URL,) \
736 _(ERR_BACKEND_NO_SUCH_DB,) \
737 _(ERR_BACKEND_CANT_CONNECT,) \
738 _(ERR_BACKEND_CONN_LOST,) \
739 _(ERR_BACKEND_LOCKED,) \
740 _(ERR_BACKEND_READONLY,) \
741 _(ERR_BACKEND_TOO_NEW,) \
742 _(ERR_BACKEND_DATA_CORRUPT,) \
743 _(ERR_BACKEND_SERVER_ERR,) \
744 _(ERR_BACKEND_ALLOC,) \
745 _(ERR_BACKEND_PERM,) \
746 _(ERR_BACKEND_MODIFIED,) \
747 _(ERR_BACKEND_MOD_DESTROY,) \
748 _(ERR_BACKEND_MISC,) \
749 _(ERR_QSF_INVALID_OBJ,) \
750 _(ERR_QSF_INVALID_MAP,) \
751 _(ERR_QSF_BAD_OBJ_GUID,) \
752 _(ERR_QSF_BAD_QOF_VERSION,) \
753 _(ERR_QSF_BAD_MAP,) \
755 _(ERR_QSF_WRONG_MAP,) \
756 _(ERR_QSF_MAP_NOT_OBJ,) \
757 _(ERR_QSF_OVERFLOW,) \
758 _(ERR_QSF_OPEN_NOT_MERGE,) \
759 _(ERR_FILEIO_FILE_BAD_READ, =1000) \
760 _(ERR_FILEIO_FILE_EMPTY,) \
761 _(ERR_FILEIO_FILE_LOCKERR,) \
762 _(ERR_FILEIO_FILE_NOT_FOUND,) \
763 _(ERR_FILEIO_FILE_TOO_OLD,) \
764 _(ERR_FILEIO_UNKNOWN_FILE_TYPE,) \
765 _(ERR_FILEIO_PARSE_ERROR,) \
766 _(ERR_FILEIO_BACKUP_ERROR,) \
767 _(ERR_FILEIO_WRITE_ERROR,) \
768 _(ERR_FILEIO_READ_ERROR,) \
769 _(ERR_FILEIO_NO_ENCODING,) \
770 _(ERR_NETIO_SHORT_READ, =2000) \
771 _(ERR_NETIO_WRONG_CONTENT_TYPE,) \
772 _(ERR_NETIO_NOT_GNCXML,) \
773 _(ERR_SQL_MISSING_DATA, =3000) \
774 _(ERR_SQL_DB_TOO_OLD,) \
775 _(ERR_SQL_DB_BUSY,) \
776 _(ERR_RPC_HOST_UNK, =4000) \
777 _(ERR_RPC_CANT_BIND,) \
778 _(ERR_RPC_CANT_ACCEPT,) \
779 _(ERR_RPC_NO_CONNECTION,) \
780 _(ERR_RPC_BAD_VERSION,) \
782 _(ERR_RPC_NOT_ADDED,)
792 void (*on_done) (QofInstance *),
793 void (*on_free) (QofInstance *));
797 qof_session_push_error (
QofSession * session, QofBackendError err,
798 const gchar *message);
802 qof_session_get_error_message (
QofSession * session);
817 qof_backend_set_message (
QofBackend * be, const gchar * format, ...);
828 #define kvp_frame KvpFrame
830 #define kvp_value KvpValue
832 #define kvp_value_t KvpValueType
834 #define kvp_frame_set_gnc_numeric kvp_frame_set_numeric
836 #define kvp_frame_set_str kvp_frame_set_string
838 #define kvp_frame_add_gnc_numeric kvp_frame_add_numeric
840 #define kvp_frame_add_str kvp_frame_add_string
842 #define kvp_value_new_gnc_numeric kvp_value_new_numeric
844 gint double_compare (gdouble d1, gdouble d2);