Idempotency problem



Here's an example:

> cat foo.idl
#ifndef FOO_IDL
#define FOO_IDL

module ack
{
  interface foo
  {
    typedef short value;
  };
};

#endif
> cat bar.idl
#ifndef BAR_IDL
#define BAR_IDL

#include "foo.idl"

module ack
{
  interface bar: foo
  {
    boolean op (in foo::value v);
  };
};

#endif
> orbit-idl -I. foo.idl bar.idl
> cat test01.c
#include "foo.h"
#include "bar.h"

int main (void)
{
  return (0);
}
> gcc -g -Wall `orbit-config --cflags client` -c test01.c
In file included from test01.c:3:
bar.h:62: conflicting types for `POA_ack_foo__epv'
foo.h:48: previous declaration of `POA_ack_foo__epv'
bar.h:68: conflicting types for `POA_ack_foo__vepv'
foo.h:54: previous declaration of `POA_ack_foo__vepv'
bar.h:74: conflicting types for `POA_ack_foo'
foo.h:60: previous declaration of `POA_ack_foo'

First, a couple of easy name resolution questions.  Should the parent interface of bar be specified explicitly as ack::foo?  I noticed that Bonobo does it this way.  Can the type for the parameter of op be specified simply as value rather than foo::value?

Finally, the real question.  How do I get rid of the compiler errors?

Thanks,
Eric.
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]