[Clemens Ladisch]

Tim Goetze wrote:
Enter gcc version 3, which drops multi-line inline assembly support.

The following compiles fine with gcc 3.3.3:

void f()
{
       __asm__ ("nop\n"
                "nop\n");
}

May compile fine, but like this a 100-line __asm__ goes well beyond my pain threshold when it comes to readability and maintainability.

If your external functions use the correct type (i.e., a pointer to
the base type), the compiler will automatically cast class pointers in
the correct way.  Otherwise, you have to cast to the base type
yourself whenever you 'export' a pointer.

Believe me I have tried to come up with sensible solutions but there's quite a lot more to it than just fixing a few thousand pointer casts.

Basically, you can't rectify the problem because the basic Python Object type (from which my types are derived) is actually at a fixed offset into a Python garbage-collected structure. You can't just slip in a vtable, in fact you can't slip in anything at all; neither is it possible to alternatively (and pointlessly to be sure) prefix the Python GC structure with a vtable without rewriting Python itself.

Could you show some details?  Probably the old code wasn't quite
correct according to The Standard(TM).

What I have is this (from caps code):

class DescriptorStub
: public LADSPA_Descriptor
{
  /* just a constructor and destructor here */
};

template <class T>
class Descriptor
: public DescriptorStub
{
  public:
    Descriptor()
      { setup(); }

    void setup();

    ...
};

The following is OK for an older g++:

void
Descriptor<AmpIV>::setup()
{
  UniqueID = 1794;
  ...
}

but g++ since 4.0 wants this instead:

template <> void
Descriptor<AmpIV>::setup()
{
  ...
}

I cannot for the life of me imagine a good reason why "template <>" should be necessary. "setup()" was never declared as a template, let alone one with an empty template parameter.

If this is indeed prescribed by the language standard, I'll have a very, very hard time getting over it.

It may not look like much but you have to understand that to me coding is also an exercise in aesthetics.

Cheers, Tim

Reply via email to