mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-14 10:29:24 +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.
|
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,
|
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
|
and attempts to translate them to their pascal counterparts. see the
|
||||||
'Constructs' section for a full description of what the translator can
|
.B CONSTRUCTS
|
||||||
handle.
|
section for a full description of what the translator can handle.
|
||||||
|
|
||||||
.SH USAGE
|
.SH USAGE
|
||||||
|
|
||||||
@ -90,6 +90,142 @@ Header file is a win32 header file (adds support for some special macros).
|
|||||||
.TP
|
.TP
|
||||||
.B \-x
|
.B \-x
|
||||||
handle SYS\_TRAP of the PalmOS header files.
|
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
|
.SH SEE ALSO
|
||||||
.IP
|
.IP
|
||||||
.BR ppc386 (1)
|
.BR ppc386 (1)
|
||||||
|
Loading…
Reference in New Issue
Block a user