1extern void abort(void);
2
3typedef struct myCDerived
4{
5   int cInt;
6   double cDouble;
7   float cFloat;
8   short cShort;
9   void *ptr;
10}myCDerived_t;
11
12#define DERIVED_ARRAY_LEN 10
13#define ARRAY_LEN_2 3
14#define DIM1 2
15#define DIM2 3
16
17void testDerivedPtrs(myCDerived_t *cDerivedPtr,
18                     myCDerived_t *derivedArray, int arrayLen,
19                     myCDerived_t *derived2d, int dim1, int dim2);
20
21int main(int argc, char **argv)
22{
23   myCDerived_t cDerived;
24   myCDerived_t derivedArray[DERIVED_ARRAY_LEN];
25   myCDerived_t derived2DArray[DIM1][DIM2];
26   int i = 0;
27   int j = 0;
28
29   cDerived.cInt = 1;
30   cDerived.cDouble = 2.0;
31   cDerived.cFloat = 3.0;
32   cDerived.cShort = 4;
33/*    cDerived.ptr = NULL; */
34   /* nullify the ptr */
35   cDerived.ptr = 0;
36
37   for(i = 0; i < DERIVED_ARRAY_LEN; i++)
38   {
39      derivedArray[i].cInt = (i+1) * 1;
40      derivedArray[i].cDouble = (i+1) * 1.0; /* 2.0; */
41      derivedArray[i].cFloat = (i+1) * 1.0; /* 3.0; */
42      derivedArray[i].cShort = (i+1) * 1; /* 4; */
43/*       derivedArray[i].ptr = NULL; */
44      derivedArray[i].ptr = 0;
45   }
46
47   for(i = 0; i < DIM1; i++)
48   {
49      for(j = 0; j < DIM2; j++)
50      {
51         derived2DArray[i][j].cInt = ((i*DIM1) * 1) + j;
52         derived2DArray[i][j].cDouble = ((i*DIM1) * 1.0) + j;
53         derived2DArray[i][j].cFloat = ((i*DIM1) * 1.0) + j;
54         derived2DArray[i][j].cShort = ((i*DIM1) * 1) + j;
55/*          derived2DArray[i][j].ptr = NULL; */
56         derived2DArray[i][j].ptr = 0;
57      }
58   }
59
60   /* send in the transpose size (dim2 is dim1, dim1 is dim2) */
61   testDerivedPtrs(&cDerived, derivedArray, DERIVED_ARRAY_LEN,
62                   derived2DArray[0], DIM2, DIM1);
63
64   return 0;
65}/* end main() */
66
67