| /* 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; | |
| } |