#include #include "BodyPartT.h" using namespace std; std::string BodyPartTToString(BodyPartT b){ size_t i; i = static_cast(b); if (i <= static_cast(BodyPartT::NONE)) { return PART_NAMES[i]; } else { return PART_NAMES[static_cast(BodyPartT::NONE)]; } } BodyPartT NextBodyPartT(BodyPartT b){ size_t offset; offset = static_cast(b); if (offset > static_cast(BodyPartT::NONE)) { b = BodyPartT::NONE; } if (b != BodyPartT::NONE) { b = static_cast(static_cast(b) + static_cast(1)); } return b; } ostream & operator << (ostream & s, const BodyPartT & b) { s << BodyPartTToString(b); return s; } BodyPartT operator + (BodyPartT a, size_t b){ size_t offset{static_cast(a)}; BodyPartT returnValue{BodyPartT::NONE}; offset += b; if (offset <= static_cast(BodyPartT::NONE)) { returnValue = static_cast(offset); } return returnValue; } BodyPartT & operator +=(BodyPartT & a, size_t b) { a = a + b; return a; } // ++i BodyPartT & operator++(BodyPartT & b) { b = b + 1; return b; } // i++ BodyPartT operator++(BodyPartT & b, int) { BodyPartT tmp{b}; b = b + 1; return tmp; } BodyPartT operator -(BodyPartT b) { BodyPartT rv{BodyPartT::NONE}; size_t count{static_cast(BodyPartT::NONE)-1}; size_t offset{static_cast(b)}; if (count >= offset) { rv = static_cast(count-offset); } return rv; }