[Gnucash-changes] convert qofbook to use instances too

Linas Vepstas linas at cvs.gnucash.org
Sun Jun 13 01:27:47 EDT 2004


Log Message:
-----------
convert qofbook to use instances too

Tags:
----
backend-work-1

Modified Files:
--------------
    gnucash/src/engine:
        qofbook-p.h
        qofbook.c
        qofbook.h
        qofinstance-p.h
        qofquery.h

Revision Data
-------------
Index: qofquery.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/qofquery.h,v
retrieving revision 1.12
retrieving revision 1.12.2.1
diff -Lsrc/engine/qofquery.h -Lsrc/engine/qofquery.h -u -r1.12 -r1.12.2.1
--- src/engine/qofquery.h
+++ src/engine/qofquery.h
@@ -109,6 +109,7 @@
 #define QOF_PARAM_GUID    "guid"
 
 /** "Known" Object Parameters -- some objects might support these */
+#define QOF_PARAM_KVP     "kvp" 
 #define QOF_PARAM_ACTIVE  "active" 
 
 /* --------------------------------------------------------- */
Index: qofinstance-p.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/qofinstance-p.h,v
retrieving revision 1.5
retrieving revision 1.5.2.1
diff -Lsrc/engine/qofinstance-p.h -Lsrc/engine/qofinstance-p.h -u -r1.5 -r1.5.2.1
--- src/engine/qofinstance-p.h
+++ src/engine/qofinstance-p.h
@@ -73,7 +73,9 @@
    /** In process of being destroyed */
    gboolean  do_free;
 
-   /** This instance has not been saved yet */
+   /** dirty/clean flag. If dirty, then this instance has been modified,
+    * but has not yet been written out to storage (file/database)
+    */
    gboolean  dirty;
 };
 
Index: qofbook.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/qofbook.h,v
retrieving revision 1.13
retrieving revision 1.13.2.1
diff -Lsrc/engine/qofbook.h -Lsrc/engine/qofbook.h -u -r1.13 -r1.13.2.1
--- src/engine/qofbook.h
+++ src/engine/qofbook.h
@@ -99,7 +99,7 @@
  *  between multiple users).  To store application runtime data, use
  *  qof_book_set_data() isntead.
  */
-KvpFrame   * qof_book_get_slots (QofBook *book);
+#define qof_book_get_slots(book) qof_instance_get_slots(QOF_INSTANCE(book))
 
 /** The qof_book_set_data() allows arbitrary pointers to structs 
  *    to be stored in QofBook. This is the "prefered" method for 
@@ -154,13 +154,6 @@
  */
 gint64 qof_book_get_counter (QofBook *book, const char *counter_name);
 
-/** Book parameter names */
-/**@{*/ 
-
-#define QOF_BOOK_KVP     "qof-kvp"
-
-/**@}*/
- 
 /** deprecated */
 #define qof_book_get_guid(X) qof_entity_get_guid (QOF_ENTITY(X))
 
Index: qofbook.c
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/qofbook.c,v
retrieving revision 1.23
retrieving revision 1.23.2.1
diff -Lsrc/engine/qofbook.c -Lsrc/engine/qofbook.c -u -r1.23 -r1.23.2.1
--- src/engine/qofbook.c
+++ src/engine/qofbook.c
@@ -58,16 +58,12 @@
 static void
 qof_book_init (QofBook *book)
 {
-  QofCollection *col;
   if (!book) return;
 
   book->hash_of_collections = g_hash_table_new (g_str_hash, g_str_equal);
 
-  col = qof_book_get_collection (book, QOF_ID_BOOK);
-  qof_entity_init (&book->entity, QOF_ID_BOOK, col);
+  qof_instance_init (&book->inst, QOF_ID_BOOK, book);
 
-  book->kvp_data = kvp_frame_new ();
-  
   book->data_tables = g_hash_table_new (g_str_hash, g_str_equal);
   book->data_table_finalizers = g_hash_table_new (g_str_hash, g_str_equal);
   
@@ -86,7 +82,7 @@
   qof_book_init(book);
   qof_object_book_begin (book);
 
-  gnc_engine_gen_event (&book->entity, GNC_EVENT_CREATE);
+  gnc_engine_gen_event (&book->inst.entity, GNC_EVENT_CREATE);
   LEAVE ("book=%p", book);
   return book;
 }
@@ -116,7 +112,7 @@
   ENTER ("book=%p", book);
 
   book->shutting_down = TRUE;
-  gnc_engine_force_event (&book->entity, GNC_EVENT_DESTROY);
+  gnc_engine_force_event (&book->inst.entity, GNC_EVENT_DESTROY);
 
   /* Call the list of finalizers, let them do thier thing. 
    * Do this before tearing into the rest of the book.
@@ -125,12 +121,10 @@
 
   qof_object_book_end (book);
 
-  kvp_frame_delete (book->kvp_data);
-
   g_hash_table_destroy (book->data_table_finalizers);
   g_hash_table_destroy (book->data_tables);
 
-  qof_entity_release (&book->entity);
+  qof_instance_release (&book->inst);
 
   g_hash_table_foreach_remove (book->hash_of_collections,
                                coll_destroy, NULL);
@@ -159,7 +153,7 @@
 {
   if (!book) return FALSE;
 
-  return(book->dirty || qof_object_is_dirty (book));
+  return(book->inst.dirty || qof_object_is_dirty (book));
 }
 
 void
@@ -167,20 +161,13 @@
 {
   if (!book) return;
 
-  book->dirty = FALSE;
+  book->inst.dirty = FALSE;
   qof_object_mark_clean (book);
 }
 
 /* ====================================================================== */
 /* getters */
 
-KvpFrame *
-qof_book_get_slots (QofBook *book)
-{
-  if (!book) return NULL;
-  return book->kvp_data;
-}
-
 QofBackend * 
 qof_book_get_backend (QofBook *book)
 {
@@ -209,7 +196,7 @@
 void qof_book_kvp_changed (QofBook *book)
 {
   if (!book) return;
-  book->dirty = TRUE;
+  book->inst.dirty = TRUE;
 }
 
 /* ====================================================================== */
@@ -352,8 +339,8 @@
 gboolean qof_book_register (void)
 {
   static QofParam params[] = {
-    { QOF_BOOK_KVP, QOF_TYPE_KVP, (QofAccessFunc)qof_book_get_slots, NULL },
     { QOF_PARAM_GUID, QOF_TYPE_GUID, (QofAccessFunc)qof_entity_get_guid, NULL },
+    { QOF_PARAM_KVP,  QOF_TYPE_KVP,  (QofAccessFunc)qof_instance_get_slots, NULL },
     { NULL },
   };
 
Index: qofbook-p.h
===================================================================
RCS file: /home/cvs/cvsroot/gnucash/src/engine/qofbook-p.h,v
retrieving revision 1.8
retrieving revision 1.8.2.1
diff -Lsrc/engine/qofbook-p.h -Lsrc/engine/qofbook-p.h -u -r1.8 -r1.8.2.1
--- src/engine/qofbook-p.h
+++ src/engine/qofbook-p.h
@@ -41,16 +41,13 @@
 #include "qofbook.h"
 #include "qofid.h"
 #include "qofid-p.h"
+#include "qofinstance-p.h"
 
 /** Book structure */
 struct _QofBook
 {
-  QofEntity   entity;     /**< Unique guid for this book. */
+  QofInstance   inst;     /**< Unique guid for this book. */
 
-  /** The KvpFrame provides a place for top-level data associated 
-   * with this book. */
-  KvpFrame *kvp_data;
-  
   /** The entity table associates the GUIDs of all the objects
    * belonging to this book, with their pointers to the respective
    * objects.  This allows a lookup of objects based on thier guid.
@@ -67,17 +64,14 @@
 
   /** state flag: 'y' means 'open for editing', 
    * 'n' means 'book is closed'  
+   * xxxxx shouldn't this be replaced by the instance editlevel ??? 
    */
   char book_open;
 
-  /** dirty/clean flag. If dirty, then this book has been modified,
-   * but has not yet been written out to storage (file/database) 
-   */
-  gboolean dirty;
-
   /** a flag denoting whether the book is closing down, used to
    * help the QOF objects shut down cleanly without maintaining
    * internal consistency.
+   * XXX shouldn't this be replaced by instance->do_free ??? 
    */
   gboolean shutting_down;
   


More information about the gnucash-changes mailing list