On 05/08/2014 08:20, Alex Peshkoff wrote:
>
> I want to suggest a first draft of [very restricted] IDL implementation 
> for firebird that should solve all mentioned problems. As an additional 
> non-mentioned before feature it solves the problem of making interface 
> version upgrade compiler independent and reliable.
>
>
I tried to make some adjustments on the implementation part (to not need
to #include file multiple times), but I see a more big problem.

The implementation rely on method shadowing.

So if I have

Impl : Interface
{
    void method1()
    {
        method2();
    }

    method2()
    {
    }
}

and

ImplSpecialization : Impl    // Not supported by yours headers, but
should be IMO
{
    method2()
    {
    }
}

When calling method1() from ImplSpecialization instance, it will call
Impl::method2 instead of ImplSpecialization::method2. Do you have some
suggestion for this?

I also think the version checks must be automatic at least in the C++
API, but calling getVersion in each call is not good. Maybe we can
always insert 10 or so pointers to notImplemented() method in the end of
each vtable.


Adriano


------------------------------------------------------------------------------
Infragistics Professional
Build stunning WinForms apps today!
Reboot your WinForms applications with our WinForms controls. 
Build a bridge from your legacy apps to the future.
http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ostg.clktrk
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to