require '_h2ph_pre.ph';

unless(defined(&__OBSTACK_H__)) {
    eval 'sub __OBSTACK_H__ () {1;}' unless defined(&__OBSTACK_H__);
    unless(defined(&__PTR_TO_INT)) {
	eval 'sub __PTR_TO_INT {
	    local($P) = @_;
    	    eval q(( - 0));
	}' unless defined(&__PTR_TO_INT);
    }
    unless(defined(&__INT_TO_PTR)) {
	eval 'sub __INT_TO_PTR {
	    local($P) = @_;
    	    eval q(( + 0));
	}' unless defined(&__INT_TO_PTR);
    }
    if(defined ( &__STDC__)  && ! defined ( &offsetof)) {
	if(defined ( &__GNUC__)  && defined ( &IN_GCC)) {
	    unless(defined(&__NeXT__)) {
		eval 'sub __need_ptrdiff_t () {1;}' unless defined(&__need_ptrdiff_t);
	    }
	}
	require 'stddef.ph';
    }
    if(defined(&__STDC__)) {
	eval 'sub PTR_INT_TYPE () { &ptrdiff_t;}' unless defined(&PTR_INT_TYPE);
    } else {
	eval 'sub PTR_INT_TYPE () {\'long\';}' unless defined(&PTR_INT_TYPE);
    }
    if(defined(&__STDC__)) {
    } else {
    }
    if(defined(&__STDC__)) {
    }
    eval 'sub obstack_base {
        local($h) = @_;
	    eval q((($h)-> &alloc_failed ? 0: ($h)-> &object_base));
    }' unless defined(&obstack_base);
    eval 'sub obstack_chunk_size {
        local($h) = @_;
	    eval q((($h)-> &chunk_size));
    }' unless defined(&obstack_chunk_size);
    eval 'sub obstack_next_free {
        local($h) = @_;
	    eval q((($h)-> &alloc_failed ? 0: ($h)-> &next_free));
    }' unless defined(&obstack_next_free);
    eval 'sub obstack_alignment_mask {
        local($h) = @_;
	    eval q((($h)-> &alignment_mask));
    }' unless defined(&obstack_alignment_mask);
    eval 'sub obstack_init {
        local($h) = @_;
	    eval q( &_obstack_begin (($h), 0, 0, ( &void *(*) ())  &obstack_chunk_alloc, ( &void (*) ())  &obstack_chunk_free));
    }' unless defined(&obstack_init);
    eval 'sub obstack_begin {
        local($h, $size) = @_;
	    eval q( &_obstack_begin (($h), ($size), 0, ( &void *(*) ())  &obstack_chunk_alloc, ( &void (*) ())  &obstack_chunk_free));
    }' unless defined(&obstack_begin);
    eval 'sub obstack_specify_allocation {
        local($h, $size, $alignment, $chunkfun, $freefun) = @_;
	    eval q( &_obstack_begin (($h), ($size), ($alignment), ( &void *(*) ()) ($chunkfun), ( &void (*) ()) ($freefun)));
    }' unless defined(&obstack_specify_allocation);
    eval 'sub obstack_specify_allocation_with_arg {
        local($h, $size, $alignment, $chunkfun, $freefun, $arg) = @_;
	    eval q( &_obstack_begin_1 (($h), ($size), ($alignment), ( &void *(*) ()) ($chunkfun), ( &void (*) ()) ($freefun), ($arg)));
    }' unless defined(&obstack_specify_allocation_with_arg);
    eval 'sub obstack_chunkfun {
        local($h, $newchunkfun) = @_;
	    eval q((($h) ->  &chunkfun = (\'struct _obstack_chunk\' *(*)()) ($newchunkfun)));
    }' unless defined(&obstack_chunkfun);
    eval 'sub obstack_freefun {
        local($h, $newfreefun) = @_;
	    eval q((($h) ->  &freefun = ( &void (*)()) ($newfreefun)));
    }' unless defined(&obstack_freefun);
    eval 'sub obstack_1grow_fast {
        local($h,$achar) = @_;
	    eval q((*(($h)-> &next_free)++ = $achar));
    }' unless defined(&obstack_1grow_fast);
    eval 'sub obstack_blank_fast {
        local($h,$n) = @_;
	    eval q((($h)-> &next_free += ($n)));
    }' unless defined(&obstack_blank_fast);
    eval 'sub obstack_memory_used {
        local($h) = @_;
	    eval q( &_obstack_memory_used ($h));
    }' unless defined(&obstack_memory_used);
    if(defined ( &__GNUC__)  && defined ( &__STDC__)) {
	if((defined(&__GNUC__) ? &__GNUC__ : 0) < 2) {
	    eval 'sub __extension__ () {1;}' unless defined(&__extension__);
	}
	eval 'sub obstack_object_size {
	    local($OBSTACK) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__o = ;  ($__o->{alloc_failed}) ? 0: ( ($__o->{next_free}) -  ($__o->{object_base})); }));
	}' unless defined(&obstack_object_size);
	eval 'sub obstack_room {
	    local($OBSTACK) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__o = ; ( ($__o->{chunk_limit}) -  ($__o->{next_free})); }));
	}' unless defined(&obstack_room);
	eval 'sub obstack_grow {
	    local($OBSTACK,$where,$length) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__o = ; \'int\'  &__len = ;  &if ( ($__o->{next_free}) +  &__len >  ($__o->{chunk_limit}))  &_obstack_newchunk ( &__o,  &__len);  &if (! ($__o->{alloc_failed})) {  &memcpy ( ($__o->{next_free}), $where,  &__len);  ($__o->{next_free}) +=  &__len; } 0; }));
	}' unless defined(&obstack_grow);
	eval 'sub obstack_grow0 {
	    local($OBSTACK,$where,$length) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__o = ; \'int\'  &__len = ;  &if ( ($__o->{next_free}) +  &__len + 1>  ($__o->{chunk_limit}))  &_obstack_newchunk ( &__o,  &__len + 1);  &if (! ($__o->{alloc_failed})) {  &memcpy ( ($__o->{next_free}), $where,  &__len);  ($__o->{next_free}) +=  &__len; *( ($__o->{next_free}))++ = 0; } 0; }));
	}' unless defined(&obstack_grow0);
	eval 'sub obstack_1grow {
	    local($OBSTACK,$datum) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__o = ;  &if ( ($__o->{next_free}) + 1>  ($__o->{chunk_limit}))  &_obstack_newchunk ( &__o, 1);  &if (! ($__o->{alloc_failed})) *( ($__o->{next_free}))++ = ; 0; }));
	}' unless defined(&obstack_1grow);
	eval 'sub obstack_ptr_grow {
	    local($OBSTACK,$datum) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__o = ;  &if ( ($__o->{next_free}) +  &sizeof >  ($__o->{chunk_limit}))  &_obstack_newchunk ( &__o,  &sizeof );  &if (! ($__o->{alloc_failed})) *( ($__o->{next_free}))++ = ; 0; }));
	}' unless defined(&obstack_ptr_grow);
	eval 'sub obstack_int_grow {
	    local($OBSTACK,$datum) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__o = ;  &if ( ($__o->{next_free}) +  &sizeof >  ($__o->{chunk_limit}))  &_obstack_newchunk ( &__o,  &sizeof );  &if (! ($__o->{alloc_failed})) *( ($__o->{next_free}))++ = ; 0; }));
	}' unless defined(&obstack_int_grow);
	eval 'sub obstack_ptr_grow_fast {
	    local($h,$aptr) = @_;
    	    eval q((*(-> &next_free)++ = $aptr));
	}' unless defined(&obstack_ptr_grow_fast);
	eval 'sub obstack_int_grow_fast {
	    local($h,$aint) = @_;
    	    eval q((*(-> &next_free)++ = $aint));
	}' unless defined(&obstack_int_grow_fast);
	eval 'sub obstack_blank {
	    local($OBSTACK,$length) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__o = ; \'int\'  &__len = ;  &if ( ($__o->{chunk_limit}) -  ($__o->{next_free}) <  &__len)  &_obstack_newchunk ( &__o,  &__len);  &if (! ($__o->{alloc_failed}))  ($__o->{next_free}) +=  &__len; 0; }));
	}' unless defined(&obstack_blank);
	eval 'sub obstack_alloc {
	    local($OBSTACK,$length) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__h = ($OBSTACK);  &obstack_blank ( &__h, ($length));  &obstack_finish ( &__h); }));
	}' unless defined(&obstack_alloc);
	eval 'sub obstack_copy {
	    local($OBSTACK,$where,$length) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__h = ($OBSTACK);  &obstack_grow ( &__h, ($where), ($length));  &obstack_finish ( &__h); }));
	}' unless defined(&obstack_copy);
	eval 'sub obstack_copy0 {
	    local($OBSTACK,$where,$length) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__h = ($OBSTACK);  &obstack_grow0 ( &__h, ($where), ($length));  &obstack_finish ( &__h); }));
	}' unless defined(&obstack_copy0);
	eval 'sub obstack_finish {
	    local($OBSTACK) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__o1 = ;  &void * &value;  &if ( ($__o1->{alloc_failed}))  &value = 0;  &else {  &value =  ($__o1->{object_base});  &if ( ($__o1->{next_free}) ==  &value)  ($__o1->{maybe_empty_object}) = 1;  ($__o1->{next_free})	 =  &__INT_TO_PTR (( &__PTR_TO_INT ( ($__o1->{next_free}))+ ($__o1->{alignment_mask})) & ~ ( ($__o1->{alignment_mask})));  &if ( ($__o1->{next_free}) -  ($__o1->{chunk})	 >  ($__o1->{chunk_limit}) -  ($__o1->{chunk}))  ($__o1->{next_free}) =  ($__o1->{chunk_limit});  ($__o1->{object_base}) =  ($__o1->{next_free}); }  &value; }));
	}' unless defined(&obstack_finish);
	eval 'sub obstack_free {
	    local($OBSTACK, $OBJ) = @_;
    	    eval q( &__extension__ ({ \'struct obstack\' * &__o = ;  &void * &__obj = ;  &if ( &__obj >  ($__o->{chunk})  &&  &__obj <  ($__o->{chunk_limit}))  ($__o->{next_free}) =  ($__o->{object_base}) =  &__obj;  &else ( &__o,  &__obj); }));
	}' unless defined(&obstack_free);
    } else {
	eval 'sub obstack_object_size {
	    local($h) = @_;
    	    eval q( (($h)-> &alloc_failed ? 0: ($h)-> &next_free - ($h)-> &object_base));
	}' unless defined(&obstack_object_size);
	eval 'sub obstack_room {
	    local($h) = @_;
    	    eval q( (($h)-> &chunk_limit - ($h)-> &next_free));
	}' unless defined(&obstack_room);
	eval 'sub obstack_grow {
	    local($h,$where,$length) = @_;
    	    eval q(( ($h)-> &temp = ($length), ((($h)-> &next_free + ($h)-> &temp > ($h)-> &chunk_limit) ? ( &_obstack_newchunk (($h), ($h)-> &temp), 0) : 0), (($h)-> &alloc_failed ? 0: ( &memcpy (($h)-> &next_free, $where, ($h)-> &temp), ($h)-> &next_free += ($h)-> &temp))));
	}' unless defined(&obstack_grow);
	eval 'sub obstack_grow0 {
	    local($h,$where,$length) = @_;
    	    eval q(( ($h)-> &temp = ($length), ((($h)-> &next_free + ($h)-> &temp + 1> ($h)-> &chunk_limit) ? ( &_obstack_newchunk (($h), ($h)-> &temp + 1), 0) : 0), (($h)-> &alloc_failed ? 0: ( &memcpy (($h)-> &next_free, $where, ($h)-> &temp), ($h)-> &next_free += ($h)-> &temp, *(($h)-> &next_free)++ = 0))));
	}' unless defined(&obstack_grow0);
	eval 'sub obstack_1grow {
	    local($h,$datum) = @_;
    	    eval q(( ((($h)-> &next_free + 1> ($h)-> &chunk_limit) ? ( &_obstack_newchunk (($h), 1), 0) : 0), (($h)-> &alloc_failed ? 0: (*(($h)-> &next_free)++ = ($datum)))));
	}' unless defined(&obstack_1grow);
	eval 'sub obstack_ptr_grow {
	    local($h,$datum) = @_;
    	    eval q(( ((-> &next_free +  &sizeof > -> &chunk_limit) ? ( &_obstack_newchunk (,  &sizeof ), 0) : 0), (-> &alloc_failed ? 0: (*(((-> &next_free+= &sizeof)- &sizeof)) = ($datum)))));
	}' unless defined(&obstack_ptr_grow);
	eval 'sub obstack_int_grow {
	    local($h,$datum) = @_;
    	    eval q(( ((-> &next_free +  &sizeof > -> &chunk_limit) ? ( &_obstack_newchunk (,  &sizeof ), 0) : 0), (-> &alloc_failed ? 0: (*(((-> &next_free+= &sizeof)- &sizeof)) = ($datum)))));
	}' unless defined(&obstack_int_grow);
	eval 'sub obstack_ptr_grow_fast {
	    local($h,$aptr) = @_;
    	    eval q((*(-> &next_free)++ = $aptr));
	}' unless defined(&obstack_ptr_grow_fast);
	eval 'sub obstack_int_grow_fast {
	    local($h,$aint) = @_;
    	    eval q((*(-> &next_free)++ = $aint));
	}' unless defined(&obstack_int_grow_fast);
	eval 'sub obstack_blank {
	    local($h,$length) = @_;
    	    eval q(( ($h)-> &temp = ($length), ((($h)-> &chunk_limit - ($h)-> &next_free < ($h)-> &temp) ? ( &_obstack_newchunk (($h), ($h)-> &temp), 0) : 0), (($h)-> &alloc_failed ? 0: (($h)-> &next_free += ($h)-> &temp))));
	}' unless defined(&obstack_blank);
	eval 'sub obstack_alloc {
	    local($h,$length) = @_;
    	    eval q(( &obstack_blank (($h), ($length)),  &obstack_finish (($h))));
	}' unless defined(&obstack_alloc);
	eval 'sub obstack_copy {
	    local($h,$where,$length) = @_;
    	    eval q(( &obstack_grow (($h), ($where), ($length)),  &obstack_finish (($h))));
	}' unless defined(&obstack_copy);
	eval 'sub obstack_copy0 {
	    local($h,$where,$length) = @_;
    	    eval q(( &obstack_grow0 (($h), ($where), ($length)),  &obstack_finish (($h))));
	}' unless defined(&obstack_copy0);
	eval 'sub obstack_finish {
	    local($h) = @_;
    	    eval q(( -> &alloc_failed ? 0: ((-> &next_free == -> &object_base ? ((-> &maybe_empty_object = 1), 0) : 0), -> &temp =  &__PTR_TO_INT (-> &object_base), -> &next_free =  &__INT_TO_PTR (( &__PTR_TO_INT (-> &next_free)+-> &alignment_mask) & ~ (-> &alignment_mask)), ((-> &next_free - -> &chunk > -> &chunk_limit - ($h)-> &chunk) ? (($h)-> &next_free = ($h)-> &chunk_limit) : 0), ($h)-> &object_base = ($h)-> &next_free,  &__INT_TO_PTR (($h)-> &temp))));
	}' unless defined(&obstack_finish);
	if(defined(&__STDC__)) {
	    eval 'sub obstack_free {
	        local($h,$obj) = @_;
    		eval q(( -> &temp = - -> &chunk, ((-> &temp > 0 && -> &temp < -> &chunk_limit - -> &chunk) ? (-> &next_free = -> &object_base = -> &temp + -> &chunk) : (( (, -> &temp + ($h)-> &chunk), 0), 0))));
	    }' unless defined(&obstack_free);
	} else {
	    eval 'sub obstack_free {
	        local($h,$obj) = @_;
    		eval q(( -> &temp = - -> &chunk, ((-> &temp > 0 && -> &temp < -> &chunk_limit - -> &chunk) ? (-> &next_free = -> &object_base = -> &temp + -> &chunk) : ( &_obstack_free (, -> &temp + ($h)-> &chunk), 0))));
	    }' unless defined(&obstack_free);
	}
    }
}
1;
