require '_h2ph_pre.ph';

no warnings 'redefine';

unless(defined(&HEADER_LHASH_H)) {
    eval 'sub HEADER_LHASH_H () {1;}' unless defined(&HEADER_LHASH_H);
    unless(defined(&OPENSSL_NO_FP_API)) {
	require 'stdio.ph';
    }
    unless(defined(&OPENSSL_NO_BIO)) {
	require 'openssl/bio.ph';
    }
    if(defined(&__cplusplus)) {
    }
    unless(defined(&OPENSSL_NO_HASH_COMP)) {
    }
    eval 'sub DECLARE_LHASH_HASH_FN {
        my($f_name,$o_type) = @_;
	    eval q(\'unsigned long f_name\' &_LHASH_HASH( &const  &void *););
    }' unless defined(&DECLARE_LHASH_HASH_FN);
    eval 'sub IMPLEMENT_LHASH_HASH_FN {
        my($f_name,$o_type) = @_;
	    eval q(\'unsigned long f_name\' &_LHASH_HASH( &const  &void * &arg) { $o_type  &a = ($o_type) &arg;  &return $f_name( &a); });
    }' unless defined(&IMPLEMENT_LHASH_HASH_FN);
    eval 'sub LHASH_HASH_FN {
        my($f_name) = @_;
	    eval q($f_name &_LHASH_HASH);
    }' unless defined(&LHASH_HASH_FN);
    eval 'sub DECLARE_LHASH_COMP_FN {
        my($f_name,$o_type) = @_;
	    eval q(\'int\' $f_name &_LHASH_COMP( &const  &void *,  &const  &void *););
    }' unless defined(&DECLARE_LHASH_COMP_FN);
    eval 'sub IMPLEMENT_LHASH_COMP_FN {
        my($f_name,$o_type) = @_;
	    eval q(\'int\' $f_name &_LHASH_COMP( &const  &void * &arg1,  &const  &void * &arg2) { $o_type  &a = ($o_type) &arg1; $o_type  &b = ($o_type) &arg2;  &return $f_name( &a, &b); });
    }' unless defined(&IMPLEMENT_LHASH_COMP_FN);
    eval 'sub LHASH_COMP_FN {
        my($f_name) = @_;
	    eval q($f_name &_LHASH_COMP);
    }' unless defined(&LHASH_COMP_FN);
    eval 'sub DECLARE_LHASH_DOALL_FN {
        my($f_name,$o_type) = @_;
	    eval q( &void $f_name &_LHASH_DOALL( &const  &void *););
    }' unless defined(&DECLARE_LHASH_DOALL_FN);
    eval 'sub IMPLEMENT_LHASH_DOALL_FN {
        my($f_name,$o_type) = @_;
	    eval q( &void $f_name &_LHASH_DOALL( &const  &void * &arg) { $o_type  &a = ($o_type) &arg; $f_name( &a); });
    }' unless defined(&IMPLEMENT_LHASH_DOALL_FN);
    eval 'sub LHASH_DOALL_FN {
        my($f_name) = @_;
	    eval q($f_name &_LHASH_DOALL);
    }' unless defined(&LHASH_DOALL_FN);
    eval 'sub DECLARE_LHASH_DOALL_ARG_FN {
        my($f_name,$o_type,$a_type) = @_;
	    eval q( &void $f_name &_LHASH_DOALL_ARG( &const  &void *,  &void *););
    }' unless defined(&DECLARE_LHASH_DOALL_ARG_FN);
    eval 'sub IMPLEMENT_LHASH_DOALL_ARG_FN {
        my($f_name,$o_type,$a_type) = @_;
	    eval q( &void $f_name &_LHASH_DOALL_ARG( &const  &void * &arg1,  &void * &arg2) { $o_type  &a = ($o_type) &arg1; $a_type  &b = ($a_type) &arg2; $f_name( &a, &b); });
    }' unless defined(&IMPLEMENT_LHASH_DOALL_ARG_FN);
    eval 'sub LHASH_DOALL_ARG_FN {
        my($f_name) = @_;
	    eval q($f_name &_LHASH_DOALL_ARG);
    }' unless defined(&LHASH_DOALL_ARG_FN);
    eval 'sub LH_LOAD_MULT () {256;}' unless defined(&LH_LOAD_MULT);
    eval 'sub lh_error {
        my($lh) = @_;
	    eval q((($lh)-> &error));
    }' unless defined(&lh_error);
    unless(defined(&OPENSSL_NO_FP_API)) {
    }
    unless(defined(&OPENSSL_NO_BIO)) {
    }
    if(defined(&__cplusplus)) {
    }
}
1;
