Paulo Costa schrieb:

An interesting idea, but probably too hard for a student project, would be the capability of using a C library without having to manually create the pas file that translates the c header.

This is what ToPas can already do. But...

That is tedious, error prone and a mess when the .h changes and we continue to use the wrong .pas and strange error creep in.

Right, the translator needs exactly the header files as used to create the library.

I'm aware of possible changes in C libraries and header files, and that's why now I suggest an Pascal compiler with the added ability to process C files. Then that compiler would both compile a changed library, and create an Pascal interface unit at the same time. This is exactly what the CBuilder does for Delphi.

A transformation of C files into Pascal units, as ToPas can do (to some degree), IMO is only a provisional solution. When manual intervention is required in this step, it will be required for every following bugfix or improvement to the C code.

Also there are a lot of C libraries that are not available to fpc because nobody had the time to create the bindings. I know that there is h2pas but it is a off line tool and needs a lot of help from the programmer.

A better way could be to hack a C compiler (GCC ?) and use only the parser and the first compilation stage to have the symbols related to the available functions and structures

This part of ToPas is already finished :-)

and create the pas header from that information. With such tool we could have almost automatic use of any c library...

The hardest problem I found in ToPas is an automated handling of the #defines. They should be classified into literal constants, functions, macros, and (incomplete) code snippets - where code snippets IMO are of no use in a Pascal unit. Such classification could be done easily by an LR parser, but an LL parser only can deal with complete source files.

DoDi


--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to