1 #include <stdio.h>
2 
3 #include "HalideBuffer.h"
4 #include "HalideRuntime.h"
5 
6 #include <assert.h>
7 #include <string>
8 
9 #include "cxx_mangling_define_extern.h"
10 
11 using namespace Halide::Runtime;
12 
main(int argc,char ** argv)13 int main(int argc, char **argv) {
14     Buffer<uint8_t> input(10);
15 
16     for (int32_t i = 0; i < 10; i++) {
17         input(i) = i;
18     }
19 
20     Buffer<double> result_1(10), result_2(10), result_3(10);
21 
22     const void *user_context = nullptr;
23     int ptr_arg = 42;
24     int *int_ptr = &ptr_arg;
25     const int *const_int_ptr = &ptr_arg;
26     void *void_ptr = nullptr;
27     const void *const_void_ptr = nullptr;
28     std::string *string_ptr = nullptr;
29     const std::string *const_string_ptr = nullptr;
30     int r = HalideTest::cxx_mangling_define_extern(user_context, input, int_ptr, const_int_ptr,
31                                                    void_ptr, const_void_ptr, string_ptr, const_string_ptr,
32                                                    result_1, result_2, result_3);
33     if (r != 0) {
34         fprintf(stderr, "Failure!\n");
35         exit(1);
36     }
37 
38     for (int i = 0; i < 10; ++i) {
39         if (result_1(i) != i + 12.0 || result_2(i) != i + 12.0 || result_3(i) != i + 12.0) {
40             fprintf(stderr, "Failure!\n");
41             exit(1);
42         }
43     }
44 
45     printf("Success!\n");
46     return 0;
47 }
48