The last time I checked, C++ had stricter type checking. But yes, I am
recommending a C-style interface.

On 24/08/07, David McNab <[EMAIL PROTECTED]> wrote:
>
> On Fri, 2007-08-24 at 12:41 +0800, Martin Ellison wrote:
> > C and C++ have a large common subset; perhaps you could use that.
>
> Haha, nice one :)
>
> The common subset between C and C++ is pretty much C, isn't it?
>
> Cheers
> David
>
> PS - shouldn't give up on the basic OO of C++. OO is not a panacea for
> large projects, but if well used can take away a lot of pain.
>
> > On 24/08/07, David McNab <[EMAIL PROTECTED]> wrote:
> >         On Thu, 2007-08-23 at 19:57 +0000, Mark Carter wrote:
> >         > It's also why I'm trying to convince people to stop using C
> >         ++ - C is
> >         > just easier to interface with.
> >
> >         I find it way easier to wrap over C than C++, but with the
> >         cost of
> >         implementing stuff in C just to benefit wrapping, it's like
> >         the tail
> >         trying to wag the dog.
> >
> >         C++, if done right, offers enormous programming leverage:
> >         - more readable code
> >         - more maintainable code
> >         - get more done in much less lines
> >         - easy to extend
> >         - eliminates a lot of menial and 'yak shaving' boilerplating
> >         - create very satisfying and intuitive abstractions
> >
> >         But there's the wrapping problem - and admittedly C++ is a
> >         hell of a lot
> >         harder to wrap than C.
> >
> >         There are two solutions:
> >
> >         1. Throw the header files at SWIG. By default, SWIG creates a
> >         plain-C
> >             wrapper that in many cases Just Works (TM). It's not hard
> >         to dress
> >             up this layer within the scripting language, eg neat
> >         classes
> >             done as Pyrex extension classes for the Python wrapper. Or
> >         in FICL,
> >             do thin primitives over the top of the plain-C wrapper,
> >         then
> >             write some nice Forth words to get the desired
> >         abstraction.
> >
> >         or
> >
> >         2. Hand-code a C wrapper on top. Pass all object instances
> >         in/out as
> >             opaque void pointers. Write attribute getter and setter
> >         funcs and
> >             method dispatchers.
> >
> >         Example:
> >
> >           class Fred {
> >
> >             Fred();
> >             ~Fred();
> >             int foo;
> >             char *bar(float f);
> >           }
> >
> >         wraps in C as:
> >
> >           extern "C" {
> >
> >           void *Fred_new() {
> >             return (void *)(new Fred());
> >           }
> >
> >           void Fred_del(void *pFred) {
> >             ((Fred *)pFred)->~Fred();
> >           }
> >
> >           int Fred_get_foo(void *pFred) {
> >             return ((Fred *)pFred)->foo;
> >           }
> >
> >           void Fred_set_foo(void *pFred, int foo) {
> >             ((Fred *)pFred)->foo = foo;
> >           }
> >
> >           char *Fred_bar(void *pFred, float f) {
> >             return ((Fred *)pFred)->bar(f);
> >           }
> >
> >           }
> >
> >
> >         Cheers
> >         David
> >
> >
> >
> >
> >         _______________________________________________
> >         Cinelerra mailing list
> >         [email protected]
> >         https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra
> >
> >
> >
> > --
> > Regards,
> > Martin
> > ([EMAIL PROTECTED])
> > IT: http://methodsupport.com Personal: http://thereisnoend.org
>
>
> _______________________________________________
> Cinelerra mailing list
> [email protected]
> https://init.linpro.no/mailman/skolelinux.no/listinfo/cinelerra
>



-- 
Regards,
Martin
([EMAIL PROTECTED])
IT: http://methodsupport.com Personal: http://thereisnoend.org

Reply via email to