require '_h2ph_pre.ph';

no warnings 'redefine';

unless(defined(&__STL_CONFIG_H)) {
    eval 'sub __STL_CONFIG_H () {1;}' unless defined(&__STL_CONFIG_H);
    if(defined(&_PTHREADS)) {
	eval 'sub __STL_PTHREADS () {1;}' unless defined(&__STL_PTHREADS);
    }
    if(defined(&_SOLTHREADS)) {
	eval 'sub __STL_SOLTHREADS () {1;}' unless defined(&__STL_SOLTHREADS);
    }
    if(defined( &__sgi)  && !defined( &__GNUC__)) {
	if(!defined( &_BOOL)) {
	    eval 'sub __STL_NO_BOOL () {1;}' unless defined(&__STL_NO_BOOL);
	}
	if(defined( &_WCHAR_T_IS_KEYWORD)) {
	    eval 'sub __STL_HAS_WCHAR_T () {1;}' unless defined(&__STL_HAS_WCHAR_T);
	}
	if(!defined( &_TYPENAME_IS_KEYWORD)) {
	    eval 'sub __STL_NEED_TYPENAME () {1;}' unless defined(&__STL_NEED_TYPENAME);
	}
	if(defined(&_PARTIAL_SPECIALIZATION_OF_CLASS_TEMPLATES)) {
	    eval 'sub __STL_CLASS_PARTIAL_SPECIALIZATION () {1;}' unless defined(&__STL_CLASS_PARTIAL_SPECIALIZATION);
	}
	if(defined(&_MEMBER_TEMPLATES)) {
	    eval 'sub __STL_MEMBER_TEMPLATES () {1;}' unless defined(&__STL_MEMBER_TEMPLATES);
	    eval 'sub __STL_MEMBER_TEMPLATE_CLASSES () {1;}' unless defined(&__STL_MEMBER_TEMPLATE_CLASSES);
	}
	if(defined( &_MEMBER_TEMPLATE_KEYWORD)) {
	    eval 'sub __STL_MEMBER_TEMPLATE_KEYWORD () {1;}' unless defined(&__STL_MEMBER_TEMPLATE_KEYWORD);
	}
	if(((defined(&_COMPILER_VERSION) ? &_COMPILER_VERSION : 0) >= 730)  && defined( &_MIPS_SIM)  && (defined(&_MIPS_SIM) ? &_MIPS_SIM : 0) != (defined(&_ABIO32) ? &_ABIO32 : 0)) {
	    eval 'sub __STL_MEMBER_TEMPLATE_KEYWORD () {1;}' unless defined(&__STL_MEMBER_TEMPLATE_KEYWORD);
	}
	if(!defined( &_EXPLICIT_IS_KEYWORD)) {
	    eval 'sub __STL_NEED_EXPLICIT () {1;}' unless defined(&__STL_NEED_EXPLICIT);
	}
	if(defined(&__EXCEPTIONS)) {
	    eval 'sub __STL_USE_EXCEPTIONS () {1;}' unless defined(&__STL_USE_EXCEPTIONS);
	}
	if(((defined(&_COMPILER_VERSION) ? &_COMPILER_VERSION : 0) >= 721)  && defined( &_NAMESPACES)) {
	    eval 'sub __STL_HAS_NAMESPACES () {1;}' unless defined(&__STL_HAS_NAMESPACES);
	}
	if(((defined(&_COMPILER_VERSION) ? &_COMPILER_VERSION : 0) < 721)) {
	    eval 'sub __STL_NO_EXCEPTION_HEADER () {1;}' unless defined(&__STL_NO_EXCEPTION_HEADER);
	}
	if(!defined( &_NOTHREADS)  && !defined( &__STL_PTHREADS)) {
	    eval 'sub __STL_SGI_THREADS () {1;}' unless defined(&__STL_SGI_THREADS);
	}
	if(defined( &_LONGLONG)  && defined( &_SGIAPI)  && (defined(&_SGIAPI) ? &_SGIAPI : 0)) {
	    eval 'sub __STL_LONG_LONG () {1;}' unless defined(&__STL_LONG_LONG);
	}
    }
    if(defined(&__GNUC__)) {
	require '_G_config.ph';
	eval 'sub __STL_HAS_WCHAR_T () {1;}' unless defined(&__STL_HAS_WCHAR_T);
	if((defined(&__GNUC__) ? &__GNUC__ : 0) < 2|| ((defined(&__GNUC__) ? &__GNUC__ : 0) == 2 && (defined(&__GNUC_MINOR__) ? &__GNUC_MINOR__ : 0) < 8)) {
	    eval 'sub __STL_STATIC_TEMPLATE_MEMBER_BUG () {1;}' unless defined(&__STL_STATIC_TEMPLATE_MEMBER_BUG);
	    eval 'sub __STL_NEED_TYPENAME () {1;}' unless defined(&__STL_NEED_TYPENAME);
	    eval 'sub __STL_NEED_EXPLICIT () {1;}' unless defined(&__STL_NEED_EXPLICIT);
	} else {
	    eval 'sub __STL_CLASS_PARTIAL_SPECIALIZATION () {1;}' unless defined(&__STL_CLASS_PARTIAL_SPECIALIZATION);
	    eval 'sub __STL_FUNCTION_TMPL_PARTIAL_ORDER () {1;}' unless defined(&__STL_FUNCTION_TMPL_PARTIAL_ORDER);
	    eval 'sub __STL_MEMBER_TEMPLATES () {1;}' unless defined(&__STL_MEMBER_TEMPLATES);
	    eval 'sub __STL_MEMBER_TEMPLATE_CLASSES () {1;}' unless defined(&__STL_MEMBER_TEMPLATE_CLASSES);
	    eval 'sub __STL_EXPLICIT_FUNCTION_TMPL_ARGS () {1;}' unless defined(&__STL_EXPLICIT_FUNCTION_TMPL_ARGS);
	    eval 'sub __STL_HAS_NAMESPACES () {1;}' unless defined(&__STL_HAS_NAMESPACES);
	    eval 'sub __STL_NO_NAMESPACES () {1;}' unless defined(&__STL_NO_NAMESPACES);
	    eval 'sub __SGI_STL_USE_AUTO_PTR_CONVERSIONS () {1;}' unless defined(&__SGI_STL_USE_AUTO_PTR_CONVERSIONS);
	    eval 'sub __STL_USE_NAMESPACES () {1;}' unless defined(&__STL_USE_NAMESPACES);
	}
	if(defined( &__linux__)) {
	    if(!defined( &_NOTHREADS)  && (defined(&__GLIBC__) ? &__GLIBC__ : 0) >= 2 && defined( &_G_USING_THUNKS)) {
		eval 'sub __STL_PTHREADS () {1;}' unless defined(&__STL_PTHREADS);
		if(defined(&__STRICT_ANSI__)) {
		    eval 'sub sigset_t () { &__sigset_t;}' unless defined(&sigset_t);
		}
	    }
	}
	if(defined(&__EXCEPTIONS)) {
	    eval 'sub __STL_USE_EXCEPTIONS () {1;}' unless defined(&__STL_USE_EXCEPTIONS);
	}
	unless(defined(&__STRICT_ANSI__)) {
	    eval 'sub __STL_LONG_LONG () {1;}' unless defined(&__STL_LONG_LONG);
	}
    }
    if(defined( &__SUNPRO_CC)) {
	eval 'sub __STL_NO_BOOL () {1;}' unless defined(&__STL_NO_BOOL);
	eval 'sub __STL_NEED_TYPENAME () {1;}' unless defined(&__STL_NEED_TYPENAME);
	eval 'sub __STL_NEED_EXPLICIT () {1;}' unless defined(&__STL_NEED_EXPLICIT);
	eval 'sub __STL_USE_EXCEPTIONS () {1;}' unless defined(&__STL_USE_EXCEPTIONS);
    }
    if(defined( &__COMO__)) {
	eval 'sub __STL_MEMBER_TEMPLATES () {1;}' unless defined(&__STL_MEMBER_TEMPLATES);
	eval 'sub __STL_MEMBER_TEMPLATE_CLASSES () {1;}' unless defined(&__STL_MEMBER_TEMPLATE_CLASSES);
	eval 'sub __STL_CLASS_PARTIAL_SPECIALIZATION () {1;}' unless defined(&__STL_CLASS_PARTIAL_SPECIALIZATION);
	eval 'sub __STL_USE_EXCEPTIONS () {1;}' unless defined(&__STL_USE_EXCEPTIONS);
	eval 'sub __STL_HAS_NAMESPACES () {1;}' unless defined(&__STL_HAS_NAMESPACES);
    }
    if(defined( &__MINGW32__)) {
	eval 'sub __STL_NO_DRAND48 () {1;}' unless defined(&__STL_NO_DRAND48);
    }
    if(defined( &__CYGWIN__)) {
	eval 'sub __STL_NO_DRAND48 () {1;}' unless defined(&__STL_NO_DRAND48);
    }
    if(defined( &_MSC_VER)) {
	eval 'sub __STL_NO_DRAND48 () {1;}' unless defined(&__STL_NO_DRAND48);
	eval 'sub __STL_NEED_TYPENAME () {1;}' unless defined(&__STL_NEED_TYPENAME);
	if((defined(&_MSC_VER) ? &_MSC_VER : 0) < 1100) {
	    eval 'sub __STL_NEED_EXPLICIT () {1;}' unless defined(&__STL_NEED_EXPLICIT);
	    eval 'sub __STL_NO_BOOL () {1;}' unless defined(&__STL_NO_BOOL);
	    if((defined(&_MSC_VER) ? &_MSC_VER : 0) > 1000) {
		require 'yvals.ph';
		eval 'sub __STL_DONT_USE_BOOL_TYPEDEF () {1;}' unless defined(&__STL_DONT_USE_BOOL_TYPEDEF);
	    }
	}
	eval 'sub __STL_NON_TYPE_TMPL_PARAM_BUG () {1;}' unless defined(&__STL_NON_TYPE_TMPL_PARAM_BUG);
	eval 'sub __SGI_STL_NO_ARROW_OPERATOR () {1;}' unless defined(&__SGI_STL_NO_ARROW_OPERATOR);
	if(defined(&_CPPUNWIND)) {
	    eval 'sub __STL_USE_EXCEPTIONS () {1;}' unless defined(&__STL_USE_EXCEPTIONS);
	}
	if(defined(&_MT)) {
	    eval 'sub __STL_WIN32THREADS () {1;}' unless defined(&__STL_WIN32THREADS);
	}
	if((defined(&_MSC_VER) ? &_MSC_VER : 0) >= 1200) {
	    eval 'sub __STL_PARTIAL_SPECIALIZATION_SYNTAX () {1;}' unless defined(&__STL_PARTIAL_SPECIALIZATION_SYNTAX);
	    eval 'sub __STL_HAS_NAMESPACES () {1;}' unless defined(&__STL_HAS_NAMESPACES);
	    eval 'sub __STL_NO_NAMESPACES () {1;}' unless defined(&__STL_NO_NAMESPACES);
	}
    }
    if(defined( &__BORLANDC__)) {
	eval 'sub __STL_NO_DRAND48 () {1;}' unless defined(&__STL_NO_DRAND48);
	eval 'sub __STL_NEED_TYPENAME () {1;}' unless defined(&__STL_NEED_TYPENAME);
	eval 'sub __STL_LIMITED_DEFAULT_TEMPLATES () {1;}' unless defined(&__STL_LIMITED_DEFAULT_TEMPLATES);
	eval 'sub __SGI_STL_NO_ARROW_OPERATOR () {1;}' unless defined(&__SGI_STL_NO_ARROW_OPERATOR);
	eval 'sub __STL_NON_TYPE_TMPL_PARAM_BUG () {1;}' unless defined(&__STL_NON_TYPE_TMPL_PARAM_BUG);
	if(defined(&_CPPUNWIND)) {
	    eval 'sub __STL_USE_EXCEPTIONS () {1;}' unless defined(&__STL_USE_EXCEPTIONS);
	}
	if(defined(&__MT__)) {
	    eval 'sub __STL_WIN32THREADS () {1;}' unless defined(&__STL_WIN32THREADS);
	}
    }
    if(defined( &__STL_NO_BOOL)  && !defined( &__STL_DONT_USE_BOOL_TYPEDEF)) {
	eval 'sub true () {1;}' unless defined(&true);
	eval 'sub false () {0;}' unless defined(&false);
    }
    if(defined(&__STL_NEED_TYPENAME)) {
	eval 'sub typename () {1;}' unless defined(&typename);
    }
    if(defined(&__STL_MEMBER_TEMPLATE_KEYWORD)) {
	eval 'sub __STL_TEMPLATE () { &template;}' unless defined(&__STL_TEMPLATE);
    } else {
	eval 'sub __STL_TEMPLATE () {1;}' unless defined(&__STL_TEMPLATE);
    }
    if(defined(&__STL_NEED_EXPLICIT)) {
	eval 'sub explicit () {1;}' unless defined(&explicit);
    }
    if(defined(&__STL_EXPLICIT_FUNCTION_TMPL_ARGS)) {
	eval 'sub __STL_NULL_TMPL_ARGS () {<>;}' unless defined(&__STL_NULL_TMPL_ARGS);
    } else {
	eval 'sub __STL_NULL_TMPL_ARGS () {1;}' unless defined(&__STL_NULL_TMPL_ARGS);
    }
    if(defined( &__STL_CLASS_PARTIAL_SPECIALIZATION) || defined ( &__STL_PARTIAL_SPECIALIZATION_SYNTAX)) {
	eval 'sub __STL_TEMPLATE_NULL () { &template<>;}' unless defined(&__STL_TEMPLATE_NULL);
    } else {
	eval 'sub __STL_TEMPLATE_NULL () {1;}' unless defined(&__STL_TEMPLATE_NULL);
    }
    if(defined( &__STL_CLASS_PARTIAL_SPECIALIZATION)  && defined( &__STL_MEMBER_TEMPLATES)  && defined( &__STL_MEMBER_TEMPLATE_CLASSES)  && !defined( &__STL_NO_BOOL)  && !defined( &__STL_NON_TYPE_TMPL_PARAM_BUG)  && !defined( &__STL_LIMITED_DEFAULT_TEMPLATES)  && !defined( &__STL_USE_SGI_ALLOCATORS)) {
	eval 'sub __STL_USE_STD_ALLOCATORS () {1;}' unless defined(&__STL_USE_STD_ALLOCATORS);
    }
    unless(defined(&__STL_DEFAULT_ALLOCATOR)) {
	if(defined(&__STL_USE_STD_ALLOCATORS)) {
	    eval 'sub __STL_DEFAULT_ALLOCATOR {
	        my($T) = @_;
    		eval q( &allocator<$T>);
	    }' unless defined(&__STL_DEFAULT_ALLOCATOR);
	} else {
	    eval 'sub __STL_DEFAULT_ALLOCATOR {
	        my($T) = @_;
    		eval q( &alloc);
	    }' unless defined(&__STL_DEFAULT_ALLOCATOR);
	}
    }
    if(defined( &__STL_HAS_NAMESPACES)  && !defined( &__STL_NO_NAMESPACES)) {
	eval 'sub __STD () { &std;}' unless defined(&__STD);
	eval 'sub __STL_BEGIN_NAMESPACE () { &namespace  &std {;}' unless defined(&__STL_BEGIN_NAMESPACE);
	eval 'sub __STL_END_NAMESPACE () {};}' unless defined(&__STL_END_NAMESPACE);
	eval 'sub __STL_USE_NAMESPACE_FOR_RELOPS () {1;}' unless defined(&__STL_USE_NAMESPACE_FOR_RELOPS);
	eval 'sub __STL_BEGIN_RELOPS_NAMESPACE () { &namespace  &std {;}' unless defined(&__STL_BEGIN_RELOPS_NAMESPACE);
	eval 'sub __STL_END_RELOPS_NAMESPACE () {};}' unless defined(&__STL_END_RELOPS_NAMESPACE);
	eval 'sub __STD_RELOPS () { &std;}' unless defined(&__STD_RELOPS);
	eval 'sub __STL_USE_NAMESPACES () {1;}' unless defined(&__STL_USE_NAMESPACES);
    } else {
	eval 'sub __STD () {1;}' unless defined(&__STD);
	eval 'sub __STL_BEGIN_NAMESPACE () {1;}' unless defined(&__STL_BEGIN_NAMESPACE);
	eval 'sub __STL_END_NAMESPACE () {1;}' unless defined(&__STL_END_NAMESPACE);
	undef(&__STL_USE_NAMESPACE_FOR_RELOPS) if defined(&__STL_USE_NAMESPACE_FOR_RELOPS);
	eval 'sub __STL_BEGIN_RELOPS_NAMESPACE () {1;}' unless defined(&__STL_BEGIN_RELOPS_NAMESPACE);
	eval 'sub __STL_END_RELOPS_NAMESPACE () {1;}' unless defined(&__STL_END_RELOPS_NAMESPACE);
	eval 'sub __STD_RELOPS () {1;}' unless defined(&__STD_RELOPS);
	undef(&__STL_USE_NAMESPACES) if defined(&__STL_USE_NAMESPACES);
    }
    if(defined(&__STL_USE_EXCEPTIONS)) {
	eval 'sub __STL_TRY () { &try;}' unless defined(&__STL_TRY);
	eval 'sub __STL_CATCH_ALL () { &catch(...);}' unless defined(&__STL_CATCH_ALL);
	eval 'sub __STL_THROW {
	    my($x) = @_;
    	    eval q( &throw $x);
	}' unless defined(&__STL_THROW);
	eval 'sub __STL_RETHROW () { &throw;}' unless defined(&__STL_RETHROW);
	eval 'sub __STL_NOTHROW () { &throw();}' unless defined(&__STL_NOTHROW);
	eval 'sub __STL_UNWIND {
	    my($action) = @_;
    	    eval q( &catch(...) { $action;  &throw; });
	}' unless defined(&__STL_UNWIND);
    } else {
	eval 'sub __STL_TRY () {1;}' unless defined(&__STL_TRY);
	eval 'sub __STL_CATCH_ALL () { &if ( &false);}' unless defined(&__STL_CATCH_ALL);
	eval 'sub __STL_THROW {
	    my($x) = @_;
    	    eval q();
	}' unless defined(&__STL_THROW);
	eval 'sub __STL_RETHROW () {1;}' unless defined(&__STL_RETHROW);
	eval 'sub __STL_NOTHROW () {1;}' unless defined(&__STL_NOTHROW);
	eval 'sub __STL_UNWIND {
	    my($action) = @_;
    	    eval q();
	}' unless defined(&__STL_UNWIND);
    }
    if(defined(&__STL_ASSERTIONS)) {
	require 'stdio.ph';
	eval 'sub __stl_assert {
	    my($expr) = @_;
    	    eval q( &if (!($expr)) {  &fprintf( &stderr, \\"%s:%d STL assertion failure: %s\\\\n\\",  &__FILE__,  &__LINE__,  $expr);  &abort(); });
	}' unless defined(&__stl_assert);
    } else {
	eval 'sub __stl_assert {
	    my($expr) = @_;
    	    eval q();
	}' unless defined(&__stl_assert);
    }
}
1;
