Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > bad97183153701b09df5fae1052b1c30 > files > 1331

crystalspace-doc-1.2.1-5mdv2010.0.i586.rpm

<!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>Crystal Space 1.2.1: csutil/csendian.h Source File (Crystal Space 1.2.1 Public API Reference)</title>
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<table border="0" cellpadding="0" cellspacing="0" width="100%" class="head">
 <tr height="59">
  <td class="head" width="202" valign="bottom" style="padding-left:0;"><a href="http://www.crystalspace3d.org/"><img src="csblur.png" width="236" height="59" alt="CrystalSpace" border="0"></a></td>
  <td class="head"><h2>Public API Reference</h2></td>
 </tr>
 <tr height="11">
  <td colspan="2" class="headshadow" valign="top" style="padding-left:0;"><img src="csblurb.png" width="236" height="11" alt="" border="0"></td>
 </tr>
</table>
<div class="content">
<!-- Generated by Doxygen 1.5.3 -->
<div class="tabs">
  <ul>
    <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
    <li><a href="modules.html"><span>Modules</span></a></li>
    <li><a href="namespaces.html"><span>Namespaces</span></a></li>
    <li><a href="classes.html"><span>Classes</span></a></li>
    <li class="current"><a href="files.html"><span>Files</span></a></li>
    <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
  </ul>
</div>
<h1>csutil/csendian.h</h1><a href="csendian_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment">    Copyright (C) 1998 by Jorrit Tyberghein</span>
<a name="l00003"></a>00003 <span class="comment"></span>
<a name="l00004"></a>00004 <span class="comment">    This library is free software; you can redistribute it and/or</span>
<a name="l00005"></a>00005 <span class="comment">    modify it under the terms of the GNU Library General Public</span>
<a name="l00006"></a>00006 <span class="comment">    License as published by the Free Software Foundation; either</span>
<a name="l00007"></a>00007 <span class="comment">    version 2 of the License, or (at your option) any later version.</span>
<a name="l00008"></a>00008 <span class="comment"></span>
<a name="l00009"></a>00009 <span class="comment">    This library is distributed in the hope that it will be useful,</span>
<a name="l00010"></a>00010 <span class="comment">    but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00011"></a>00011 <span class="comment">    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
<a name="l00012"></a>00012 <span class="comment">    Library General Public License for more details.</span>
<a name="l00013"></a>00013 <span class="comment"></span>
<a name="l00014"></a>00014 <span class="comment">    You should have received a copy of the GNU Library General Public</span>
<a name="l00015"></a>00015 <span class="comment">    License along with this library; if not, write to the Free</span>
<a name="l00016"></a>00016 <span class="comment">    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</span>
<a name="l00017"></a>00017 <span class="comment">*/</span>
<a name="l00018"></a>00018 
<a name="l00019"></a>00019 <span class="preprocessor">#ifndef __CS_CSENDIAN_H__</span>
<a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define __CS_CSENDIAN_H__</span>
<a name="l00021"></a>00021 <span class="preprocessor"></span>
<a name="l00029"></a>00029 <span class="preprocessor">#include &lt;<a class="code" href="math_8h.html" title="Generic mathematic utility functions.">math.h</a>&gt;</span>
<a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="cstypes_8h.html" title="Commonly used types and macros.">cstypes.h</a>"</span>
<a name="l00031"></a>00031 <span class="preprocessor">#if defined(CS_HAVE_BYTESWAP_H)</span>
<a name="l00032"></a>00032 <span class="preprocessor"></span><span class="preprocessor">#include &lt;byteswap.h&gt;</span>
<a name="l00033"></a>00033 <span class="preprocessor">#endif</span>
<a name="l00034"></a>00034 <span class="preprocessor"></span>
<a name="l00035"></a><a class="code" href="group__util.html#g20ad6ed7b2fc5754d8696f8d4eeebb90">00035</a> <span class="preprocessor">#define csQroundSure(x) (int ((x) + ((x &lt; 0) ? -0.5 : +0.5)))</span>
<a name="l00036"></a>00036 <span class="preprocessor"></span>
<a name="l00040"></a><a class="code" href="structcsSwapBytes.html">00040</a> <span class="keyword">struct </span><a class="code" href="structcsSwapBytes.html" title="Methods to unconditionally swap the byte order of specifically sized types.">csSwapBytes</a>
<a name="l00041"></a>00041 {
<a name="l00042"></a>00042 <span class="keyword">public</span>:
<a name="l00044"></a>00044 
<a name="l00045"></a><a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be">00045</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (<a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> s) 
<a name="l00046"></a>00046   { 
<a name="l00047"></a>00047 <span class="preprocessor">  #if defined(CS_COMPILER_MSVC) &amp;&amp; (_MSC_VER &gt;= 1300)</span>
<a name="l00048"></a>00048 <span class="preprocessor"></span>    <span class="keywordflow">return</span> _byteswap_ushort (s);
<a name="l00049"></a>00049 <span class="preprocessor">  #elif defined(CS_HAVE_BYTESWAP_H)</span>
<a name="l00050"></a>00050 <span class="preprocessor"></span>    <span class="keywordflow">return</span> bswap_16 (s);
<a name="l00051"></a>00051 <span class="preprocessor">  #else</span>
<a name="l00052"></a>00052 <span class="preprocessor"></span>    <span class="keywordflow">return</span> (s &gt;&gt; 8) | (s &lt;&lt; 8); 
<a name="l00053"></a>00053 <span class="preprocessor">  #endif</span>
<a name="l00054"></a>00054 <span class="preprocessor"></span>  }
<a name="l00055"></a><a class="code" href="structcsSwapBytes.html#ef4bc5932a8447bc469795947f9ac45e">00055</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a>  <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (<a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a> s)
<a name="l00056"></a>00056   { <span class="keywordflow">return</span> (<a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a>)<a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> ((<a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a>)s); }
<a name="l00057"></a><a class="code" href="structcsSwapBytes.html#a55ee2e5d2b725fabfcce4419885f0ea">00057</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (<a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> l)
<a name="l00058"></a>00058   { 
<a name="l00059"></a>00059 <span class="preprocessor">  #if defined(CS_COMPILER_MSVC) &amp;&amp; (_MSC_VER &gt;= 1300)</span>
<a name="l00060"></a>00060 <span class="preprocessor"></span>    <span class="keywordflow">return</span> _byteswap_ulong (l);
<a name="l00061"></a>00061 <span class="preprocessor">  #elif defined(CS_HAVE_BYTESWAP_H)</span>
<a name="l00062"></a>00062 <span class="preprocessor"></span>    <span class="keywordflow">return</span> bswap_32 (l);
<a name="l00063"></a>00063 <span class="preprocessor">  #else</span>
<a name="l00064"></a>00064 <span class="preprocessor"></span>    <span class="keywordflow">return</span> (l &gt;&gt; 24) | ((l &gt;&gt; 8) &amp; 0xff00) | ((l &lt;&lt; 8) &amp; 0xff0000) | (l &lt;&lt; 24); 
<a name="l00065"></a>00065 <span class="preprocessor">  #endif</span>
<a name="l00066"></a>00066 <span class="preprocessor"></span>  }
<a name="l00067"></a><a class="code" href="structcsSwapBytes.html#99a637159d3b6807e9e596f858279d17">00067</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a>  <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (<a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a> l)
<a name="l00068"></a>00068   { <span class="keywordflow">return</span> (<a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a>)<a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> ((<a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a>)l); }
<a name="l00069"></a><a class="code" href="structcsSwapBytes.html#05bba77db9204e7ea049ddc49c16fae3">00069</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> l)
<a name="l00070"></a>00070   {
<a name="l00071"></a>00071 <span class="preprocessor">  #if defined(CS_COMPILER_MSVC) &amp;&amp; (_MSC_VER &gt;= 1300)</span>
<a name="l00072"></a>00072 <span class="preprocessor"></span>    <span class="keywordflow">return</span> _byteswap_uint64 (l);
<a name="l00073"></a>00073 <span class="preprocessor">  #elif defined(CS_HAVE_BYTESWAP_H) &amp;&amp; !defined(__STRICT_ANSI__)</span>
<a name="l00074"></a>00074 <span class="preprocessor"></span>    <span class="keywordflow">return</span> bswap_64 (l);
<a name="l00075"></a>00075 <span class="preprocessor">  #else</span>
<a name="l00076"></a>00076 <span class="preprocessor"></span>    <span class="keyword">union</span>
<a name="l00077"></a>00077     {
<a name="l00078"></a>00078       <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> ui64;
<a name="l00079"></a>00079       <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> ui32[2];
<a name="l00080"></a>00080     } u1, u2;
<a name="l00081"></a>00081     u1.ui64 = l;
<a name="l00082"></a>00082     u2.ui32[0] = <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (u1.ui32[1]);
<a name="l00083"></a>00083     u2.ui32[1] = <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (u1.ui32[0]);
<a name="l00084"></a>00084     <span class="keywordflow">return</span> u2.ui64;
<a name="l00085"></a>00085 <span class="preprocessor">  #endif</span>
<a name="l00086"></a>00086 <span class="preprocessor"></span>  }
<a name="l00087"></a><a class="code" href="structcsSwapBytes.html#929e07595c810ccfe44bd358b5b551e8">00087</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>  <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> l)
<a name="l00088"></a>00088   { <span class="keywordflow">return</span> (<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>)<a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> ((<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a>)l); }
<a name="l00089"></a>00089   
<a name="l00090"></a><a class="code" href="structcsSwapBytes.html#3cac62ed529aa3f7d34ac52fe3b16846">00090</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> <a class="code" href="structcsSwapBytes.html#3cac62ed529aa3f7d34ac52fe3b16846">UInt16</a> (<a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> x) { <span class="keywordflow">return</span> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (x); }
<a name="l00091"></a><a class="code" href="structcsSwapBytes.html#ece0f810fb22e2fdd9468ccaeed76053">00091</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a>  <a class="code" href="structcsSwapBytes.html#ece0f810fb22e2fdd9468ccaeed76053">Int16</a>  (<a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a> x)  { <span class="keywordflow">return</span> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (x); }
<a name="l00092"></a><a class="code" href="structcsSwapBytes.html#a7438c05f6bcd9b8205f2ca1f16773e5">00092</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> <a class="code" href="structcsSwapBytes.html#a7438c05f6bcd9b8205f2ca1f16773e5">UInt32</a> (<a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> x) { <span class="keywordflow">return</span> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (x); }
<a name="l00093"></a><a class="code" href="structcsSwapBytes.html#9b487f0d4a4cffa29b15ebc57b8b9200">00093</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a>  <a class="code" href="structcsSwapBytes.html#9b487f0d4a4cffa29b15ebc57b8b9200">Int32</a>  (<a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a> x)  { <span class="keywordflow">return</span> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (x); }
<a name="l00094"></a><a class="code" href="structcsSwapBytes.html#5eb35bd81c1a9dd7014a0c24e71fb3a6">00094</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> <a class="code" href="structcsSwapBytes.html#5eb35bd81c1a9dd7014a0c24e71fb3a6">UInt64</a> (<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> x) { <span class="keywordflow">return</span> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (x); }
<a name="l00095"></a><a class="code" href="structcsSwapBytes.html#9e5a47f1009fb8f48a2c6885762cf472">00095</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>  <a class="code" href="structcsSwapBytes.html#9e5a47f1009fb8f48a2c6885762cf472">Int64</a>  (<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> x)  { <span class="keywordflow">return</span> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">Swap</a> (x); }
<a name="l00097"></a>00097 };
<a name="l00098"></a>00098 
<a name="l00099"></a>00099 <span class="preprocessor">#ifdef CS_BIG_ENDIAN</span>
<a name="l00100"></a>00100 <span class="preprocessor"></span><span class="keyword">struct </span><a class="code" href="structcsBigEndian.html" title="Big endian to native conversion routines.">csBigEndian</a>
<a name="l00101"></a>00101 #else
<a name="l00107"></a><a class="code" href="structcsLittleEndian.html">00107</a> struct <a class="code" href="structcsLittleEndian.html" title="Little endian to native conversion routines.">csLittleEndian</a>
<a name="l00108"></a>00108 #endif
<a name="l00109"></a>00109 {
<a name="l00111"></a>00111 
<a name="l00112"></a><a class="code" href="structcsLittleEndian.html#7084fe5e31f02387645f805bafcc16f4">00112</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (<a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> x) { <span class="keywordflow">return</span> x; }
<a name="l00113"></a><a class="code" href="structcsLittleEndian.html#cd30d68db556bf52495884babbe01f3c">00113</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a>  <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (<a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a> x)  { <span class="keywordflow">return</span> x; }
<a name="l00114"></a><a class="code" href="structcsLittleEndian.html#cbb33fdde6c68d21f14231cf11baf68b">00114</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (<a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> x) { <span class="keywordflow">return</span> x; }
<a name="l00115"></a><a class="code" href="structcsLittleEndian.html#94451642538ab090d92a4ef4d693ddda">00115</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a>  <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (<a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a> x)  { <span class="keywordflow">return</span> x; }
<a name="l00116"></a><a class="code" href="structcsLittleEndian.html#4092a7821148efadbfff7b7d2dbc45c3">00116</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> x) { <span class="keywordflow">return</span> x; }
<a name="l00117"></a><a class="code" href="structcsLittleEndian.html#059d0cd2a986112eafd577e3dc06db2a">00117</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>  <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> x)  { <span class="keywordflow">return</span> x; }
<a name="l00118"></a>00118   
<a name="l00119"></a><a class="code" href="structcsLittleEndian.html#f520545c2d09ccdccc45410b801a8ad6">00119</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> <a class="code" href="structcsBigEndian.html#d9487c9434d18f390317bd505711ed0c">UInt16</a> (<a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> x) { <span class="keywordflow">return</span> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (x); }
<a name="l00120"></a><a class="code" href="structcsLittleEndian.html#18cdf1d565583c8f3c7e33002f136b3c">00120</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a>  <a class="code" href="structcsBigEndian.html#cd0043b2336f16ac2ede13aa1a1d08bc">Int16</a>  (<a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a> x)  { <span class="keywordflow">return</span> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (x); }
<a name="l00121"></a><a class="code" href="structcsLittleEndian.html#28230d0f40f815eb9200e8b50026e0d2">00121</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> <a class="code" href="structcsBigEndian.html#fc23854c7240eac3b726eecced934e8f">UInt32</a> (<a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> x) { <span class="keywordflow">return</span> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (x); }
<a name="l00122"></a><a class="code" href="structcsLittleEndian.html#adb68f8a0b08214ffcf0d40462c1da3d">00122</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a>  <a class="code" href="structcsBigEndian.html#4675550524e8be4c7270fe6936294517">Int32</a>  (<a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a> x)  { <span class="keywordflow">return</span> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (x); }
<a name="l00123"></a><a class="code" href="structcsLittleEndian.html#1830fa7c52e45177c1ea300a19e939f2">00123</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> <a class="code" href="structcsBigEndian.html#96c93373e7584c18fb94a057c434900f">UInt64</a> (<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> x) { <span class="keywordflow">return</span> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (x); }
<a name="l00124"></a><a class="code" href="structcsLittleEndian.html#d4125a2804e85e55ec1c08809e7a3d87">00124</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>  <a class="code" href="structcsBigEndian.html#51e0474ffbe5f33a38ad970f5e9529e4">Int64</a>  (<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> x)  { <span class="keywordflow">return</span> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (x); }
<a name="l00126"></a>00126 };
<a name="l00127"></a>00127 
<a name="l00128"></a>00128 <span class="preprocessor">#ifdef CS_LITTLE_ENDIAN</span>
<a name="l00129"></a>00129 <span class="preprocessor"></span>
<a name="l00134"></a><a class="code" href="structcsBigEndian.html">00134</a> <span class="keyword">struct </span><a class="code" href="structcsBigEndian.html" title="Big endian to native conversion routines.">csBigEndian</a>
<a name="l00135"></a>00135 #else
<a name="l00136"></a>00136 struct <a class="code" href="structcsLittleEndian.html" title="Little endian to native conversion routines.">csLittleEndian</a>
<a name="l00137"></a>00137 #endif
<a name="l00138"></a>00138 {
<a name="l00139"></a>00139 <span class="keyword">public</span>:
<a name="l00141"></a>00141 
<a name="l00142"></a><a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538">00142</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (<a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> s) 
<a name="l00143"></a>00143   { <span class="keywordflow">return</span> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">csSwapBytes::Swap</a> (s); }
<a name="l00144"></a><a class="code" href="structcsBigEndian.html#41fc57233ffeece64c62fb4be7c1b934">00144</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a>  <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (<a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a> s)
<a name="l00145"></a>00145   { <span class="keywordflow">return</span> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">csSwapBytes::Swap</a> (s); }
<a name="l00146"></a><a class="code" href="structcsBigEndian.html#a6d57e13167f0c29c58b28d2d87cf80d">00146</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (<a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> l)
<a name="l00147"></a>00147   { <span class="keywordflow">return</span> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">csSwapBytes::Swap</a> (l); }
<a name="l00148"></a><a class="code" href="structcsBigEndian.html#b5ed04d68519cf6ea81365c17bbcc021">00148</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a>  <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (<a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a> l)
<a name="l00149"></a>00149   { <span class="keywordflow">return</span> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">csSwapBytes::Swap</a> (l); }
<a name="l00150"></a><a class="code" href="structcsBigEndian.html#a75f1f7a91f448afe262f033d42ed2b1">00150</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> l)
<a name="l00151"></a>00151   { <span class="keywordflow">return</span> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">csSwapBytes::Swap</a> (l); }
<a name="l00152"></a><a class="code" href="structcsBigEndian.html#992dfa74eca30fe3c94edf1aa2afb559">00152</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>  <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> l)
<a name="l00153"></a>00153   { <span class="keywordflow">return</span> <a class="code" href="structcsSwapBytes.html#e9054cbad7085e9717ebf09e825bb2be" title="Swap byte order.">csSwapBytes::Swap</a> (l); }
<a name="l00154"></a>00154   
<a name="l00155"></a><a class="code" href="structcsBigEndian.html#d9487c9434d18f390317bd505711ed0c">00155</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> <a class="code" href="structcsBigEndian.html#d9487c9434d18f390317bd505711ed0c">UInt16</a> (<a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> x) { <span class="keywordflow">return</span> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (x); }
<a name="l00156"></a><a class="code" href="structcsBigEndian.html#cd0043b2336f16ac2ede13aa1a1d08bc">00156</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a>  <a class="code" href="structcsBigEndian.html#cd0043b2336f16ac2ede13aa1a1d08bc">Int16</a>  (<a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a> x)  { <span class="keywordflow">return</span> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (x); }
<a name="l00157"></a><a class="code" href="structcsBigEndian.html#fc23854c7240eac3b726eecced934e8f">00157</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> <a class="code" href="structcsBigEndian.html#fc23854c7240eac3b726eecced934e8f">UInt32</a> (<a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> x) { <span class="keywordflow">return</span> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (x); }
<a name="l00158"></a><a class="code" href="structcsBigEndian.html#4675550524e8be4c7270fe6936294517">00158</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a>  <a class="code" href="structcsBigEndian.html#4675550524e8be4c7270fe6936294517">Int32</a>  (<a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a> x)  { <span class="keywordflow">return</span> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (x); }
<a name="l00159"></a><a class="code" href="structcsBigEndian.html#96c93373e7584c18fb94a057c434900f">00159</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> <a class="code" href="structcsBigEndian.html#96c93373e7584c18fb94a057c434900f">UInt64</a> (<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> x) { <span class="keywordflow">return</span> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (x); }
<a name="l00160"></a><a class="code" href="structcsBigEndian.html#51e0474ffbe5f33a38ad970f5e9529e4">00160</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>  <a class="code" href="structcsBigEndian.html#51e0474ffbe5f33a38ad970f5e9529e4">Int64</a>  (<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> x)  { <span class="keywordflow">return</span> <a class="code" href="structcsBigEndian.html#31f915351c5c0c9a2b4d97bf07740538" title="Convert specifically sized type from or to big endian.">Convert</a> (x); }
<a name="l00162"></a>00162 };
<a name="l00163"></a>00163 
<a name="l00167"></a><a class="code" href="structcsIEEEfloat.html">00167</a> <span class="keyword">struct </span><a class="code" href="structcsIEEEfloat.html" title="Convert IEEE 32-bit floats from or to native machine floats.">csIEEEfloat</a>
<a name="l00168"></a>00168 {
<a name="l00169"></a>00169   <span class="comment">/* \todo It would be even better if we also check for sizeof (float)</span>
<a name="l00170"></a>00170 <span class="comment">   * in configure or so. */</span>
<a name="l00171"></a>00171 <span class="preprocessor">#ifdef CS_IEEE_DOUBLE_FORMAT</span>
<a name="l00172"></a>00172 <span class="preprocessor"></span>
<a name="l00173"></a>00173 
<a name="l00174"></a><a class="code" href="structcsIEEEfloat.html#e615e309e067f654da6a4120dd7ba63e">00174</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> <a class="code" href="structcsIEEEfloat.html#e615e309e067f654da6a4120dd7ba63e" title="Convert native to IEEE.">FromNative</a> (<span class="keywordtype">float</span> f)
<a name="l00175"></a>00175   { 
<a name="l00176"></a>00176     <span class="keyword">union</span>
<a name="l00177"></a>00177     {
<a name="l00178"></a>00178       <span class="keywordtype">float</span> f;
<a name="l00179"></a>00179       <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> ui32;
<a name="l00180"></a>00180     } u;
<a name="l00181"></a>00181     u.f = f;
<a name="l00182"></a>00182     <span class="keywordflow">return</span> u.ui32; 
<a name="l00183"></a>00183   }
<a name="l00184"></a><a class="code" href="structcsIEEEfloat.html#f8f06fc25af4eaf1ce3f2a2136173ebe">00184</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> <a class="code" href="structcsIEEEfloat.html#e615e309e067f654da6a4120dd7ba63e" title="Convert native to IEEE.">FromNative</a> (<span class="keywordtype">double</span> f)
<a name="l00185"></a>00185   { 
<a name="l00186"></a>00186     <span class="keyword">union</span>
<a name="l00187"></a>00187     {
<a name="l00188"></a>00188       <span class="keywordtype">double</span> f;
<a name="l00189"></a>00189       <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> ui64;
<a name="l00190"></a>00190     } u;
<a name="l00191"></a>00191     u.f = f;
<a name="l00192"></a>00192     <span class="keywordflow">return</span> u.ui64; 
<a name="l00193"></a>00193   }
<a name="l00195"></a>00195 
<a name="l00197"></a>00197 
<a name="l00198"></a><a class="code" href="structcsIEEEfloat.html#15918104acd45923850fa88c4363d8a4">00198</a>   <span class="keyword">static</span> CS_FORCEINLINE <span class="keywordtype">float</span> <a class="code" href="structcsIEEEfloat.html#15918104acd45923850fa88c4363d8a4" title="Convert IEEE to native.">ToNative</a> (<a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> f)
<a name="l00199"></a>00199   { 
<a name="l00200"></a>00200     <span class="keyword">union</span>
<a name="l00201"></a>00201     {
<a name="l00202"></a>00202       <span class="keywordtype">float</span> f;
<a name="l00203"></a>00203       <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> ui32;
<a name="l00204"></a>00204     } u;
<a name="l00205"></a>00205     u.ui32 = f;
<a name="l00206"></a>00206     <span class="keywordflow">return</span> u.f; 
<a name="l00207"></a>00207   }
<a name="l00208"></a><a class="code" href="structcsIEEEfloat.html#d23e80078bd2e11028c776fc4c79d415">00208</a>   <span class="keyword">static</span> CS_FORCEINLINE <span class="keywordtype">double</span> <a class="code" href="structcsIEEEfloat.html#15918104acd45923850fa88c4363d8a4" title="Convert IEEE to native.">ToNative</a> (<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> f)
<a name="l00209"></a>00209   { 
<a name="l00210"></a>00210     <span class="keyword">union</span>
<a name="l00211"></a>00211     {
<a name="l00212"></a>00212       <span class="keywordtype">double</span> f;
<a name="l00213"></a>00213       <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> ui64;
<a name="l00214"></a>00214     } u;
<a name="l00215"></a>00215     u.ui64 = f;
<a name="l00216"></a>00216     <span class="keywordflow">return</span> u.f; 
<a name="l00217"></a>00217   }
<a name="l00219"></a>00219 <span class="preprocessor">#else</span>
<a name="l00220"></a>00220 <span class="preprocessor"></span><span class="preprocessor">  #error Do not know how to convert to IEEE floats</span>
<a name="l00221"></a>00221 <span class="preprocessor"></span><span class="preprocessor">#endif</span>
<a name="l00222"></a>00222 <span class="preprocessor"></span>};
<a name="l00223"></a>00223 
<a name="l00232"></a><a class="code" href="structcsGetFromAddress.html">00232</a> <span class="keyword">struct </span><a class="code" href="structcsGetFromAddress.html" title="Sized data type access helpers.">csGetFromAddress</a>
<a name="l00233"></a>00233 {
<a name="l00235"></a>00235 
<a name="l00236"></a><a class="code" href="structcsGetFromAddress.html#7e7fa9e395de01fbc42135e3d29dd73b">00236</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> <a class="code" href="structcsGetFromAddress.html#7e7fa9e395de01fbc42135e3d29dd73b" title="Get specifically sized type from unaligned memory address.">UInt16</a> (<span class="keyword">const</span> <span class="keywordtype">void</span> *buff)
<a name="l00237"></a>00237   {
<a name="l00238"></a>00238 <span class="preprocessor">  #ifdef CS_STRICT_ALIGNMENT</span>
<a name="l00239"></a>00239 <span class="preprocessor"></span>    <a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> s; memcpy (&amp;s, buff, <span class="keyword">sizeof</span> (s));
<a name="l00240"></a>00240     <span class="keywordflow">return</span> s;
<a name="l00241"></a>00241 <span class="preprocessor">  #else</span>
<a name="l00242"></a>00242 <span class="preprocessor"></span>    <span class="keywordflow">return</span> *(<a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> *)buff;
<a name="l00243"></a>00243 <span class="preprocessor">  #endif</span>
<a name="l00244"></a>00244 <span class="preprocessor"></span>  }
<a name="l00245"></a><a class="code" href="structcsGetFromAddress.html#3913ef9207884a60887239e73daff350">00245</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a>  <a class="code" href="structcsGetFromAddress.html#3913ef9207884a60887239e73daff350">Int16</a> (<span class="keyword">const</span> <span class="keywordtype">void</span> *buff)
<a name="l00246"></a>00246   { <span class="keywordflow">return</span> (<a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a>)<a class="code" href="structcsGetFromAddress.html#7e7fa9e395de01fbc42135e3d29dd73b" title="Get specifically sized type from unaligned memory address.">UInt16</a> (buff); }
<a name="l00247"></a><a class="code" href="structcsGetFromAddress.html#353df23df049930d02e8f47240457dc4">00247</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> <a class="code" href="structcsGetFromAddress.html#353df23df049930d02e8f47240457dc4">UInt32</a> (<span class="keyword">const</span> <span class="keywordtype">void</span> *buff)
<a name="l00248"></a>00248   {
<a name="l00249"></a>00249 <span class="preprocessor">  #ifdef CS_STRICT_ALIGNMENT</span>
<a name="l00250"></a>00250 <span class="preprocessor"></span>    <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> s; memcpy (&amp;s, buff, <span class="keyword">sizeof</span> (s));
<a name="l00251"></a>00251     <span class="keywordflow">return</span> s;
<a name="l00252"></a>00252 <span class="preprocessor">  #else</span>
<a name="l00253"></a>00253 <span class="preprocessor"></span>    <span class="keywordflow">return</span> *(<a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> *)buff;
<a name="l00254"></a>00254 <span class="preprocessor">  #endif</span>
<a name="l00255"></a>00255 <span class="preprocessor"></span>  }
<a name="l00256"></a><a class="code" href="structcsGetFromAddress.html#c289fe064f86b1bdfad6c27d424ddbbf">00256</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a>  <a class="code" href="structcsGetFromAddress.html#c289fe064f86b1bdfad6c27d424ddbbf">Int32</a> (<span class="keyword">const</span> <span class="keywordtype">void</span> *buff)
<a name="l00257"></a>00257   { <span class="keywordflow">return</span> (<a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a>)<a class="code" href="structcsGetFromAddress.html#353df23df049930d02e8f47240457dc4">UInt32</a> (buff); }
<a name="l00258"></a><a class="code" href="structcsGetFromAddress.html#824479434debb9435e7f03c241fcf1bf">00258</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> <a class="code" href="structcsGetFromAddress.html#824479434debb9435e7f03c241fcf1bf">UInt64</a> (<span class="keyword">const</span> <span class="keywordtype">void</span> *buff)
<a name="l00259"></a>00259   {
<a name="l00260"></a>00260 <span class="preprocessor">  #ifdef CS_STRICT_ALIGNMENT</span>
<a name="l00261"></a>00261 <span class="preprocessor"></span>    <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> s; memcpy (&amp;s, buff, <span class="keyword">sizeof</span> (s));
<a name="l00262"></a>00262     <span class="keywordflow">return</span> s;
<a name="l00263"></a>00263 <span class="preprocessor">  #else</span>
<a name="l00264"></a>00264 <span class="preprocessor"></span>    <span class="keywordflow">return</span> *(<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> *)buff;
<a name="l00265"></a>00265 <span class="preprocessor">  #endif</span>
<a name="l00266"></a>00266 <span class="preprocessor"></span>  }
<a name="l00267"></a><a class="code" href="structcsGetFromAddress.html#037280e564ae8c65b662a200d42e39eb">00267</a>   <span class="keyword">static</span> CS_FORCEINLINE <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>  <a class="code" href="structcsGetFromAddress.html#037280e564ae8c65b662a200d42e39eb">Int64</a> (<span class="keyword">const</span> <span class="keywordtype">void</span> *buff)
<a name="l00268"></a>00268   { <span class="keywordflow">return</span> (<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>)<a class="code" href="structcsGetFromAddress.html#824479434debb9435e7f03c241fcf1bf">UInt64</a> (buff); }
<a name="l00270"></a>00270 };
<a name="l00271"></a>00271 
<a name="l00280"></a><a class="code" href="structcsSetToAddress.html">00280</a> <span class="keyword">struct </span><a class="code" href="structcsSetToAddress.html" title="Sized data type access helpers.">csSetToAddress</a>
<a name="l00281"></a>00281 {
<a name="l00283"></a>00283 
<a name="l00284"></a><a class="code" href="structcsSetToAddress.html#62a9b7cdafbc13e66030e7e3acc89228">00284</a>   <span class="keyword">static</span> CS_FORCEINLINE <span class="keywordtype">void</span> <a class="code" href="structcsSetToAddress.html#62a9b7cdafbc13e66030e7e3acc89228" title="Set specifically sized type at unaligned memory address.">UInt16</a> (<span class="keywordtype">void</span> *buff, <a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> s)
<a name="l00285"></a>00285   {
<a name="l00286"></a>00286 <span class="preprocessor">  #ifdef CS_STRICT_ALIGNMENT</span>
<a name="l00287"></a>00287 <span class="preprocessor"></span>    memcpy (buff, &amp;s, <span class="keyword">sizeof</span> (s));
<a name="l00288"></a>00288 <span class="preprocessor">  #else</span>
<a name="l00289"></a>00289 <span class="preprocessor"></span>    *((<a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a> *)buff) = s;
<a name="l00290"></a>00290 <span class="preprocessor">  #endif</span>
<a name="l00291"></a>00291 <span class="preprocessor"></span>  }
<a name="l00292"></a><a class="code" href="structcsSetToAddress.html#a54a63d685a030db0bdadc0f22b4eb79">00292</a>   <span class="keyword">static</span> CS_FORCEINLINE <span class="keywordtype">void</span> <a class="code" href="structcsSetToAddress.html#a54a63d685a030db0bdadc0f22b4eb79">Int16</a>  (<span class="keywordtype">void</span> *buff, <a class="code" href="group__util.html#g4355d16fcf9f644c9ac84293f0b1801f" title="signed 16-bit integer (-32 768..32 767)">int16</a> s)
<a name="l00293"></a>00293   { <a class="code" href="structcsSetToAddress.html#62a9b7cdafbc13e66030e7e3acc89228" title="Set specifically sized type at unaligned memory address.">UInt16</a> (buff, (<a class="code" href="group__util.html#g05f6b0ae8f6a6e135b0e290c25fe0e4e" title="unsigned 16-bit integer (0..65 535)">uint16</a>)s); }
<a name="l00294"></a><a class="code" href="structcsSetToAddress.html#8929e8dda17acbe00bc5abd911a50826">00294</a>   <span class="keyword">static</span> CS_FORCEINLINE <span class="keywordtype">void</span> <a class="code" href="structcsSetToAddress.html#8929e8dda17acbe00bc5abd911a50826">UInt32</a> (<span class="keywordtype">void</span> *buff, <a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> s)
<a name="l00295"></a>00295   {
<a name="l00296"></a>00296 <span class="preprocessor">  #ifdef CS_STRICT_ALIGNMENT</span>
<a name="l00297"></a>00297 <span class="preprocessor"></span>    memcpy (buff, &amp;s, <span class="keyword">sizeof</span> (s));
<a name="l00298"></a>00298 <span class="preprocessor">  #else</span>
<a name="l00299"></a>00299 <span class="preprocessor"></span>    *((<a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a> *)buff) = s;
<a name="l00300"></a>00300 <span class="preprocessor">  #endif</span>
<a name="l00301"></a>00301 <span class="preprocessor"></span>  }
<a name="l00302"></a><a class="code" href="structcsSetToAddress.html#126da6c6242dbdd77fb94d9b475e8de9">00302</a>   <span class="keyword">static</span> CS_FORCEINLINE <span class="keywordtype">void</span> <a class="code" href="structcsSetToAddress.html#126da6c6242dbdd77fb94d9b475e8de9">Int32</a>  (<span class="keywordtype">void</span> *buff, <a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a> s)
<a name="l00303"></a>00303   { <a class="code" href="structcsSetToAddress.html#8929e8dda17acbe00bc5abd911a50826">UInt32</a> (buff, (<a class="code" href="group__util.html#g1134b580f8da4de94ca6b1de4d37975e" title="unsigned 32-bit integer (0..4 294 967 295)">uint32</a>)s); }
<a name="l00304"></a><a class="code" href="structcsSetToAddress.html#9f5bcd5cd15f98aa007f3b88902e180f">00304</a>   <span class="keyword">static</span> CS_FORCEINLINE <span class="keywordtype">void</span> <a class="code" href="structcsSetToAddress.html#9f5bcd5cd15f98aa007f3b88902e180f">UInt64</a> (<span class="keywordtype">void</span> *buff, <a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> s)
<a name="l00305"></a>00305   {
<a name="l00306"></a>00306 <span class="preprocessor">  #ifdef CS_STRICT_ALIGNMENT</span>
<a name="l00307"></a>00307 <span class="preprocessor"></span>    memcpy (buff, &amp;s, <span class="keyword">sizeof</span> (s));
<a name="l00308"></a>00308 <span class="preprocessor">  #else</span>
<a name="l00309"></a>00309 <span class="preprocessor"></span>    *((<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a> *)buff) = s;
<a name="l00310"></a>00310 <span class="preprocessor">  #endif</span>
<a name="l00311"></a>00311 <span class="preprocessor"></span>  }
<a name="l00312"></a><a class="code" href="structcsSetToAddress.html#40112b0d4fdbb89c494c62402478f763">00312</a>   <span class="keyword">static</span> CS_FORCEINLINE <span class="keywordtype">void</span> <a class="code" href="structcsSetToAddress.html#40112b0d4fdbb89c494c62402478f763">Int64</a>  (<span class="keywordtype">void</span> *buff, <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> s)
<a name="l00313"></a>00313   { <a class="code" href="structcsSetToAddress.html#9f5bcd5cd15f98aa007f3b88902e180f">UInt64</a> (buff, (<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a>)s); }
<a name="l00315"></a>00315 };
<a name="l00316"></a>00316 
<a name="l00317"></a>00317 
<a name="l00318"></a>00318 <span class="comment">/*</span>
<a name="l00319"></a>00319 <span class="comment">    To be able to painlessly transfer files betwen platforms, we should</span>
<a name="l00320"></a>00320 <span class="comment">    avoid using native floating-point format. Here are a couple of routines</span>
<a name="l00321"></a>00321 <span class="comment">    that are guaranteed to work on all platforms.</span>
<a name="l00322"></a>00322 <span class="comment"></span>
<a name="l00323"></a>00323 <span class="comment">    The floating point is converted to a fixed 1.7.25 bits format</span>
<a name="l00324"></a>00324 <span class="comment">    (one bit sign, 7 bits exponent, 25 bits mantissa) and back,</span>
<a name="l00325"></a>00325 <span class="comment">    so that we can binary store floating-point number without</span>
<a name="l00326"></a>00326 <span class="comment">    cross-platform problems. If you wonder why 1+7+25 = 33 while we</span>
<a name="l00327"></a>00327 <span class="comment">    only have 32 bits, we'll ommit the most significant bit of mantissa</span>
<a name="l00328"></a>00328 <span class="comment">    since it is always 1 (we use normalized numbers). This increases the</span>
<a name="l00329"></a>00329 <span class="comment">    precision twice.</span>
<a name="l00330"></a>00330 <span class="comment"></span>
<a name="l00331"></a>00331 <span class="comment">    For double, we use one bit sign, 15 bits exponent, 49 bits mantissa.</span>
<a name="l00332"></a>00332 <span class="comment">*/</span>
<a name="l00333"></a>00333 
<a name="l00338"></a><a class="code" href="group__util.html#g96baed464a5b3a7116ce97fcd2526966">00338</a> <span class="comment">/*CS_DEPRECATED_METHOD*/</span> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a> <a class="code" href="group__util.html#g96baed464a5b3a7116ce97fcd2526966" title="Convert a float to a cross-platform 32-bit format (no endianess adjustments!).">csFloatToLong</a> (<span class="keywordtype">float</span> f)
<a name="l00339"></a>00339 {
<a name="l00340"></a>00340   <span class="keywordtype">int</span> exp;
<a name="l00341"></a>00341   <a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a> mant = <a class="code" href="group__util.html#g20ad6ed7b2fc5754d8696f8d4eeebb90">csQroundSure</a> (frexp (f, &amp;exp) * 0x1000000);
<a name="l00342"></a>00342   <a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a> sign = mant &amp; 0x80000000;
<a name="l00343"></a>00343   <span class="keywordflow">if</span> (mant &lt; 0) mant = -mant;
<a name="l00344"></a>00344   <span class="keywordflow">if</span> (exp &gt; 63) exp = 63; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (exp &lt; -64) exp = -64;
<a name="l00345"></a>00345   <span class="keywordflow">return</span> sign | ((exp &amp; 0x7f) &lt;&lt; 24) | (mant &amp; 0xffffff);
<a name="l00346"></a>00346 }
<a name="l00347"></a>00347 
<a name="l00352"></a><a class="code" href="group__util.html#g4f3643cfc0df0821156b600627a13375">00352</a> <span class="comment">/*CS_DEPRECATED_METHOD*/</span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">float</span> <a class="code" href="group__util.html#g4f3643cfc0df0821156b600627a13375" title="Convert a 32-bit cross-platform float to native format (no endianess adjustments!)...">csLongToFloat</a> (<a class="code" href="group__util.html#g56f1a81c92849566ae864511088eb7e8" title="signed 32-bit integer (-2 147 483 648..2 147 483 647)">int32</a> l)
<a name="l00353"></a>00353 {
<a name="l00354"></a>00354   <span class="keywordtype">int</span> exp = (l &gt;&gt; 24) &amp; 0x7f;
<a name="l00355"></a>00355   <span class="keywordflow">if</span> (exp &amp; 0x40) exp = exp | ~0x7f;
<a name="l00356"></a>00356   <span class="keywordtype">float</span> mant = float (l &amp; 0x00ffffff) / 0x1000000;
<a name="l00357"></a>00357   <span class="keywordflow">if</span> (l &amp; 0x80000000) mant = -mant;
<a name="l00358"></a>00358   <span class="keywordflow">return</span> (<span class="keywordtype">float</span>) ldexp (mant, exp);
<a name="l00359"></a>00359 }
<a name="l00360"></a>00360 
<a name="l00361"></a>00361 <span class="comment">/* Implementation note: csDoubleToLongLong() and csLongLongToDouble()</span>
<a name="l00362"></a>00362 <span class="comment"> *</span>
<a name="l00363"></a>00363 <span class="comment"> * We avoid use of CONST_INT64() because 64-bit constants are illegal with g++</span>
<a name="l00364"></a>00364 <span class="comment"> * under -ansi -pedantic, and we want this header to be useful to external</span>
<a name="l00365"></a>00365 <span class="comment"> * projects which use -ansi -pedantic.  Instead, we use bit shifts, such as (1</span>
<a name="l00366"></a>00366 <span class="comment"> * &lt;&lt; 59), and construct `mask' manually.</span>
<a name="l00367"></a>00367 <span class="comment"> */</span>
<a name="l00368"></a>00368 
<a name="l00373"></a><a class="code" href="group__util.html#gc75c4514d8024792608a175e77e66470">00373</a> <span class="comment">/*CS_DEPRECATED_METHOD*/</span> <span class="keyword">static</span> <span class="keyword">inline</span> <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> <a class="code" href="group__util.html#gc75c4514d8024792608a175e77e66470" title="Convert a double to a cross-platform 64-bit format (no endianess adjustments!).">csDoubleToLongLong</a> (<span class="keywordtype">double</span> d)
<a name="l00374"></a>00374 {
<a name="l00375"></a>00375   <span class="keywordtype">int</span> exp;
<a name="l00376"></a>00376   <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> mant = (<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>) (frexp (d, &amp;exp) * ((<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>)1 &lt;&lt; 48));
<a name="l00377"></a>00377   <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> sign = mant &amp; ((<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>)1 &lt;&lt; 59);
<a name="l00378"></a>00378   <span class="keywordflow">if</span> (mant &lt; 0) mant = -mant;
<a name="l00379"></a>00379   <span class="keywordflow">if</span> (exp &gt; 32767) exp = 32767; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (exp &lt; -32768) exp = -32768;
<a name="l00380"></a>00380   <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> <span class="keyword">const</span> mask = ((<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a>)0xffff &lt;&lt; 32) | (<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a>)0xffffffff;
<a name="l00381"></a>00381   <span class="keywordflow">return</span> sign | ((<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> (exp) &amp; 0x7fff) &lt;&lt; 48) | (mant &amp; mask);
<a name="l00382"></a>00382 }
<a name="l00383"></a>00383 
<a name="l00388"></a><a class="code" href="group__util.html#g58ef9816cc9b61576b38954372f3e02a">00388</a> <span class="comment">/*CS_DEPRECATED_METHOD*/</span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">double</span> <a class="code" href="group__util.html#g58ef9816cc9b61576b38954372f3e02a" title="Convert a 64-bit cross-platform double to native format (no endianess adjustments!)...">csLongLongToDouble</a> (<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> i)
<a name="l00389"></a>00389 {
<a name="l00390"></a>00390   <span class="keywordtype">int</span> exp = (i &gt;&gt; 48) &amp; 0x7fff;
<a name="l00391"></a>00391   <span class="keywordflow">if</span> (exp &amp; 0x4000) exp = exp | ~0x7fff;
<a name="l00392"></a>00392   <a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a> <span class="keyword">const</span> mask = ((<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a>)0xffff &lt;&lt; 32) | (<a class="code" href="group__util.html#g058a7c8f752204f23318dc1dcab45b1c" title="unsigned 64-bit integer">uint64</a>)0xffffffff;
<a name="l00393"></a>00393   <span class="keywordtype">double</span> mant = double (i &amp; mask) / ((<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>)1 &lt;&lt; 48);
<a name="l00394"></a>00394   <span class="keywordflow">if</span> (i &amp; ((<a class="code" href="group__util.html#gecfc3c54bd29ad5964e1c1c3ccbf89df" title="signed 64-bit integer">int64</a>)1 &lt;&lt; 59)) mant = -mant;
<a name="l00395"></a>00395   <span class="keywordflow">return</span> ldexp (mant, exp);
<a name="l00396"></a>00396 }
<a name="l00397"></a>00397 
<a name="l00398"></a>00398 <span class="comment">/* *\name Floating point conversions</span>
<a name="l00399"></a>00399 <span class="comment"> * These routines are used for converting floating-point numbers</span>
<a name="l00400"></a>00400 <span class="comment"> * into 16-bit shorts and back. This is useful for low-precision data.</span>
<a name="l00401"></a>00401 <span class="comment"> * They use the 1.4.12 format. The range of numbers that can be represented</span>
<a name="l00402"></a>00402 <span class="comment"> * in this format is from 2^-8 to 2^7. The precision for numbers near to</span>
<a name="l00403"></a>00403 <span class="comment"> * 2^-8 (0.00390625) is near 0.000001, for numbers near 2^7 (128) is near 0.03.</span>
<a name="l00404"></a>00404 <span class="comment"> * @{ */</span>
<a name="l00405"></a>00405 
<a name="l00410"></a><a class="code" href="group__util.html#g3a5f5b5a5c1588012069c8f7c4bef51e">00410</a> <span class="comment">/*CS_DEPRECATED_METHOD*/</span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">short</span> <a class="code" href="group__util.html#g3a5f5b5a5c1588012069c8f7c4bef51e" title="Convert a float to a cross-platform 16-bit format (no endianess adjustments!).">csFloatToShort</a> (<span class="keywordtype">float</span> f)
<a name="l00411"></a>00411 {
<a name="l00412"></a>00412   <span class="keywordtype">int</span> exp;
<a name="l00413"></a>00413   <span class="keywordtype">long</span> mant = <a class="code" href="group__util.html#g20ad6ed7b2fc5754d8696f8d4eeebb90">csQroundSure</a> (frexp (f, &amp;exp) * 0x1000);
<a name="l00414"></a>00414   <span class="keywordtype">long</span> sign = mant &amp; 0x8000;
<a name="l00415"></a>00415   <span class="keywordflow">if</span> (mant &lt; 0) mant = -mant;
<a name="l00416"></a>00416   <span class="keywordflow">if</span> (exp &gt; 7) mant = 0x7ff, exp = 7; <span class="keywordflow">else</span> <span class="keywordflow">if</span> (exp &lt; -8) mant = 0, exp = -8;
<a name="l00417"></a>00417   <span class="keywordflow">return</span> short(sign | ((exp &amp; 0xf) &lt;&lt; 11) | (mant &amp; 0x7ff));
<a name="l00418"></a>00418 }
<a name="l00419"></a>00419 
<a name="l00424"></a><a class="code" href="group__util.html#gb87f1a6ea54f6388e88a83ece13b7902">00424</a> <span class="comment">/*CS_DEPRECATED_METHOD*/</span> <span class="keyword">static</span> <span class="keyword">inline</span> <span class="keywordtype">float</span> <a class="code" href="group__util.html#gb87f1a6ea54f6388e88a83ece13b7902" title="Convert a 16-bit cross-platform float to native format (no endianess adjustments!)...">csShortToFloat</a> (<span class="keywordtype">short</span> s)
<a name="l00425"></a>00425 {
<a name="l00426"></a>00426   <span class="keywordtype">int</span> exp = (s &gt;&gt; 11) &amp; 0xf;
<a name="l00427"></a>00427   <span class="keywordflow">if</span> (exp &amp; 0x8) exp = exp | ~0xf;
<a name="l00428"></a>00428   <span class="keywordtype">float</span> mant = float ((s &amp; 0x07ff) | 0x0800) / 0x1000;
<a name="l00429"></a>00429   <span class="keywordflow">if</span> (s &amp; 0x8000) mant = -mant;
<a name="l00430"></a>00430   <span class="keywordflow">return</span> (<span class="keywordtype">float</span>) ldexp (mant, exp);
<a name="l00431"></a>00431 }
<a name="l00432"></a>00432 
<a name="l00440"></a>00440 <span class="preprocessor">#endif // __CS_CSENDIAN_H__</span>
</pre></div><hr size="1"><address><small>Generated for Crystal Space 1.2.1 by 
<a href="http://www.doxygen.org/index.html">doxygen</a> 1.5.3 
</small></address> </div></body> </html>