|
@@ -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)
|