Cyclic dependencies among "Book"(QofBook), "Instance"(QofInstance) and "Backend"(QofBackend)

Agnew Casher agnew.casher at
Wed Jan 6 19:53:57 EST 2016

Hello all,

I am trying to familiarize myself with the above-mentioned dependencies
and wanted to know if there were plans to simplify them. In particular,
the simplification would help eliminate some of the circular
compilation dependencies.

For example:
"Book" should only need to depend on "Instance" (ie: through its
"inheritance") and then "Instance" should only depend on "Backend" (ie:
through a Factory inheritance model). The "Backend" can then deal with
the "File/XML", "SQL", etc... data stores required by "Instance" and

Currently, it appears that "Backend" depends on "Book" to store its
meta-data through "Key-Value Pair" arrays and/or Collections, including
what could be considered "Run-Time Type Information"(RTTI). Perhaps, by
distinguishing such meta-data from accounting-data and having the
"Backend" deal with "Data Stores"(instead of "Book"), this may go a
long way in simplifying the current design?

Kind regards,

More information about the gnucash-devel mailing list