+ Added list of supported constructs

This commit is contained in:
michael 1999-12-12 00:13:09 +00:00
parent 4ebd215a8c
commit a4363f59f8

View File

@ -13,8 +13,8 @@ h2pas \- The C header to pascal unit conversion program.
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.
.B CONSTRUCTS
section for a full description of what the translator can handle.
.SH USAGE
@ -90,6 +90,142 @@ Header file is a win32 header file (adds support for some special macros).
.TP
.B \-x
handle SYS\_TRAP of the PalmOS header files.
.SH CONSTRUCTS
The following C declarations and statements are recognized:
.TP
.B 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 recognized, 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
statement (this is buggy, however).
.TP
.B "preprocessor statements"
the conditional preprocessing commands are recognized and translated into
equivalent pascal compiler directives. The special
.B "#ifdef \_\_cplusplus"
is also recognized and removed.
.TP
.B typedef
A typedef statement is changed into a pascal type statement. The following
basic types are recognized:
.RS
.TP
.I char
changed to char.
.TP
.I float
changed to real (=double in free pascal).
.TP
.I int
changed to longint.
.TP
.I long
changed to longint.
.TP
.I "long int"
changed to longint.
.TP
.I short
changed to integer.
.TP
.I unsigned
changed to cardinal.
.TP
.I "unsigned char"
changed to byte.
.TP
.I "unsigned int"
changed to cardinal.
.TP
.I "unsigned long int"
changed to cardinal.
.TP
.I "unsigned short"
changed to word.
.TP
.I void
ignored.
.RE
These types are also changed if they appear in the arguments of a function
or procedure.
.TP
.B "functions and procedures"
functions and procedures are translated as well; pointer types may be
changed to call by reference arguments (using the
.B var
argument) by using the
.B \-p
command line argument. functions that have a variable number of arguments
are changed to a function with an
.B "array of const"
argument.
.TP
.B specifiers
the
.I extern
specifier is recognized; however it is ignored. the
.I packed
specifier is also recognised and changed with the
.I PACKRECORDS
directive. The
.I const
specifier is also recognized, but is ignored.
.TP
.B modifiers
If the
.B \-w
option is specified, then the following modifiers are recognized:
.I STDCALL
,
.I CDECL
,
.I CALLBACK
,
.I PASCAL
,
.I WINAPI
,
.I APIENTRY
,
.I WINGDIAPI
as defined in the win32 headers.
If additionally the
.B \-x
option is specified then the
.I SYS\_TRAP
specifier is also recognized.
.TP
.B 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
.B \-e
option to change the enus to a series of integer constants.
.TP
.B unions
unions are changed to variant records.
.TP
.B structs
are changed to pascal records, with
.B C
packing.
.IP
.SH SEE ALSO
.IP
.BR ppc386 (1)