main
test-branch
| Line | |
|---|
| 1 | /* Testing for bundle pack and unpack which invloves a flexible way of
|
|---|
| 2 | reading and writing arrays. This example may still not cover all possible
|
|---|
| 3 | cases. Anyone can add more send and receive pairs for different cases.
|
|---|
| 4 | */
|
|---|
| 5 | #include <civlc.cvh>
|
|---|
| 6 | #include <bundle.cvh>
|
|---|
| 7 | #include <stdlib.h>
|
|---|
| 8 |
|
|---|
| 9 | $input int N;
|
|---|
| 10 | $assume(N > 4);
|
|---|
| 11 | $input int inputs1[3][N];
|
|---|
| 12 | $input int inputs2[N][3];
|
|---|
| 13 | $input int inputs3[2 * N];
|
|---|
| 14 |
|
|---|
| 15 | void main(){
|
|---|
| 16 | int * p;
|
|---|
| 17 | int * p2;
|
|---|
| 18 | double ** pp;
|
|---|
| 19 |
|
|---|
| 20 | p = (int *)malloc(sizeof(int) * 3 * N);
|
|---|
| 21 | p2 = (int *)malloc(sizeof(int) * 2 * N);
|
|---|
| 22 | pp = (double **)malloc(sizeof(double *) * 2);
|
|---|
| 23 | for (int i = 0; i < 2; i++) {
|
|---|
| 24 | pp[i] = (double *)malloc(sizeof(double) * 10);
|
|---|
| 25 | for (int j = 0; j < 10; j++) pp[i][j] = i + 1;
|
|---|
| 26 | }
|
|---|
| 27 |
|
|---|
| 28 | $bundle bun;
|
|---|
| 29 |
|
|---|
| 30 | bun = $bundle_pack(pp[0], sizeof(double) * 10);
|
|---|
| 31 |
|
|---|
| 32 | $bundle_unpack_apply(bun, pp[1], _MAXLOC, 5, pp[0]);
|
|---|
| 33 | for (int j = 0; j < 10; j++) $assert(pp[0][j] == 2);
|
|---|
| 34 |
|
|---|
| 35 | $bundle_unpack_apply(bun, pp[1], _SUM, 10, pp[0]);
|
|---|
| 36 | for (int j = 0; j < 10; j++) $assert(pp[0][j] == 3);
|
|---|
| 37 |
|
|---|
| 38 |
|
|---|
| 39 | free(p);
|
|---|
| 40 | free(p2);
|
|---|
| 41 | free(pp[0]);
|
|---|
| 42 | free(pp[1]);
|
|---|
| 43 | free(pp);
|
|---|
| 44 | }
|
|---|
Note:
See
TracBrowser
for help on using the repository browser.