Am 20.05.2010 um 11:21 schrieb Hartmut Eilers:

>> If it is you can resolve it using the C preprocessor using a command
>> line similar to this one:
> 
>> cpp --no-stdinc comedi.h > comedi.cpped.h
> 
>> Afterwards try h2pas again.
> 
> I tried the above mentioned fix with the following result:
> 
> hart...@canis:~/src/OpenMSR/PhysMach/comedi $ cpp --no-stdinc comedi.h
>> comedi.cpped.h
> cc1: error: unrecognized command line option "-fno-stdinc"
> 
> This commandline option is not recognized by the compiler, hmmm.

Accodring to the man page of cpp there is -nostdinc. But even after trying it, 
the problem remains.

> Could anybody lend me a hand with the translation of the comedi header files ?
> Any hints are highly appreciated. Are there other tools I can use ?
> Hints on other
> docs / examples ?

h2pas only does the simple direct stuff. 

All the rest needs manual replacement.

As much as I know unsigned corresponds to unsigned int.
static inline seems to be the problem.

Example (line 393):

static inline unsigned NI_USUAL_PFI_SELECT(unsigned pfi_channel)
{
        if(pfi_channel < 10)
                return 0x1 + pfi_channel;
        else
                return 0xb + pfi_channel;
}

unsigned int NI_USUAL_PFI_SELECT(unsigned int pfi_channel);

there are about 15 similar cases. At least this gives a start.

Maybe you need a translation of the function in the implementation section.

You may also need to add functions for the macros in /* range stuff */ and /* 
packs and unpacks a channel/range number */

check for " { was #define dname(params) para_def_expr } " in the resulting .pp 
file.

Finally, I prefer to use ctypes. So, unsigned int becomes cuint, float cfloat 
and so on. It makes checking easier.

Michael Schindler
_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal

Reply via email to