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

FreeBSD Manual Pages


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

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

       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.

       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

       -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

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

       The following C declarations and	statements are recognized:

	      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.

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

	      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.

	      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.

	      are changed to pascal records, with C packing.

	      ppc386(1)	ppumove(1)

Free Pascal			  12 Dec 1999			      h2pas(1)


Want to link to this manual page? Use this URL:

home | help