[webkit-efl] Use of pimpl idiom for Ewk classes

Dumez, Christophe christophe.dumez at intel.com
Thu Oct 18 01:56:02 PDT 2012


Hi,

Mikhail and I are currently working on refactoring the Ewk classes to make
them more C++-like, more convenience to use and less bug-prone.
As part of this work, we came out with a proposal: Use pimpl idom for Ewk
classes.

The Ewk classes are currently defined in the private headers, with all
their members public. The private headers also usually contain C-style
functions to interact with the Ewk class from inside WebKit.
Now, we would like to get rid of those private C functions and replace them
with C++ methods in the Ewk class. The issue is that the Ewk class members
are currently public meaning we can alter the members directly from outside
the Ewk class implementation and bypass those class methods.

At the same time, we don't want to make all the Ewk class members private
and create getter / setter methods for all of them. Not only this means a
lot of refactoring work and extra code, but also, this means that are
public C API implementation will need to go through those getters / setters
as well, instead of interacting with the class members directly.

We therefore thought of using the pimpl idiom so that the class members are
now stored in a POD struct in the cpp file. This effectively prevents
access to them from code other than our public C API and Ewk class methods,
which is what we want. The C API functions can still directly interact with
the Ewk class members which is convenient. We can get rid of all C
functions in the private headers and replace them with Ewk class methods.
Therefore, the coding style in WK2 EFL port implementation with be more C++
oriented.

I created a meta bug for this task:
https://bugs.webkit.org/show_bug.cgi?id=99696

I also wrote a first patch to *show what the result looks* like for the
Ewk_Download_Job class. The patch also adds convenience macros to
ewk_private.h to make pimpl idiom usage simpler and less error-prone:
*https://bugs.webkit.org/show_bug.cgi?id=99697*

We hope you like the result as much as we do.
If everyone agrees, Mikhail and I are planning to port other Ewk classes to
this proposal and update the WebKit EFL coding style.

Kr,
-- 
Christophe Dumez
Linux Software Engineer, PhD
Intel Finland Oy - Open Source Technology Center
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-efl/attachments/20121018/acf3fd48/attachment.html>


More information about the webkit-efl mailing list