[Geany-Devel] Adding a plugin
Lex Trotman
elextr at xxxxx
Sun Jun 9 10:42:22 UTC 2013
[...]
> From the Geany plugin website at
>
> http://www.geany.org/manual/reference/plugindata_8h.html#a68c850fc7108c65909f4340da8c16df9
>
> ====================================================
> #define PLUGIN_VERSION_CHECK ( api_required )
> *Value:*
>
> gint plugin_version_check <http://www.geany.org/manual/reference/pluginsymbols_8c.html#a02238186945c26ea04e20410daf5b209>(gint abi_ver) \
> { \
> if (abi_ver != GEANY_ABI_VERSION <http://www.geany.org/manual/reference/plugindata_8h.html#a81ace29a6d7fb7cce2b59100fe3f6d71>) \
> return -1; \
> return (api_required); \
> }
>
> Defines a function to check the plugin is safe to load.
>
> This performs runtime checks that try to ensure:
>
> - Geany ABI data types are compatible with this plugin.
> - Geany sources provide the required API for this plugin. *Parameters:*
> *api_required* The minimum API number your plugin requires. Look at
> the source for the value of GEANY_API_VERSION to use if you want your
> plugin to require the current Geany version on your machine. You should
> update this value when using any new API features.
>
> ======================================================
> The above documentation is crap.
>
Which isn't a very helpful comment.
>
> First, note that the macro definition describes the parameter as abi_ver.
> So, according to the documentation, where does the sole parameter - abi_ver
> - come from?
>
The macro is defining a function, so the parameter comes from the caller of
that function, ie Geany, so you don't need to know about it. So it isn't
described.
>
> So we can skip the test
> if(abi_ver blah blah)
> unless somebody can answer the above question.
>
The macro will generate the test, which *IS* required to prevent plugins
with the wrong ABI being used. A plugin which uses the wrong ABI may cause
crashes, so if its wrong it will return -1 and Geany will not run that
plugin. This is all transparent to you, the plugin writer, just provide
api_required to the macro.
>
> So that leads to the last line of code that generates stuff:
> return api_required;
>
> I eliminated superfluous parens.
>
> As documented, this macro returns what it is passed.
>
Only *IF* the abi matches.
>
> And you wonder why I'm confused?
>
> BTW, this one is
> *Since:* 0.19
>
>
>
> _______________________________________________
> Devel mailing list
> Devel at lists.geany.org
> https://lists.geany.org/cgi-bin/mailman/listinfo/devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.geany.org/pipermail/devel/attachments/20130609/d54ac478/attachment.html>
More information about the Devel
mailing list