|
GnuCash 2.4.99
|
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 */
1.7.4