Provided by: fp-utils-3.2.2_3.2.2+dfsg-46_amd64 bug

NAME

       h2pas - The C header to pascal unit conversion program.

SYNOPSIS

       h2pas [options] filename

DESCRIPTION

       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.

USAGE

       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.

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.

CONSTRUCTS

       The following C declarations and statements are recognized:

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

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

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

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

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

       structs
              are changed to pascal records, with C packing.

SEE ALSO

              ppc386(1) ppumove(1)

Free Pascal                                        12 Dec 1999                                          h2pas(1)