h2pas

H2PAS - Free Pascal C header to pascal unit translator.

What follows below is the man page of h2pas. If you have installed the man pages then you can view them with the man command.
h2pas(1)     Free Pascal C header conversion utility     h2pas(1)
NAME
h2pas - The C header to pascal unit conversion program.
SYNOPSIS
h2pas [options] filename
DESCRIPTION
h2pas  attempts  to  convert  a  C header file to a pascal
unit.  it can handle most C constructs that one finds in a
C  header  file,  and  attempts to translate them to their
pascal counterparts. see the CONSTRUCTS section for a full
description of what the translator can handle.
USAGE
H2pas  is  a  command-line tool that translates a C header
file to a spascal unit. It reads the  C  header  file  and
translates  the C declarations to equivalent pascal decla-
rations that can be used to access code written in C.
The output of the h2pas program is written to a file  with
the same name as the C header file that was used as input,
but with the extension .pp.  The output  file  that  h2pas
creates  can be customized in a number of ways by means of
many options.
OPTIONS
The output of h2pas can be controlled with  the  following
options:
-d     use external; for all procedure and function decla-
rations.
-D     use external libname name 'func name' for  function
and procedure declarations.
-e     Emit  a  series of constants instead of an enumera-
tion type for the C enum construct.
-i     create an include file instead of a unit (omits the
unit header).
-l libname
specify the library name for external function dec-
larations.
-o outfile
Specify the output file name. Default is the  input
file name with the extension replaced by .pp "."
FreePascal                 12 Dec 1999                          1
h2pas(1)     Free Pascal C header conversion utility     h2pas(1)
-p     use  the  letter P in front of pointer type parame-
ters instead of "^".
-s     Strip comments from the input file. By default com-
ments  are  converted  to comments, but they may be
displaced, since a comment is handled by the  scan-
ner.
-t     prepend  typedef type names with the letter T (used
to  follow  Borland's  convention  that  all  types
should be defined with T).
-v     replace  pointer  parameters  by  call by reference
parameters.  Use with care because some  calls  can
expect a NIL pointer.
-w     Header  file  is  a win32 header file (adds support
for some special macros).
-x     handle SYS TRAP of the PalmOS header files.
CONSTRUCTS
The following C declarations  and  statements  are  recog-
nized:
defines
defines  are  changed into pascal constants if they
are simple defines.  macros are changed -  wherever
possible  to  functions;  however the arguments are
all integers, so these must  be  changed  manually.
Simple  expressions  in  define staments are recog-
nized, as are most arithmetic operators:  addition,
substraction,   multiplication,  division,  logical
operators, comparision operators, shift  operators.
The C construct ( A ? B : C) is also recognized and
translated to a pascal construct with an IF  state-
ment (this is buggy, however).
preprocessor statements
the  conditional  preprocessing commands are recog-
nized and translated into  equivalent  pascal  com-
piler directives. The special #ifdef   cplusplus is
also recognized and removed.
typedef
A typedef statement is changed into a  pascal  type
statement.  The  following  basic  types are recog-
nized:
FreePascal                 12 Dec 1999                          2
h2pas(1)     Free Pascal C header conversion utility     h2pas(1)
char   changed to char.
float  changed to real (=double in free pascal).
int    changed to longint.
long   changed to longint.
long int
changed to longint.
short  changed to integer.
unsigned
changed to cardinal.
unsigned char
changed to byte.
unsigned int
changed to cardinal.
unsigned long int
changed to cardinal.
unsigned short
changed to word.
void   ignored.
These types are also changed if they appear in  the  argu-
ments of a function or procedure.
functions and procedures
functions  and  procedures  are translated as well;
pointer types may be changed to call  by  reference
arguments  (using the var argument) by using the -p
command line argument. functions that have a  vari-
able  number of arguments are changed to a function
with an array of const argument.
specifiers
the extern specifier is recognized; however  it  is
ignored.  the  packed  specifier is also recognised
and changed with  the  PACKRECORDS  directive.  The
const specifier is also recognized, but is ignored.
modifiers
If the -w option is specified, then  the  following
modifiers  are  recognized: STDCALL , CDECL , CALL-
BACK , PASCAL , WINAPI , APIENTRY  ,  WINGDIAPI  as
defined  in the win32 headers.  If additionally the
-x option is specified then the SYS TRAP  specifier
is also recognized.
FreePascal                 12 Dec 1999                          3
h2pas(1)     Free Pascal C header conversion utility     h2pas(1)
enums  enum constructs are changed into enumeration types;
bear in mind that in C enumeration types  can  have
values  assigned  to  them; Free Pascal also allows
this to a certain degree. If you know  that  values
are  assigned  to  enums,  it is best to use the -e
option to change the enus to a  series  of  integer
constants.
unions unions are changed to variant records.
structs
are changed to pascal records, with C packing.
SEE ALSO
ppc386(1) ppumove(1)
FreePascal                 12 Dec 1999                          4