<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<TITLE>Message</TITLE>

<META content="MSHTML 6.00.6000.16544" name=GENERATOR></HEAD>
<BODY><SPAN class=265154613-05052011><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN>
<DIV></DIV>
<DIV><FONT face=Arial><FONT color=#0000ff><FONT size=2>O<SPAN 
class=265154613-05052011>K </SPAN><SPAN class=265154613-05052011>. You have 
avoided using macros but are loosing the access to "pseudo" members 
su_len,su_family,su_port and su_scope_id. The DOCUMENTATION_ONLY suggests that 
these members are documented parts of the interface. Also it will be up to the 
user to figure out where to get su_len according to 
SU_HAVE_SOCKADDR_SA_LEN.</SPAN></FONT></FONT></FONT></DIV>
<DIV><FONT face=Arial><FONT color=#0000ff><FONT size=2><SPAN 
class=265154613-05052011></SPAN></FONT></FONT></FONT><FONT face=Arial><FONT 
color=#0000ff><FONT size=2><SPAN 
class=265154613-05052011></SPAN></FONT></FONT></FONT><FONT face=Arial><FONT 
color=#0000ff><FONT size=2><SPAN 
class=265154613-05052011></SPAN></FONT></FONT></FONT> </DIV>
<DIV><FONT face=Arial><FONT color=#0000ff><FONT size=2><SPAN 
class=265154613-05052011></SPAN></FONT></FONT></FONT> </DIV>
<DIV><FONT face=Tahoma><FONT size=2><FONT face=Arial><FONT color=#0000ff><SPAN 
class=265154613-05052011> </SPAN></FONT></FONT>-----Message 
d'origine-----<BR><B>De :</B> fpc-pascal-bounces@lists.freepascal.org 
[mailto:fpc-pascal-bounces@lists.freepascal.org] <B>De la part de</B> 
ik<BR><B>Envoyé :</B> jeudi 5 mai 2011 15:19<BR><B>À :</B> FPC-Pascal 
users discussions<BR><B>Objet :</B> Re: RE : RE : RE : [fpc-pascal] How to 
translate this union ?<BR><BR></DIV></FONT></FONT>
<BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px">
  <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="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid">
    <DIV>
    <DIV><FONT face=Arial color=#0000ff size=2><SPAN>Using macros, the 
    translation looks like</SPAN></FONT></DIV>
    <DIV><FONT face=Arial color=#0000ff size=2></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 lang=fr dir=ltr align=left><FONT face=Tahoma size=2>
      <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 face=Arial color=#0000ff size=2>Forget my previous reply. 
      I found the original header file on sourceforge. </FONT></SPAN></DIV>
      <DIV><SPAN><FONT face=Arial color=#0000ff 
size=2></FONT></SPAN> </DIV>
      <DIV><SPAN><FONT face=Arial color=#0000ff size=2>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 face=Arial color=#0000ff size=2>You could use macros and 
      do a {$define su_family:=susa.sa_family} with the following 
      limitations:</FONT></SPAN></DIV>
      <DIV><SPAN><FONT face=Arial color=#0000ff size=2>- 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 face=Arial color=#0000ff size=2>- 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 lang=fr dir=ltr align=left><FONT face=Tahoma size=2>-----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 face=Arial color=#0000ff size=2>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 face=Arial color=#0000ff 
        size=2></FONT></SPAN> </DIV>
        <DIV><SPAN><FONT face=Arial color=#0000ff size=2>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 face=Arial color=#0000ff 
        size=2></FONT></SPAN> </DIV>
        <DIV><SPAN><FONT face=Arial color=#0000ff 
        size=2></FONT></SPAN> </DIV>
        <DIV></DIV>
        <DIV><FONT face=Tahoma size=2>-----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></BLOCKQUOTE></BODY></HTML>