Club 15CC

C ~ 15CC Code

Task Code
C Doxygen Member Grouping vs Comment Sharing »
// MEMBER GROUPING
// Creates a headed section with the detailed description underneath the header
/** @name Channel-channel math ops.

      Channel-channel math ops with a bit more flexibility than the operator overloads; exception on bounds error if debug is set.

     \param ch          Source channel
     \return Reference to self for chaining
 */
//@{
...
//@}

// COMMENT SHARING
// No header but share the comment amongst all enclosed members.  Must set DISTRIBUTE_GROUP_DOC = YES in config

//@{
/** Brief description
      etc...
 */
...
//@}
C++ C++ Operator Overloading Boilerplate »
// Arithmetic
R T::operator +(S b);
R T::operator -(S b);
R T::operator +();
R T::operator -();
R T::operator *(S b);
R T::operator /(S b);
R T::operator %(S b);
R T::operator +=(S b);
R T::operator -=(S b);
R T::operator *=(S b);
R T::operator /=(S b);
R T::operator %=(S b);
// Note: C++ uses the unnamed dummy-parameter int to differentiate between prefix and suffix increment operators.
R T::operator ++();
R T::operator ++(int);
R T::operator --();
R T::operator --(int);

// Comparison
R T::operator ==(S b);
R T::operator !=(S b);
R T::operator >(S b);
R T::operator <(S b);
R T::operator >=(S b);
R T::operator <=(S b);

// Member Access and Functor-behavior
R T::operator [](S b);
T::operator R();
R T::operator *();
R T::operator ->();
R T::operator ->*(S a);
R T::operator ()(S a1, U a2, ...);
R T::operator ,(S b);

// Assignment, reference & copy
R T::operator &();
R T::operator =(S b);

// (De)Allocation
void* T::operator new(size_t x);
void* T::operator new[](size_t x);
void T::operator delete(void* x);
void T::operator delete[](void* x);

// Logic
R T::operator !();
R T::operator &&(S b);
R T::operator ||(S b);

// Bitwise
R T::operator ~();
R T::operator &(S b);
R T::operator |(S b);
R T::operator ^(S b);
R T::operator <<(S b);
R T::operator >>(S b);
R T::operator &=(S b);
R T::operator |=(S b);
R T::operator ^=(S b);
R T::operator <<=(S b);
R T::operator >>=(S b);
Algorithms C Function to wrap a value between values M…N »
const float MM_Wrap(float inVal, float min, float max)
{
    const float range = max - min;
    
    // Optimisations
    if (inVal >= min) {
        if (inVal <= max)   return inVal;                       // within range
        else if (inVal < max + range) return inVal - range;     // within one range above
    } else if (inVal >= min - range) return inVal + range;      // within one range below
    
    // General case
    return fmod(inVal - min, range) + min;
}