geany/geany — pull request #355 by kugel- (2014-10-16 12:38:05+00:00)
Title: Plugin API rework (no function pointers anymore, ABI/API compatible)

PLEASE DO NOT MERGE YET.

I put this here because I saw codebrainz works on something similar, so I don't want this to be left unseen and I think we should coordinate our efforts. I think we share the same goal, don't we?

Anyway, this is my work on remaking the plugin API to get rid of the api function structs and function pointer indirection. It works by exporting the functions directly, and geany plugins linking directly to that. There is a slight complication on windows but I solved it in commit 459797f (on windows you need a dummy dll which lists only the exports but contains no code, it'll resolve to the symbols in the main binary).

Both API and ABI compatibility is maintained (ABI compat by keeping the function pointer array in the main binary until the ABI version is bumped the next time).

The reason I didn't put this up earlier is because I wasnt sure how to proceed with scintilla and tagmanager libraries which is external code (sci in particular).