That is why it is conditional : su_sockaddr_u = record (...) {$ifdef DOCUMENTATION_ONLY} 0 : ( su_len : byte ); 1 : ( su_family : byte ); 2 : ( su_port : word ); {$else} 3 : ( su_dummy : smallint ); {$endif} (...) end;
Cheers, Ludo -----Message d'origine----- De : fpc-pascal-boun...@lists.freepascal.org [mailto:fpc-pascal-boun...@lists.freepascal.org] De la part de Sven Barth Envoyé : dimanche 1 mai 2011 00:19 À : fpc-pascal@lists.freepascal.org Objet : Re: RE : RE : RE : [fpc-pascal] How to translate this union ? Question: In case of DOCUMENTATION_ONLY not defined, does su_sockaddr_u = record (...) 1 : ( su_sa.sa_family : byte ) (...) end; really compile? (From what I know about Pascal I would say: no) Regards, Sven On 30.04.2011 10:53, Ludo Brands wrote: > Using macros, the translation looks like > {$MACRO ON} > {$ifndef DOCUMENTATION_ONLY} > {$if SU_HAVE_SOCKADDR_SA_LEN <>0} > {$define su_len:=su_sa.sa_len} > {$else} > {$define su_len:=su_array[0]} > {$endif} > {$define su_family:=su_sa.sa_family} > {$define su_port:=su_sin.sin_port} > {$define su_scope_id:=su_array32[6]} > {$endif} > type > su_sockaddr_u = record > case longint of > {$ifdef DOCUMENTATION_ONLY} > 0 : ( su_len : byte ); > 1 : ( su_family : byte ); > 2 : ( su_port : word ); > {$else} > 3 : ( su_dummy : smallint ); > {$endif} > 4 : ( su_array : array[0..31] of char ); > 5 : ( su_array16 : array[0..15] of word ); > 6 : ( su_array32 : array[0..7] of longword ); > 7 : ( su_sa : sockaddr ); > 8 : ( su_sin : sockaddr_in ); > {$if SU_HAVE_IN6 <>0} > 9 : ( su_sin6 : sockaddr_in6 ); > {$endif} > {$ifdef DOCUMENTATION_ONLY} > 10 : ( su_scope_id : longword ); > {$endif} > end; > > -----Message d'origine----- > *De :* fpc-pascal-boun...@lists.freepascal.org > [mailto:fpc-pascal-boun...@lists.freepascal.org] *De la part de* > Ludo Brands > *Envoyé :* samedi 30 avril 2011 10:29 > *À :* 'FPC-Pascal users discussions' > *Objet :* RE : RE : [fpc-pascal] How to translate this union ? > > Forget my previous reply. I found the original header file on > sourceforge. > I have alse a better understanding now of what the code is supposed > to do: in case DOCUMENTATION_ONLY is not defined, a reference to, > for example, su_sockaddr_u.su_family will be subsstituted by > su_sockaddr_u.susa.sa_family. > You could use macros and do a {$define su_family:=susa.sa_family} > with the following limitations: > - if you have variables or other record members named su_family, not > part of the su_sockaddr_u record, they will be renamed also. > - it works only for the units that include your .inc file. > > -----Message d'origine----- > *De :* fpc-pascal-boun...@lists.freepascal.org > [mailto:fpc-pascal-boun...@lists.freepascal.org] *De la part de* > Ludo Brands > *Envoyé :* samedi 30 avril 2011 09:18 > *À :* 'FPC-Pascal users discussions' > *Objet :* RE : [fpc-pascal] How to translate this union ? > > Can you post the original c code? You point to a file that seems > to be a reworked output from h2pas. As it is now, it indeed > doesn't make any sense. I would think the > su_len,su_family,su_port should make up a record but they aren't. > I suggest you move the #defines inside the union declaration to > somewhere before the union declaration. It'll double up the > ifdef's but make the code so much more readable. > -----Message d'origine----- > *De :* fpc-pascal-boun...@lists.freepascal.org > [mailto:fpc-pascal-boun...@lists.freepascal.org] *De la part de* ik > *Envoyé :* vendredi 29 avril 2011 22:15 > *À :* FPC-Pascal users discussions > *Objet :* [fpc-pascal] How to translate this union ? > > Hello list, > > I'm trying to translate the following union > <https://github.com/ik5/sofia-sip/blob/master/src/lib/sui.inc#L199> > to Pascal, but I do not understand it, and so does h2pas. > How to translate it ? > > Thanks, > > Ido > > > LINESIP - Opening the source for communication > http://www.linesip.com > http://www.linesip.co.il > > > > > _______________________________________________ > fpc-pascal maillist - fpc-pascal@lists.freepascal.org > http://lists.freepascal.org/mailman/listinfo/fpc-pascal _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal