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