blob: 8fa9af7e4140ae75d4220b21e87da8203b99f348 [file] [log] [blame]
/* Basic container usage. */
#include <vector>
#include <deque>
#include <list>
#include <set>
#include <map>
#if __cplusplus >= 201103L
#include <array>
#include <forward_list>
#include <unordered_set>
#include <unordered_map>
#endif
bool vector_test()
{
bool ok;
#pragma omp target map(from: ok)
{
std::vector<int> vector;
ok = vector.empty();
}
return ok;
}
bool deque_test()
{
bool ok;
#pragma omp target map(from: ok)
{
std::deque<int> deque;
ok = deque.empty();
}
return ok;
}
bool list_test()
{
bool ok;
#pragma omp target map(from: ok)
{
std::list<int> list;
ok = list.empty();
}
return ok;
}
bool map_test()
{
bool ok;
#pragma omp target map(from: ok)
{
std::map<int, int> map;
ok = map.empty();
}
return ok;
}
bool set_test()
{
bool ok;
#pragma omp target map(from: ok)
{
std::set<int> set;
ok = set.empty();
}
return ok;
}
bool multimap_test()
{
bool ok;
#pragma omp target map(from: ok)
{
std::multimap<int, int> multimap;
ok = multimap.empty();
}
return ok;
}
bool multiset_test()
{
bool ok;
#pragma omp target map(from: ok)
{
std::multiset<int, int> multiset;
ok = multiset.empty();
}
return ok;
}
#if __cplusplus >= 201103L
bool array_test()
{
static constexpr std::size_t array_size = 42;
bool ok;
#pragma omp target map(from: ok)
{
std::array<int, array_size> array{};
ok = array[0] == 0
&& array[array_size - 1] == 0;
}
return ok;
}
bool forward_list_test()
{
bool ok;
#pragma omp target map(from: ok)
{
std::forward_list<int> forward_list;
ok = forward_list.empty();
}
return ok;
}
bool unordered_map_test()
{
bool ok;
#pragma omp target map(from: ok)
{
std::unordered_map<int, int> unordered_map;
ok = unordered_map.empty();
}
return ok;
}
bool unordered_set_test()
{
bool ok;
#pragma omp target map(from: ok)
{
std::unordered_set<int> unordered_set;
ok = unordered_set.empty();
}
return ok;
}
bool unordered_multimap_test()
{
bool ok;
#pragma omp target map(from: ok)
{
std::unordered_multimap<int, int> unordered_multimap;
ok = unordered_multimap.empty();
}
return ok;
}
bool unordered_multiset_test()
{
bool ok;
#pragma omp target map(from: ok)
{
std::unordered_multiset<int> unordered_multiset;
ok = unordered_multiset.empty();
}
return ok;
}
#else
bool array_test() { return true; }
bool forward_list_test() { return true; }
bool unordered_map_test() { return true; }
bool unordered_set_test() { return true; }
bool unordered_multimap_test() { return true; }
bool unordered_multiset_test() { return true; }
#endif
int main()
{
const bool vec_res = vector_test();
__builtin_printf("vector : %s\n", vec_res ? "PASS" : "FAIL");
const bool deque_res = deque_test();
__builtin_printf("deque : %s\n", deque_res ? "PASS" : "FAIL");
const bool list_res = list_test();
__builtin_printf("list : %s\n", list_res ? "PASS" : "FAIL");
const bool map_res = map_test();
__builtin_printf("map : %s\n", map_res ? "PASS" : "FAIL");
const bool set_res = set_test();
__builtin_printf("set : %s\n", set_res ? "PASS" : "FAIL");
const bool multimap_res = multimap_test();
__builtin_printf("multimap : %s\n", multimap_res ? "PASS" : "FAIL");
const bool multiset_res = multiset_test();
__builtin_printf("multiset : %s\n", multiset_res ? "PASS" : "FAIL");
const bool array_res = array_test();
__builtin_printf("array : %s\n", array_res ? "PASS" : "FAIL");
const bool forward_list_res = forward_list_test();
__builtin_printf("forward_list : %s\n", forward_list_res ? "PASS" : "FAIL");
const bool unordered_map_res = unordered_map_test();
__builtin_printf("unordered_map : %s\n", unordered_map_res ? "PASS" : "FAIL");
const bool unordered_set_res = unordered_set_test();
__builtin_printf("unordered_set : %s\n", unordered_set_res ? "PASS" : "FAIL");
const bool unordered_multimap_res = unordered_multimap_test();
__builtin_printf("unordered_multimap: %s\n", unordered_multimap_res ? "PASS" : "FAIL");
const bool unordered_multiset_res = unordered_multiset_test();
__builtin_printf("unordered_multiset: %s\n", unordered_multiset_res ? "PASS" : "FAIL");
const bool ok = vec_res
&& deque_res
&& list_res
&& map_res
&& set_res
&& multimap_res
&& multiset_res
&& array_res
&& forward_list_res
&& unordered_map_res
&& unordered_set_res
&& unordered_multimap_res
&& unordered_multiset_res;
return ok ? 0 : 1;
}