On Tue, 2003-04-01 at 01:18, Micah Dowty wrote:
> Lalo and I have been discussing this more on IRC.
> 
> The main sticking point seems to be exceptions- It would be great to use C++ as
> a C-with-exceptions, but the problem with that comes in interfacing between libOm
> and other components that may be in C, C++, Python, or any other language. If you
> call a C++ function from C (or from a C interface generated for another language)
> the exception wouldn't be handled correctly.
> 
> There are a few solutions to this:
> 
>   - Give up on real C compatibility, and use something C++-friendly like SWIG
>     for interfacing to other languages
> 
>   - Allow users of libOm to produce either C++ exceptions or something C-friendly.
>     This would be a lot of unnecessary pain.
> 
>   - Make Om more like pg1's protocol- a protocol definition with completely 
>     separate implementations in each language.
> 
>   - Give up on using C++ in libOm, and stick to some C-compatible exceptions.
>     The two workable ways to do this that we've come up with so far:
> 
>        - Use calling macros similar to what pg1 uses, but with real objects instead
>          of just integers for exceptions. The objects could be tagged as the stack
>          unwinds, for providing backtraces.
> 
>        - Use setjmp/longjmp and a separate stack. There's an implementation of this
>          in Kazlib: http://users.footprints.net/~kaz/kazlib.html

Apart from the issue of interfacing with other languages, I find it wise
to use C++ just as "improved C". Reasons:
      * Really well mastering C++ takes years. It is not only about
        object modelling, it is also because there are a lot of more or
        less hidden technical pitfalls. It's long and difficult to write
        a perfect class. When your class is 95% perfect, 10% of it will
        be effectively used ...
      * C++ can be very error-prone if design patterns and coding
        guidelines are not strongly enforced.
      * I don't know if our community has, in average, a sufficient
        level of experience in C++.
      * We are (so far) in the C world. There is some sort of gap
        between the C and the C++ world (gnome vs KDE)
      * Object-oriented practices can be adopted even with non-oo
        languages (e.g.: gtk is written in C)
      * PicoGUI-2 is aimed at being a more stable refactoring of
        PicoGUI-1. But with C++ newly adopted, PG2 may be again
        experimental, so the stable one would have to become ... PG3 !

I would personally love an object design, especially for pgserver
drivers.

   ...but...

I find C++ too risky for PG2

If it only about exceptions, I would try to keep C and explore
possibilities to find techniques to mimmic these C++ exceptions
(probably with some setjmp/longjmp deeply hidden behind macros). This
seems anyway to be a broad concern, so no doubt many articles can be
found about that (http://www.google.com/search?q=%22exceptions+in+C%22).

If it is about the excitement of another language, I would invest on a
C++ client lib.

Finally, PG2 targets also embedded devices, not only with linux. Some
processor may not have a C++ compiler...

  Pascal


-------------------------------------------------------
This SF.net email is sponsored by: ValueWeb: 
Dedicated Hosting for just $79/mo with 500 GB of bandwidth! 
No other company gives more support or power for your dedicated server
http://click.atdmt.com/AFF/go/sdnxxaff00300020aff/direct/01/
_______________________________________________
Pgui-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/pgui-devel

Reply via email to