<unit name="ok_complicated_record">
  <description><abstract> This unit is used for converting to and from the BigEndian format. See http://community.borland.com/article/0,1410,28964,00.html.</abstract><detailed>Submitted in thread &quot;Pasdoc tests&quot; on pasdoc-main on 2005-04-11 by Richard B Winston. pasdoc passes it, but the test checks many important things (line glueing single-line comments by pasdoc, record with case etc.) so it's worth adding it to test cases. </detailed></description>
  <routine name="ConvertDouble" declaration="function ConvertDouble(const Value: double): double;" type="function">
    <param name="Value">is the value to be converted.</param>
    <result>Value after being converted to or from the BigEndian format.</result>
    <description><abstract><code>ConvertDouble</code> converts Value to or from the BigEndian format.</abstract><detailed>  </detailed></description>
  </routine>
  <routine name="SwapDoubleBytes" declaration="procedure SwapDoubleBytes(Dest, Source: PDoubleEndianCnvRec);" type="procedure">
    <description><abstract><code>SwapDoubleBytes</code> copies TDoubleEndianCnvRec.Bytes in reverse order from Source^ to Dest^.</abstract><detailed> <code>SwapDoubleBytes</code> is used in ConvertDouble.</detailed></description>
  </routine>
  <type name="BytePos" declaration="BytePos = (...);">
    <description><abstract>enumeration used in variant record</abstract></description>
    <constant name="EndVal" declaration="EndVal">
    </constant>
    <constant name="ByteVal" declaration="ByteVal">
    </constant>
  </type>
  <type name="PDoubleEndianCnvRec" declaration="PDoubleEndianCnvRec = ^TDoubleEndianCnvRec;">
    <description><abstract><code>PDoubleEndianCnvRec</code> is a pointer to a TDoubleEndianCnvRec.</abstract></description>
  </type>
  <structure name="TDoubleEndianCnvRec" name_with_generic="TDoubleEndianCnvRec" type="packed record">
    <description><abstract><code>TDoubleEndianCnvRec</code> is used in ConvertDouble to convert a double to or from the BigEndian format.</abstract><detailed> 
TDoubleEndianCnvRec = packed record
  case BytePos of
    EndVal: (EndianVal: double);
    ByteVal: (Bytes: array[0..SizeOf(double) - 1] of byte);
end;</detailed></description>
    <variable name="Bytes" declaration="Bytes: array[0..SizeOf(double) - 1] of byte" visibility="public">
      <description><abstract>Overlapping bytes of the double</abstract></description>
    </variable>
    <variable name="EndianVal" declaration="EndianVal: double" visibility="public">
      <description><abstract>The value we are trying to convert</abstract></description>
    </variable>
  </structure>
</unit>
