1 /* 8.3.1: ISO_Fortran_binding.h may be included more than once. */ 2 3 #include <stdlib.h> 4 5 #include <ISO_Fortran_binding.h> 6 #include "dump-descriptors.h" 7 8 extern void ctest (CFI_cdesc_t *a); 9 10 struct descriptor_fixed_part { 11 void *base_addr; 12 size_t elem_len; 13 int version; 14 }; 15 16 void ctest(CFI_cdesc_t * a)17ctest (CFI_cdesc_t *a) 18 { 19 struct descriptor_fixed_part *f = (struct descriptor_fixed_part *) a; 20 21 /* Dump the descriptor contents to test that we can access the fields 22 correctly, etc. */ 23 dump_CFI_cdesc_t (a); 24 25 /* The first three members of the structure shall be base_addr, 26 elem_len, and version in that order. */ 27 if (&(a->base_addr) != &(f->base_addr)) 28 abort (); 29 if (&(a->elem_len) != &(f->elem_len)) 30 abort (); 31 if (&(a->version) != &(f->version)) 32 abort (); 33 34 /* The final member shall be dim, with the other members after version 35 and before dim in any order. */ 36 if ((void *)&(a->rank) >= (void *)a->dim) 37 abort (); 38 if ((void *)&(a->type) >= (void *)a->dim) 39 abort (); 40 if ((void *)&(a->attribute) >= (void *)a->dim) 41 abort (); 42 } 43