Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

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  at-
       tempts  to  translate  them  to their pascal counterparts. see the CON-
       STRUCTS section for a full description of what the translator can  han-
       dle.

USAGE
       H2pas is	a command-line tool that translates a C	header file to a spas-
       cal  unit. It reads the C header	file and translates the	C declarations
       to equivalent pascal declarations that can be used to access code writ-
       ten 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 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
	      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  spe-
	      cial 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,	multi-
	      plication, 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	trans-
	      lated 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 func-
       tion 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 ar-
	      gument) 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 PACK-
	      RECORDS 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 ,  API-
	      ENTRY , WINGDIAPI	as defined in the win32	headers.  If addition-
	      ally  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  op-
	      tion 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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=h2pas&sektion=1&manpath=FreeBSD+Ports+14.3.quarterly>

home | help