require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&_GLIBCXX_DEBUG_MACRO_SWITCH_H)) {
    eval 'sub _GLIBCXX_DEBUG_MACRO_SWITCH_H () {1;}' unless defined(&_GLIBCXX_DEBUG_MACRO_SWITCH_H);
    unless(defined(&_GLIBCXX_DEBUG)) {
	eval 'sub _GLIBCXX_DEBUG_ASSERT {
	    my($_Condition) = @_;
    	    eval q();
	}' unless defined(&_GLIBCXX_DEBUG_ASSERT);
	eval 'sub _GLIBCXX_DEBUG_PEDASSERT {
	    my($_Condition) = @_;
    	    eval q();
	}' unless defined(&_GLIBCXX_DEBUG_PEDASSERT);
	eval 'sub _GLIBCXX_DEBUG_ONLY {
	    my($_Statement) = @_;
    	    eval q(;);
	}' unless defined(&_GLIBCXX_DEBUG_ONLY);
	eval 'sub __glibcxx_requires_cond {
	    my($_Cond,$_Msg) = @_;
    	    eval q();
	}' unless defined(&__glibcxx_requires_cond);
	eval 'sub __glibcxx_requires_valid_range {
	    my($_First,$_Last) = @_;
    	    eval q();
	}' unless defined(&__glibcxx_requires_valid_range);
	eval 'sub __glibcxx_requires_sorted {
	    my($_First,$_Last) = @_;
    	    eval q();
	}' unless defined(&__glibcxx_requires_sorted);
	eval 'sub __glibcxx_requires_sorted_pred {
	    my($_First,$_Last,$_Pred) = @_;
    	    eval q();
	}' unless defined(&__glibcxx_requires_sorted_pred);
	eval 'sub __glibcxx_requires_partitioned {
	    my($_First,$_Last,$_Value) = @_;
    	    eval q();
	}' unless defined(&__glibcxx_requires_partitioned);
	eval 'sub __glibcxx_requires_partitioned_pred {
	    my($_First,$_Last,$_Value,$_Pred) = @_;
    	    eval q();
	}' unless defined(&__glibcxx_requires_partitioned_pred);
	eval 'sub __glibcxx_requires_heap {
	    my($_First,$_Last) = @_;
    	    eval q();
	}' unless defined(&__glibcxx_requires_heap);
	eval 'sub __glibcxx_requires_heap_pred {
	    my($_First,$_Last,$_Pred) = @_;
    	    eval q();
	}' unless defined(&__glibcxx_requires_heap_pred);
	eval 'sub __glibcxx_requires_nonempty () {
	    eval q();
	}' unless defined(&__glibcxx_requires_nonempty);
	eval 'sub __glibcxx_requires_string {
	    my($_String) = @_;
    	    eval q();
	}' unless defined(&__glibcxx_requires_string);
	eval 'sub __glibcxx_requires_string_len {
	    my($_String,$_Len) = @_;
    	    eval q();
	}' unless defined(&__glibcxx_requires_string_len);
	eval 'sub __glibcxx_requires_subscript {
	    my($_N) = @_;
    	    eval q();
	}' unless defined(&__glibcxx_requires_subscript);
    } else {
	require 'cstdlib';
	require 'cstdio';
	require 'debug/macros.ph';
	eval 'sub _GLIBCXX_DEBUG_ASSERT {
	    my($_Condition) = @_;
    	    eval q( &do {  &if (! ($_Condition))  &std:: &__debug:: &__replacement_assert( &__FILE__,  &__LINE__,  &__PRETTY_FUNCTION__, $_Condition); }  &while ( &false));
	}' unless defined(&_GLIBCXX_DEBUG_ASSERT);
	if(defined(&_GLIBCXX_DEBUG_PEDANTIC)) {
	    eval 'sub _GLIBCXX_DEBUG_PEDASSERT {
	        my($_Condition) = @_;
    		eval q( &_GLIBCXX_DEBUG_ASSERT($_Condition));
	    }' unless defined(&_GLIBCXX_DEBUG_PEDASSERT);
	} else {
	    eval 'sub _GLIBCXX_DEBUG_PEDASSERT {
	        my($_Condition) = @_;
    		eval q();
	    }' unless defined(&_GLIBCXX_DEBUG_PEDASSERT);
	}
	eval 'sub _GLIBCXX_DEBUG_ONLY {
	    my($_Statement) = @_;
    	    eval q($_Statement);
	}' unless defined(&_GLIBCXX_DEBUG_ONLY);
	eval 'sub __glibcxx_requires_cond {
	    my($_Cond,$_Msg) = @_;
    	    eval q( &_GLIBCXX_DEBUG_VERIFY($_Cond,$_Msg));
	}' unless defined(&__glibcxx_requires_cond);
	eval 'sub __glibcxx_requires_valid_range {
	    my($_First,$_Last) = @_;
    	    eval q( &__glibcxx_check_valid_range($_First,$_Last));
	}' unless defined(&__glibcxx_requires_valid_range);
	eval 'sub __glibcxx_requires_sorted {
	    my($_First,$_Last) = @_;
    	    eval q( &__glibcxx_check_sorted($_First,$_Last));
	}' unless defined(&__glibcxx_requires_sorted);
	eval 'sub __glibcxx_requires_sorted_pred {
	    my($_First,$_Last,$_Pred) = @_;
    	    eval q( &__glibcxx_check_sorted_pred($_First,$_Last,$_Pred));
	}' unless defined(&__glibcxx_requires_sorted_pred);
	eval 'sub __glibcxx_requires_partitioned {
	    my($_First,$_Last,$_Value) = @_;
    	    eval q( &__glibcxx_check_partitioned($_First,$_Last,$_Value));
	}' unless defined(&__glibcxx_requires_partitioned);
	eval 'sub __glibcxx_requires_partitioned_pred {
	    my($_First,$_Last,$_Value,$_Pred) = @_;
    	    eval q( &__glibcxx_check_partitioned_pred($_First,$_Last,$_Value,$_Pred));
	}' unless defined(&__glibcxx_requires_partitioned_pred);
	eval 'sub __glibcxx_requires_heap {
	    my($_First,$_Last) = @_;
    	    eval q( &__glibcxx_check_heap($_First,$_Last));
	}' unless defined(&__glibcxx_requires_heap);
	eval 'sub __glibcxx_requires_heap_pred {
	    my($_First,$_Last,$_Pred) = @_;
    	    eval q( &__glibcxx_check_heap_pred($_First,$_Last,$_Pred));
	}' unless defined(&__glibcxx_requires_heap_pred);
	eval 'sub __glibcxx_requires_nonempty () {
	    eval q( &__glibcxx_check_nonempty());
	}' unless defined(&__glibcxx_requires_nonempty);
	eval 'sub __glibcxx_requires_string {
	    my($_String) = @_;
    	    eval q( &__glibcxx_check_string($_String));
	}' unless defined(&__glibcxx_requires_string);
	eval 'sub __glibcxx_requires_string_len {
	    my($_String,$_Len) = @_;
    	    eval q( &__glibcxx_check_string_len($_String,$_Len));
	}' unless defined(&__glibcxx_requires_string_len);
	eval 'sub __glibcxx_requires_subscript {
	    my($_N) = @_;
    	    eval q( &__glibcxx_check_subscript($_N));
	}' unless defined(&__glibcxx_requires_subscript);
	require 'debug/functions.ph';
	require 'debug/formatter.ph';
    }
}
1;
