1 /*****************************************************************************
2  * Copyright (c) 2019 FrontISTR Commons
3  * This software is released under the MIT License, see LICENSE.txt
4  *****************************************************************************/
5 
6 #include <stdio.h>
7 #include "hecmw_config.h"
8 #include "hecmw_varray_int.h"
9 
main()10 int main() {
11   struct hecmw_varray_int va, vb;
12   int i;
13   int ndup;
14   int *vb_vals;
15 
16   if (HECMW_varray_int_init(&va) != HECMW_SUCCESS) {
17     perror("init va");
18     return HECMW_EXIT_ERROR;
19   }
20 
21   for (i = 0; i < 1000; i += 7) {
22     if (HECMW_varray_int_append(&va, i % 13) != HECMW_SUCCESS) {
23       perror("append va");
24       return HECMW_EXIT_ERROR;
25     }
26   }
27 
28   printf("Initial va:");
29   for (i = 0; i < HECMW_varray_int_nval(&va); i++) {
30     printf(" %d", HECMW_varray_int_get(&va, i));
31   }
32   printf("\n");
33 
34   if (HECMW_varray_int_sort(&va) != HECMW_SUCCESS) {
35     perror("sort va");
36     return HECMW_EXIT_ERROR;
37   }
38 
39   printf("After sorting va:");
40   for (i = 0; i < HECMW_varray_int_nval(&va); i++) {
41     printf(" %d", HECMW_varray_int_get(&va, i));
42   }
43   printf("\n");
44 
45   ndup = HECMW_varray_int_uniq(&va);
46   printf("%d elemeent(s) removed\n", ndup);
47 
48   printf("After uniq va:");
49   for (i = 0; i < HECMW_varray_int_nval(&va); i++) {
50     printf(" %d", HECMW_varray_int_get(&va, i));
51   }
52   printf("\n");
53 
54   if (HECMW_varray_int_init(&vb) != HECMW_SUCCESS) {
55     perror("init vb");
56     return HECMW_EXIT_ERROR;
57   }
58 
59   if (HECMW_varray_int_resize(&vb, 100) != HECMW_SUCCESS) {
60     perror("resize vb");
61     return HECMW_EXIT_ERROR;
62   }
63 
64   vb_vals = HECMW_varray_int_get_v(&vb);
65 
66   if (vb_vals == NULL) {
67     perror("get_v vb");
68     return HECMW_EXIT_ERROR;
69   }
70 
71   for (i = 0; i < 100; i++) {
72     vb_vals[i] = i * 23 % 31;
73   }
74 
75   printf("Initial vb:");
76   for (i = 0; i < HECMW_varray_int_nval(&vb); i++) {
77     printf(" %d", HECMW_varray_int_get(&vb, i));
78   }
79   printf("\n");
80 
81   if (HECMW_varray_int_cat(&va, &vb) != HECMW_SUCCESS) {
82     perror("cat va vb");
83     return HECMW_EXIT_ERROR;
84   }
85 
86   printf("After cat va&vb:");
87   for (i = 0; i < HECMW_varray_int_nval(&va); i++) {
88     printf(" %d", HECMW_varray_int_get(&va, i));
89   }
90   printf("\n");
91 
92   if (HECMW_varray_int_rmdup(&va) != HECMW_SUCCESS) {
93     perror("rmdup va");
94     return HECMW_EXIT_ERROR;
95   }
96 
97   printf("After rmdup va:");
98   for (i = 0; i < HECMW_varray_int_nval(&va); i++) {
99     printf(" %d", HECMW_varray_int_get(&va, i));
100   }
101   printf("\n");
102 
103   HECMW_varray_int_finalize(&vb);
104   HECMW_varray_int_finalize(&va);
105 
106   return HECMW_EXIT_SUCCESS;
107 }
108