home | help
h2pas(1)	     Free Pascal C header conversion utility		h2pas(1)

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 trans-
     late 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 de-
	    clarations.

     -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 con-
	    verted 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 Bor-
	    land'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  de-
	    fines.  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, divi-
	    sion, logical operators, comparison operators, shift operators.  The
	    C construct ( A ? B : C) is also recognized and translated to a pas-
	    cal 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  vari-
	    able  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 rec-
	    ognized:  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)

home | help