[Spice-devel] [PATCH spice-streaming-agent 2/2] Add a macro to deal with the boilerplate of writing a streaming agent plugin

Christophe de Dinechin cdupontd at redhat.com
Thu Nov 23 14:07:08 UTC 2017



> On 23 Nov 2017, at 14:55, Frediano Ziglio <fziglio at redhat.com> wrote:
> 
>>> 
>>> On 23 Nov 2017, at 12:26, Frediano Ziglio <fziglio at redhat.com> wrote:
>>> 
>>>> 
>>>> From: Christophe de Dinechin <dinechin at redhat.com>
>>>> 
>>>> Signed-off-by: Christophe de Dinechin <dinechin at redhat.com>
>>>> ---
>>>> include/spice-streaming-agent/plugin.hpp | 8 ++++++++
>>>> 1 file changed, 8 insertions(+)
>>>> 
>>>> diff --git a/include/spice-streaming-agent/plugin.hpp
>>>> b/include/spice-streaming-agent/plugin.hpp
>>>> index 1a58856..c370eab 100644
>>>> --- a/include/spice-streaming-agent/plugin.hpp
>>>> +++ b/include/spice-streaming-agent/plugin.hpp
>>>> @@ -149,6 +149,14 @@ extern "C" unsigned
>>>> spice_streaming_agent_plugin_interface_version;
>>>> */
>>>> extern "C" SpiceStreamingAgent::PluginInitFunc
>>>> spice_streaming_agent_plugin_init;
>>>> 
>>>> +#define SPICE_STREAMING_AGENT_PLUGIN(agent)                             \
>>>> +    __attribute__ ((visibility ("default")))                            \
>>>> +    unsigned spice_streaming_agent_plugin_interface_version =           \
>>>> +        SpiceStreamingAgent::PluginInterfaceVersion;                    \
>>>> +                                                                        \
>>>> +    __attribute__ ((visibility ("default")))                            \
>>>> +    bool spice_streaming_agent_plugin_init(SpiceStreamingAgent::Agent*
>>>> agent)
>>>> +
>>>> #endif
>>>> 
>>>> #endif // SPICE_STREAMING_AGENT_PLUGIN_HPP
>>> 
>>> Surely helps. Some notes:
>>> - spice_streaming_agent_plugin_interface_version is not const so I assume
>>> you want to allow to change it;
>> 
>> No, it’s that if you make it const, the compiler may optimize it away.
>> There are two ways I can avoid that:
>> 1. Use its address
>> 2. Check that it won’t eliminate it if the __attribute__ above is used.
>> 
> 
> The attribute and the extern "C" should give the compiler quite lot of
> hints (more the second).
> 
>>> - the attribute is GCC syntax but can be changed if needed;
>> 
>> This was one reason to put it in a macro.
>> 
>> 
>>> - I know we use that style of indentation for line continuation but I
>>> honestly prefer to not have that indentation preferring a " \" at the
>>> end. This as current style:
>>> - is hard to maintain. Currently is already broken as last like is
>>>   wrong;
>> 
>> It’s actually the other way round with Emacs, which auto-indents
>> trailing \ (also has a C-c C-\ command (c-backslash-region).
>> 
>> The last line is just too long, I will split it.
>> 
>>> - it make copy&paste harder unless you indent always at a given
>>>   standard column;
>> 
>> Again, the problem goes the opposite way if you use Emacs.
>> 
>>> - make email patch potentially hard to read.
>> 
>> Why? Are you using a proportional font when reading patch emails?
>> 
> 
> If lines are long they'll all split in 2 lines.
> Also if code needs to be indented again there will be a lot of lines
> of difference just to change indentation forcing people to apply the
> patch and use some options to ignore spaces which will potentially can
> hide other unwanted space changes.

I don’t see how any of this is specific to trailing backslashes.
You could say the same thing for reindenting code because you
added an ‘if’.

> 
>> In any case, that looks like a personal preference, and it goes the
>> opposite way for me for a variety of reasons:
>> - Your reasons backwards (when using Emacs to write and read patches)
>> - Emacs Is Always Right™
>> - Having \ at a known location helps me “put it out of the way” while
>> reading.
>> 
>> 
>> Cheers,
>> Christophe
>> 
> 
> Half of your reasoning are based on the editor used, if I remove
> Emacs from them basically you agree with me :-)

All of our respective reasonings are based on personal preferences.
Those, in turn, derive from the tools we use. I am not trying to make
them anything else than personal preferences. I was only explaining
that my editor choice happens to turn 100% of your arguments backwards.

But no, I don’t agree that code with misaligned trailing \ looks better
or is easier to read than aligned code. It makes it hard to read for me,
and I see no real reason to write code I find hard to read :-)

> 
> Frediano
> _______________________________________________
> Spice-devel mailing list
> Spice-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/spice-devel



More information about the Spice-devel mailing list