[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    Re: exporting symbols (was Re: The goodness of goodness)
From:       Michael Matz <matz () kde ! org>
Date:       2001-05-29 11:15:24
[Download RAW message or body]

Hi,

On Tue, 29 May 2001, Dirk Mueller wrote:

> All we can do is try it. such a parser can't be too difficult. should we
> start with kdoc or with dcopidl ? :)

I wanted to originally base it on dcopidl to accept something like this
syntax:

class KDE_PRIVATE MyClass:public BaseClass,private PClass {
...
};

to make all symbols resulting from class MyClass non-public;

class Bla {
public:
  KDE_PRIVATE int internal_method (int whateever);
};

to make this one method non-public, and:

class Blubb {
public:
KDE_START_PRIVATE
  int method1();
  void another_method();
KDE_STOP_PRIVATE
  int visible_method();
};

to make all methods between the obvious pair non-public.

To be compatible with C++, this somewhere needs #define'ing away the
KDE_*PRIVATE tokens.  So we don't need to process comments.

One problem which needs thought is: what happens with inherited symbols?
The most simple (and arguable most correct) method is to really only make
those symbols non-visible, which are explicitely mentioned, which then
means, that this is possible:
  class A {public: int m();};
  class B:public A {public: KDE_PRIVATE int m();};
and means A::m() is visible, but B::m() not, which _might_ have issues
with virtuality (what is, if m is virtual, another DSO defines a class C
based on B, and calles m().  There _should_ be linker errors, but this
needs investigation).

With regard to kdoc: the tool should be run as part of the build system,
and right now we don't require perl for a simple make, with kdoc we would.


Ciao,
Michael.

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic