GnuCash 2.4.99
qofbackend-p.h
Go to the documentation of this file.
00001 /********************************************************************\
00002  * qofbackend-p.h -- private api for data storage backend           *
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 \********************************************************************/
00041 #ifndef QOF_BACKEND_P_H
00042 #define QOF_BACKEND_P_H
00043 
00044 #include "qofbackend.h"
00045 #include "qofbook.h"
00046 #include "qofinstance-p.h"
00047 #include "qofquery.h"
00048 #include "qofsession.h"
00049 
00238 struct QofBackendProvider_s
00239 {
00241     /*@ observer @*/
00242     const char * provider_name;
00243 
00247     /*@ observer @*/
00248     const char * access_method;
00249 
00256     gboolean partial_book_supported;
00257 
00263     QofBackend * (*backend_new) (void);
00264 
00279     /*@ null @*/
00280     gboolean (*check_data_type) (const char*);
00281 
00283     void (*provider_free) (/*@ only @*/ QofBackendProvider *);
00284 };
00285 
00286 typedef enum
00287 {
00288     LOAD_TYPE_INITIAL_LOAD,
00289     LOAD_TYPE_LOAD_ALL
00290 } QofBackendLoadType;
00291 
00292 struct QofBackend_s
00293 {
00294     void (*session_begin) (QofBackend *be,
00295                            QofSession *session,
00296                            const char *book_id,
00297                            gboolean ignore_lock,
00298                            gboolean create,
00299                            gboolean force);
00300     void (*session_end) (QofBackend *);
00301     void (*destroy_backend) (/*@ only @*/ QofBackend *);
00302 
00303     void (*load) (QofBackend *, /*@ dependent @*/ QofBook *, QofBackendLoadType);
00304 
00305     void (*begin) (QofBackend *, QofInstance *);
00306     void (*commit) (QofBackend *, QofInstance *);
00307     void (*rollback) (QofBackend *, QofInstance *);
00308 
00309     gpointer (*compile_query) (QofBackend *, QofQuery *);
00310     void (*free_query) (QofBackend *, gpointer);
00311     void (*run_query) (QofBackend *, gpointer);
00312 
00313     void (*sync) (QofBackend *, /*@ dependent @*/ QofBook *);
00314     void (*safe_sync) (QofBackend *, /*@ dependent @*/ QofBook *);
00315     void (*load_config) (QofBackend *, KvpFrame *);
00316     /*@ observer @*/
00317     KvpFrame* (*get_config) (QofBackend *);
00318 
00319     gboolean (*events_pending) (QofBackend *);
00320     gboolean (*process_events) (QofBackend *);
00321 
00322     QofBePercentageFunc percentage;
00323 
00324     QofBackendProvider *provider;
00325 
00326     QofBackendError last_err;
00327     char * error_msg;
00328 
00329     KvpFrame* backend_configuration;
00330     gint config_count;
00334     char * fullpath;
00335 
00344     void (*price_lookup) (QofBackend *, gpointer);
00345 
00351     void (*export_fn) (QofBackend *, QofBook *);
00352 
00353 };
00354 
00362 void qof_backend_register_provider (/*@ only @*/ QofBackendProvider *);
00363 
00366 void qof_backend_set_message(QofBackend *be, const char *format, ...);
00367 
00371 char * qof_backend_get_message(QofBackend *be);
00372 
00373 void qof_backend_init(QofBackend *be);
00374 void qof_backend_destroy(QofBackend *be);
00375 
00380 gchar qof_book_get_open_marker(const QofBook *book);
00381 
00389 gint32 qof_book_get_version (const QofBook *book);
00390 
00391 void qof_book_set_version (QofBook *book, gint32 version);
00392 
00393 /* @} */
00394 /* @} */
00395 /* @} */
00396 #endif /* QOF_BACKEND_P_H */
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines