<div dir="ltr"><br>I've done the following at the moment:<br><br>{$IFDEF SU_HAVE_SOCKADDR_SA_LEN}<br>// #define               su_len          su_sa.sa_len <- unsupported for now<br>{$ELSE}<br>// #define               su_len          su_array[0] <- unsupported for now<br>

{$ENDIF}<br>// #define               su_family       su_sa.sa_family <- unsupported for now<br>// #define               su_port         su_sin.sin_port <- unsupported for now<br>// #define               su_scope_id     su_array32[6] <- unsupported for now  <br>

<br>su_sockaddr_u  = record<br>                     case Byte of<br>                       0 : (su_dummy   : cshort);                  //< Dummy member to initialize<br>                       1 : (su_array   : array[0..31] of char);    // Presented as chars<br>

                       2 : (su_array16 : array[0..15] of cuint16); // Presented as 16-bit ints<br>                       3 : (su_array32 : array[0..8]  of cuint32); // Presented as 32-bit ints<br>                       4 : (su_sa      : sockaddr);                // Address in struct sockaddr format<br>

                       5 : (su_sin     : sockaddr_in);             // Address in IPv4 format<br>{$IFDEF SU_HAVE_IN6}<br>                       6 : (su_sin6    : sockaddr_in6);            // Address in IPv6 format<br>{$ENDIF}<br>

                   end;<br><br><br>As I understood by you and C developers that I talked to, the macro create a shortcut to be used.<br><br>Thanks,<br><br>Ido<br><br><div class="gmail_quote">On Sat, Apr 30, 2011 at 11:53, Ludo Brands <span dir="ltr"><<a href="mailto:ludo.brands@free.fr">ludo.brands@free.fr</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">





<div>
<div><font size="2" color="#0000ff" face="Arial"><span>Using 
macros, the translation looks like</span></font></div>
<div><font size="2" color="#0000ff" face="Arial"></font> </div>
<div><font face="Arial"><font color="#0000ff"><font size="2">{$MACRO ON}<br>{$ifndef 
DOCUMENTATION_ONLY}<br>{$if SU_HAVE_SOCKADDR_SA_LEN <>0}<br>  
{$define su_len:=su_sa.sa_len}<br>{$else}<br>  {$define 
su_len:=su_array[0]}<br>{$endif}<br>{$define 
su_family:=su_sa.sa_family}<br>{$define su_port:=su_sin.sin_port}<br>{$define 
su_scope_id:=su_array32[6]}<br>{$endif}<br><span>type</span></font></font></font></div>
<div><font face="Arial"><font color="#0000ff"><font size="2"><span>    su_sockaddr_u = 
record<br>        case longint of<br>  
        {$ifdef 
DOCUMENTATION_ONLY}<br>          0 
: ( su_len : byte );<br>          1 
: ( su_family : byte 
);<br>          2 : ( su_port : 
word );<br>          
{$else}<br>          3 : ( su_dummy 
: smallint );<br>          
{$endif}<br>          4 : ( 
su_array : array[0..31] of char 
);<br>          5 : ( su_array16 : 
array[0..15] of word 
);<br>          6 : ( su_array32 : 
array[0..7] of longword 
);<br>          7 : ( su_sa : 
sockaddr );<br>          8 : ( 
su_sin : sockaddr_in 
);<br>          {$if SU_HAVE_IN6 
<>0}<br>          9 : ( 
su_sin6 : sockaddr_in6 
);<br>          
{$endif}<br>          {$ifdef 
DOCUMENTATION_ONLY}<br>          10 
: ( su_scope_id : longword 
);<br>          
{$endif}<br>        
end;<br></span></font></font></font></div>
<blockquote dir="ltr" style="margin-right:0px">
  <div></div>
  <div dir="ltr" lang="fr" align="left"><font size="2" face="Tahoma"><div class="im">-----Message d'origine-----<br><b>De :</b> 
  <a href="mailto:fpc-pascal-bounces@lists.freepascal.org" target="_blank">fpc-pascal-bounces@lists.freepascal.org</a> 
  [mailto:<a href="mailto:fpc-pascal-bounces@lists.freepascal.org" target="_blank">fpc-pascal-bounces@lists.freepascal.org</a>] <b>De la part de</b> Ludo 
  Brands<br></div><b>Envoyé :</b> samedi 30 avril 2011 10:29<div class="im"><br><b>À :</b> 
  'FPC-Pascal users discussions'<br></div><b>Objet :</b> RE : RE : [fpc-pascal] 
  How to translate this union ?<br><br></font></div><div><div></div><div class="h5">
  <div><span><font size="2" color="#0000ff" face="Arial">Forget my previous reply. I found the original header file on 
  sourceforge. </font></span></div>
  <div><span><font size="2" color="#0000ff" face="Arial"></font></span> </div>
  <div><span><font size="2" color="#0000ff" face="Arial">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. 
  </font></span></div>
  <div><span><font size="2" color="#0000ff" face="Arial">You 
  could use macros and do a {$define su_family:=susa.sa_family} with the 
  following limitations:</font></span></div>
  <div><span><font size="2" color="#0000ff" face="Arial">- if 
  you have variables or other record members named su_family, not part of the 
  su_sockaddr_u record, they will be renamed also. </font></span></div>
  <div><span><font size="2" color="#0000ff" face="Arial">- it 
  works only for the units that include your .inc file.</font></span></div>
  <div><span></span> </div>
  <blockquote dir="ltr" style="margin-right:0px">
    <div></div>
    <div dir="ltr" lang="fr" align="left"><font size="2" face="Tahoma">-----Message d'origine-----<br><b>De :</b> 
    <a href="mailto:fpc-pascal-bounces@lists.freepascal.org" target="_blank">fpc-pascal-bounces@lists.freepascal.org</a> 
    [mailto:<a href="mailto:fpc-pascal-bounces@lists.freepascal.org" target="_blank">fpc-pascal-bounces@lists.freepascal.org</a>] <b>De la part de</b> Ludo 
    Brands<br><b>Envoyé :</b> samedi 30 avril 2011 09:18<br><b>À :</b> 
    'FPC-Pascal users discussions'<br><b>Objet :</b> RE : [fpc-pascal] How 
    to translate this union ?<br><br></font></div>
    <div><span><font size="2" color="#0000ff" face="Arial">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.</font></span></div>
    <div><span><font size="2" color="#0000ff" face="Arial"></font></span> </div>
    <div><span><font size="2" color="#0000ff" face="Arial">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.</font></span></div>
    <div><span><font size="2" color="#0000ff" face="Arial"></font></span> </div>
    <div><span><font size="2" color="#0000ff" face="Arial"></font></span> </div>
    <div></div>
    <div><font size="2" face="Tahoma">-----Message 
    d'origine-----<br><b>De :</b> <a href="mailto:fpc-pascal-bounces@lists.freepascal.org" target="_blank">fpc-pascal-bounces@lists.freepascal.org</a> 
    [mailto:<a href="mailto:fpc-pascal-bounces@lists.freepascal.org" target="_blank">fpc-pascal-bounces@lists.freepascal.org</a>] <b>De la part de</b> 
    ik<br><b>Envoyé :</b> vendredi 29 avril 2011 22:15<br><b>À :</b> 
    FPC-Pascal users discussions<br><b>Objet :</b> [fpc-pascal] How to 
    translate this union ?<br><br></font></div>
    <blockquote dir="ltr" style="margin-right:0px">
      <div dir="ltr">Hello list,<br><br>I'm trying to translate the <a href="https://github.com/ik5/sofia-sip/blob/master/src/lib/sui.inc#L199" target="_blank">following 
      union</a> to Pascal, but I do not understand it, and so does h2pas.<br>How 
      to translate it ?<br><br>Thanks,<br><br>Ido<br><br><br clear="all">
      <div dir="ltr">LINESIP - Opening the source for communication<br><a href="http://www.linesip.com" target="_blank">http://www.linesip.com</a><br><a href="http://www.linesip.co.il" target="_blank">http://www.linesip.co.il</a><br>

<br></div><br></div></blockquote></blockquote></div></div></blockquote></div>
<br>_______________________________________________<br>
fpc-pascal maillist  -  <a href="mailto:fpc-pascal@lists.freepascal.org">fpc-pascal@lists.freepascal.org</a><br>
<a href="http://lists.freepascal.org/mailman/listinfo/fpc-pascal" target="_blank">http://lists.freepascal.org/mailman/listinfo/fpc-pascal</a><br></blockquote></div><br></div>