Rene Brun wrote: > Hi Nicolas, > > You cannot assume that elements in a C struct are aligned. > Use a class instead of a C-struct if the length of the struct members > are different. In case of a class the dictionary is used to return the > right offset of each member inside the class. > Your example will work if you change the position of the element "t" > > typedef struct { > Float_t x,y,z; > Float_t t; > Char_t c[4]; > } POINT; Hi, unfortunately this is not so simple. In fact I m trying to write a program to transform an arbitrary FITS table in a ROOT tree. (FITS is a astrophysical file storage standard) In a FITS tables there can be many string columns and it is desirable to keep the original order of the elements. In fact I don't have a proper struct because each FITS file will correspond to another struct. I must work with just a flat array of byte and I compute myself the offset in this array. But I was never able to figure out how to compute offset for char strings. The program I gave in the mail was just an example to demonstrate my problem. My questions are: 1- does \C make sense or should be always give the maximal length of the string like \C20 for example. The documentation seems to say that \C stand for any string but I cannot see how this is possible. 2- In case of a declaration of \C20 can we store a shorter string? 3- I don't understand the alignment problem, in my example I gave c[4] because I thought that 4 bytes is always a safe number for memory alignment. Is it (or should I use 8)? I can instruct my program to create only string column having a safe number of bytes if this will help. Thanks -- Nicolas Produit INTEGRAL Science Data Center Phone: +41 22 950 91 40 16, Chemin d'Ecogia Fax: +41 22 950 91 33 CH-1290 Versoix www: http://isdc.unige.ch/
This archive was generated by hypermail 2b29 : Thu Jan 01 2004 - 17:50:10 MET