One other consideration: The dependency should make sense architecturally: A 
dependency on code in libgnucash/engine nearly always makes sense; a dependency 
in the register on a function in import/export does not. That doesn't mean that 
you should copy-and-paste the code instead, it means that the code should be 
extracted from import/export and moved somewhere that does make sense. The 
logical place for GUI code is gnome-utils while business logic code belongs in 
libgnucash/engine--and note that there is a *lot* of business logic code that 
has gotten intermingled with GUI code and needs to be refactored out. It's a 
major maintenance headache because it often means that the same business logic 
is implemented in more than one place, often with subtle differences.

Whether that's the case for your window-reconcile.c example depends on what you 
need to do: If you want to launch the reconcile window from the OFX importer 
the way AQBanking does, no problem. If you need some implementation function in 
window-reconcile.c then it strongly suggests that that function is of more 
general use than just the reconcile window and probably belongs somewhere else.

Regards,
John Ralls


> On Apr 18, 2020, at 5:29 AM, Geert Janssens <geert.gnuc...@kobaltwit.be> 
> wrote:
> 
> First off, modules are mostly on the way out. I have been working on removing 
> most uses of 
> those and plan to eliminate even more. The gnc_module code itself will remain 
> until we have a 
> better alternative.
> 
> Other than that, yes, you are allowed to include headers from other 
> "modules". Or more 
> generally from other compile units (the objects defined with add_library or 
> add_object). There 
> are other restrictions though:
> 
> 1. you may have to add the proper include and library directories to the 
> compile unit's 
> CMakeLists.txt file. Without this the compiler won't find the header file 
> (and later the library to 
> link to)
> 
> 2. In doing so you should be careful not to introduce circular dependencies. 
> That is if unit A 
> already depends on unit B, you can't make unit B also depend unit A.
> 
> 3. reconcile-window.h is a C header file, while gnc-ofx-import.cpp is a C++ 
> source file. You may 
> have to include it inside an 'extern "C"' block.
> 
> You didn't provide any details as to what errors you got, so at this point 
> it's hard to tell what 
> exactly went wrong.
> 
> Regards,
> 
> Geert
> 
> Op zaterdag 18 april 2020 07:29:15 CEST schreef jeanl:
>> Devs, I have a question to which I can't find an answer. It is possible for
>> a function from a module (say import-ofx) to call a function from another
>> module (declared in "reconcile-window.h" for example).
>> I'm not able to include reconcile-window.h from gnc-ofx-import.cpp , I
>> assume the build isn't setup to include the right headers.
>> But perhaps this is by design and a module isn't supposed to be able to call
>> another one. In that case, how can we make it so a function from a certain
>> module is followed by a call to a function from a different module
>> automatically?
>> J.
>> 
>> 
>> 
>> --
>> Sent from: http://gnucash.1415818.n4.nabble.com/GnuCash-Dev-f1435356.html
>> _______________________________________________
>> gnucash-devel mailing list
>> gnucash-devel@gnucash.org
>> https://lists.gnucash.org/mailman/listinfo/gnucash-devel
> 
> 
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel@gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel

_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to