Browse Source

+ Added list of supported constructs

michael 26 years ago
parent
commit
a4363f59f8
1 changed files with 138 additions and 2 deletions
  1. 138 2
      install/man/h2pas.1

+ 138 - 2
install/man/h2pas.1

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