Hi again!

Florian Klaempfl schrieb:
Sven Barth schrieb:
Florian Klaempfl schrieb:
Sven Barth schrieb:
All in all I have the following goals for (my) future work on this:
* make a cppclass an implicit pointer
I don't like this idea because C++-classes aren't an implicit pointer
either.

At first I wanted to disagree with you... philosophing about the Pascal
way of doing things, bla, bla...

Pascal has also objects which are no pointers ;)


I know... I know... that might have contributed a bit to my decision to give up implicit pointers ^^


If so, how do you
suggest to write those tests, especially as they (currently) rely on a
external library...

Libraries or object files? FPC does similiar testing for C linking: the
C sources are checked in into
http://svn.freepascal.org/svn/fpc/trunk/tests/test/cg/obj/
Compiled object files lay in the appropriate sub dir of this dir.

Testing C++ class linking should be done similiar imo.


In theory that is possible, but I found a practical problem: C++ code requires libstdc++ or at least libsupc++ which implements the "new" and "delete" operators. And to make things worse: this library isn't available in the Windows release of the compiler... (not a real problem for me as I'm working on Linux...)

While I could be able to simulate the needed functionality of the library through Pascal units with correct named procedures/functions, I don't think that this is the way to go. A better solution (at least for compiler tests) would be to just compile but not link those test units. Does the test framework support such an option?


The following is the syntax I'm currently trying to implement:

TMyTestClass = cppclass
  procedure MyTestMethod1;
  procedure MyTestMethod2; name 'SecondMethod';
end; external 'foolib.so' name 'MyTestClass' namespace 'Foo::Bar';

This corresponds to this C++ class interface:

namespace Foo::Bar {
  class MyTestClass {
    public:
      void MyTestMethod1();
      void SecondMethod();
  };
}

The "external foo name bar"-part should be pretty easy (thanks to Jonas' objc branch which enabled me to find the right spots to include my code ^^ ). The 'name' for methods shouldn't be that complicated, too. But for namespace support I'll need to introduce a new keyword "namespace".

Any comments on this proposal?


Because of the LLVM thread, I think I'll also check the LLVM API to order the priority of needed features (e. g. virtual methods).

Greetings,
Sven
_______________________________________________
fpc-devel maillist  -  [email protected]
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to