require '_h2ph_pre.ph';

no warnings qw(redefine misc);

unless(defined(&_GLIBCXX_PARALLEL_TYPES_H)) {
    eval 'sub _GLIBCXX_PARALLEL_TYPES_H () {1;}' unless defined(&_GLIBCXX_PARALLEL_TYPES_H);
    require 'cstdlib';
    require 'limits';
    require 'tr1/cstdint';
    eval("sub sequential () { 0; }") unless defined(&sequential);
    eval("sub parallel_unbalanced () { 1; }") unless defined(&parallel_unbalanced);
    eval("sub parallel_balanced () { 2; }") unless defined(&parallel_balanced);
    eval("sub parallel_omp_loop () { 3; }") unless defined(&parallel_omp_loop);
    eval("sub parallel_omp_loop_static () { 4; }") unless defined(&parallel_omp_loop_static);
    eval("sub parallel_taskqueue () { 5; }") unless defined(&parallel_taskqueue);
    eval("sub heuristic () { 0; }") unless defined(&heuristic);
    eval("sub force_sequential () { 1; }") unless defined(&force_sequential);
    eval("sub force_parallel () { 2; }") unless defined(&force_parallel);
    eval("sub MWMS () { 0; }") unless defined(&MWMS);
    eval("sub QS () { 1; }") unless defined(&QS);
    eval("sub QS_BALANCED () { 2; }") unless defined(&QS_BALANCED);
    eval("sub LOSER_TREE () { 0; }") unless defined(&LOSER_TREE);
    eval("sub RECURSIVE () { 0; }") unless defined(&RECURSIVE);
    eval("sub LINEAR () { 1; }") unless defined(&LINEAR);
    eval("sub SAMPLING () { 0; }") unless defined(&SAMPLING);
    eval("sub EXACT () { 1; }") unless defined(&EXACT);
    eval("sub GROWING_BLOCKS () { 0; }") unless defined(&GROWING_BLOCKS);
    eval("sub CONSTANT_SIZE_BLOCKS () { 1; }") unless defined(&CONSTANT_SIZE_BLOCKS);
    eval("sub EQUAL_SPLIT () { 2; }") unless defined(&EQUAL_SPLIT);
}
1;
