mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 15:29:25 +02:00
+ Added list of supported constructs
This commit is contained in:
parent
4ebd215a8c
commit
a4363f59f8
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user