Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>I wrote this to help me with audio manipulation. Its not the fastest but it works for me :)</p> <pre><code>const int INT24_MAX = 8388607; class Int24 { protected: unsigned char m_Internal[3]; public: Int24() { } Int24( const int val ) { *this = val; } Int24( const Int24&amp; val ) { *this = val; } operator int() const { if ( m_Internal[2] &amp; 0x80 ) // Is this a negative? Then we need to siingn extend. { return (0xff &lt;&lt; 24) | (m_Internal[2] &lt;&lt; 16) | (m_Internal[1] &lt;&lt; 8) | (m_Internal[0] &lt;&lt; 0); } else { return (m_Internal[2] &lt;&lt; 16) | (m_Internal[1] &lt;&lt; 8) | (m_Internal[0] &lt;&lt; 0); } } operator float() const { return (float)this-&gt;operator int(); } Int24&amp; operator =( const Int24&amp; input ) { m_Internal[0] = input.m_Internal[0]; m_Internal[1] = input.m_Internal[1]; m_Internal[2] = input.m_Internal[2]; return *this; } Int24&amp; operator =( const int input ) { m_Internal[0] = ((unsigned char*)&amp;input)[0]; m_Internal[1] = ((unsigned char*)&amp;input)[1]; m_Internal[2] = ((unsigned char*)&amp;input)[2]; return *this; } /***********************************************/ Int24 operator +( const Int24&amp; val ) const { return Int24( (int)*this + (int)val ); } Int24 operator -( const Int24&amp; val ) const { return Int24( (int)*this - (int)val ); } Int24 operator *( const Int24&amp; val ) const { return Int24( (int)*this * (int)val ); } Int24 operator /( const Int24&amp; val ) const { return Int24( (int)*this / (int)val ); } /***********************************************/ Int24 operator +( const int val ) const { return Int24( (int)*this + val ); } Int24 operator -( const int val ) const { return Int24( (int)*this - val ); } Int24 operator *( const int val ) const { return Int24( (int)*this * val ); } Int24 operator /( const int val ) const { return Int24( (int)*this / val ); } /***********************************************/ /***********************************************/ Int24&amp; operator +=( const Int24&amp; val ) { *this = *this + val; return *this; } Int24&amp; operator -=( const Int24&amp; val ) { *this = *this - val; return *this; } Int24&amp; operator *=( const Int24&amp; val ) { *this = *this * val; return *this; } Int24&amp; operator /=( const Int24&amp; val ) { *this = *this / val; return *this; } /***********************************************/ Int24&amp; operator +=( const int val ) { *this = *this + val; return *this; } Int24&amp; operator -=( const int val ) { *this = *this - val; return *this; } Int24&amp; operator *=( const int val ) { *this = *this * val; return *this; } Int24&amp; operator /=( const int val ) { *this = *this / val; return *this; } /***********************************************/ /***********************************************/ Int24 operator &gt;&gt;( const int val ) const { return Int24( (int)*this &gt;&gt; val ); } Int24 operator &lt;&lt;( const int val ) const { return Int24( (int)*this &lt;&lt; val ); } /***********************************************/ Int24&amp; operator &gt;&gt;=( const int val ) { *this = *this &gt;&gt; val; return *this; } Int24&amp; operator &lt;&lt;=( const int val ) { *this = *this &lt;&lt; val; return *this; } /***********************************************/ /***********************************************/ operator bool() const { return (int)*this != 0; } bool operator !() const { return !((int)*this); } Int24 operator -() { return Int24( -(int)*this ); } /***********************************************/ /***********************************************/ bool operator ==( const Int24&amp; val ) const { return (int)*this == (int)val; } bool operator !=( const Int24&amp; val ) const { return (int)*this != (int)val; } bool operator &gt;=( const Int24&amp; val ) const { return (int)*this &gt;= (int)val; } bool operator &lt;=( const Int24&amp; val ) const { return (int)*this &lt;= (int)val; } bool operator &gt;( const Int24&amp; val ) const { return (int)*this &gt; (int)val; } bool operator &lt;( const Int24&amp; val ) const { return (int)*this &lt; (int)val; } /***********************************************/ bool operator ==( const int val ) const { return (int)*this == val; } bool operator !=( const int val ) const { return (int)*this != val; } bool operator &gt;=( const int val ) const { return (int)*this &gt;= val; } bool operator &lt;=( const int val ) const { return (int)*this &lt;= val; } bool operator &gt;( const int val ) const { return ((int)*this) &gt; val; } bool operator &lt;( const int val ) const { return (int)*this &lt; val; } /***********************************************/ /***********************************************/ }; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload