Provided by: fp-utils-3.0.4_3.0.4+dfsg-18_amd64 bug


       h2pas - The C header to pascal unit conversion program.


       h2pas [options] filename


       h2pas  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.


       H2pas is a command-line tool that translates a C header file to a spascal unit.  It  reads
       the C header file and translates the C declarations to equivalent pascal declarations that
       can be used to access code written in C.

       The output of the h2pas program is written to a file with the same name as  the  C  header
       file  that  was  used  as  input,  but with the extension .pp.  The output file that h2pas
       creates can be customized in a number of ways by means of many options.


       The output of h2pas can be controlled with the following options:

       -d     use external; for all procedure and function declarations.

       -D     use external libname name 'func_name' for function and procedure declarations.

       -e     Emit a series of constants instead of an enumeration type for the C enum construct.

       -i     create an include file instead of a unit (omits the unit header).

       -l libname
              specify the library name for external function declarations.

       -o outfile
              Specify the output file name. Default is the input file  name  with  the  extension
              replaced by .pp "."

       -p     use the letter P in front of pointer type parameters instead of "^".

       -s     Strip  comments from the input file. By default comments are converted to comments,
              but they may be displaced, since a comment is handled by the scanner.

       -t     prepend typedef type names with the letter T (used to follow  Borland's  convention
              that all types should be defined with T).

       -v     replace  pointer parameters by call by reference parameters.  Use with care because
              some calls can expect a NIL pointer.

       -w     Header file is a win32 header file (adds support for some special macros).

       -x     handle SYS_TRAP of the PalmOS header files.


       The following C declarations and statements are recognized:

              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,   subtraction,
              multiplication, division, logical operators, comparison 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).

       preprocessor statements
              the  conditional  preprocessing  commands  are  recognized  and   translated   into
              equivalent  pascal  compiler  directives.  The  special  #ifdef __cplusplus is also
              recognized and removed.

              A typedef statement is changed into a pascal type statement.  The  following  basic
              types are recognized:

              char   changed to char.

              float  changed to real (=double in free pascal).

              int    changed to longint.

              long   changed to longint.

              long int
                     changed to longint.

              short  changed to integer.

                     changed to cardinal.

              unsigned char
                     changed to byte.

              unsigned int
                     changed to cardinal.

              unsigned long int
                     changed to cardinal.

              unsigned short
                     changed to word.

              void   ignored.
       These types are also changed if they appear in the arguments of a function or procedure.

       functions and procedures
              functions  and  procedures  are translated as well; pointer types may be changed to
              call by reference arguments (using the var argument) by using the -p  command  line
              argument.  functions  that  have  a  variable  number of arguments are changed to a
              function with an array of const argument.

              the extern specifier is recognized; however it is ignored. the packed specifier  is
              also  recognised and changed with the PACKRECORDS directive. The const specifier is
              also recognized, but is ignored.

              If the -w option is specified, then the following modifiers are recognized: STDCALL
              , CDECL , CALLBACK , PASCAL , WINAPI , APIENTRY , WINGDIAPI as defined in the win32
              headers.  If additionally the -x option is specified then the SYS_TRAP specifier is
              also recognized.

       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 -e option to change the enus to a series of integer constants.

       unions unions are changed to variant records.

              are changed to pascal records, with C packing.


              ppc386(1) ppumove(1)