#ifndef _COMMON_PUREWORD_HPP_
#define _COMMON_PUREWORD_HPP_
#ifndef _COMMON_WINDOWS_HPP_
#include <common/windows.hpp>
#endif

class PureWORD
{
public:
	PureWORD(void);
	PureWORD(WORD someWORD);
	PureWORD(const PureWORD &somePureWORD);
	virtual ~PureWORD();
	PureWORD &operator=(const PureWORD &somePureWORD);
	WORD operator==(const PureWORD &somePureWORD)const;
	WORD operator<(const PureWORD &somePureWORD)const;
	WORD operator<=(const PureWORD &somePureWORD)const;
	WORD operator>(const PureWORD &somePureWORD)const;
	WORD operator>=(const PureWORD &somePureWORD)const;
	PureWORD &operator+=(const PureWORD &somePureWORD);
  PureWORD &operator-=(const PureWORD &somePureWORD);
	PureWORD &operator++(void);
	PureWORD &operator--(void);
	PureWORD operator++(int postFixDummy);
	PureWORD operator--(int postFixDummy);
	WORD getValue(void)const;
	void setValue(WORD value);
private:
	WORD mWORD;
};

inline
PureWORD::PureWORD(void)
: mWORD(0L)
{
}

inline
PureWORD::PureWORD(WORD someWORD)
: mWORD(someWORD)
{
}

inline
PureWORD::PureWORD(const PureWORD &somePureWORD)
{
	*this=somePureWORD;
}

inline
PureWORD::~PureWORD()
{
}

inline
PureWORD &PureWORD::operator=(const PureWORD &somePureWORD)
{
	mWORD=somePureWORD.mWORD;
	return *this;
}

inline
WORD PureWORD::operator==(const PureWORD &somePureWORD)const
{
	return mWORD==somePureWORD.mWORD;
}

inline
WORD PureWORD::operator<(const PureWORD &somePureWORD)const
{
	return mWORD<somePureWORD.mWORD;
}

inline
WORD PureWORD::operator<=(const PureWORD &somePureWORD)const
{
	return mWORD<=somePureWORD.mWORD;
}

inline
WORD PureWORD::operator>(const PureWORD &somePureWORD)const
{
	return mWORD>somePureWORD.mWORD;
}

inline
WORD PureWORD::operator>=(const PureWORD &somePureWORD)const
{
	return mWORD>=somePureWORD.mWORD;
}

inline
PureWORD &PureWORD::operator++(void)
{
	mWORD++;
	return *this;
}

inline
PureWORD &PureWORD::operator+=(const PureWORD &somePureWORD)
{
	mWORD+=somePureWORD.mWORD;
  return *this;
}

inline
PureWORD &PureWORD::operator-=(const PureWORD &somePureWORD)
{
	mWORD-=somePureWORD.mWORD;
  return *this;
}

inline
PureWORD &PureWORD::operator--(void)
{
	mWORD--;
	return *this;
}

inline
WORD PureWORD::getValue(void)const
{
  return mWORD;
}

inline
void PureWORD::setValue(WORD value)
{
  mWORD=value;
}
#endif
