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

class PureDWORD
{
public:
	PureDWORD(void);
	PureDWORD(DWORD someDWORD);
	PureDWORD(const PureDWORD &somePureDWORD);
	virtual ~PureDWORD();
	PureDWORD &operator=(const PureDWORD &somePureDWORD);
  PureDWORD &operator=(DWORD someDWORD);
	WORD operator==(const PureDWORD &somePureDWORD)const;
	WORD operator<(const PureDWORD &somePureDWORD)const;
	WORD operator<=(const PureDWORD &somePureDWORD)const;
	WORD operator>(const PureDWORD &somePureDWORD)const;
	WORD operator>=(const PureDWORD &somePureDWORD)const;
	PureDWORD &operator+=(const PureDWORD &somePureDWORD);
  PureDWORD &operator-=(const PureDWORD &somePureDWORD);
	PureDWORD &operator++(void);
	PureDWORD &operator--(void);
	PureDWORD operator++(int postFixDummy);
	PureDWORD operator--(int postFixDummy);
	DWORD getValue(void)const;
	void setValue(DWORD value);
private:
	DWORD mDWORD;
};

inline
PureDWORD::PureDWORD(void)
: mDWORD(0L)
{
}

inline
PureDWORD::PureDWORD(DWORD someDWORD)
: mDWORD(someDWORD)
{
}

inline
PureDWORD::PureDWORD(const PureDWORD &somePureDWORD)
{
  *this=somePureDWORD;
}

inline
PureDWORD::~PureDWORD()
{
}

inline
PureDWORD &PureDWORD::operator=(const PureDWORD &somePureDWORD)
{
	mDWORD=somePureDWORD.mDWORD;
	return *this;
}

inline
PureDWORD &PureDWORD::operator=(DWORD someDWORD)
{
	mDWORD=someDWORD;
	return *this;
}

inline
WORD PureDWORD::operator==(const PureDWORD &somePureDWORD)const
{
	return mDWORD==somePureDWORD.mDWORD;
}

inline
WORD PureDWORD::operator<(const PureDWORD &somePureDWORD)const
{
	return mDWORD<somePureDWORD.mDWORD;
}

inline
WORD PureDWORD::operator<=(const PureDWORD &somePureDWORD)const
{
	return mDWORD<=somePureDWORD.mDWORD;
}

inline
WORD PureDWORD::operator>(const PureDWORD &somePureDWORD)const
{
	return mDWORD>somePureDWORD.mDWORD;
}

inline
WORD PureDWORD::operator>=(const PureDWORD &somePureDWORD)const
{
	return mDWORD>=somePureDWORD.mDWORD;
}

inline
PureDWORD &PureDWORD::operator++(void)
{
	mDWORD++;
	return *this;
}

inline
PureDWORD &PureDWORD::operator--(void)
{
	mDWORD--;
	return *this;
}

inline
PureDWORD &PureDWORD::operator+=(const PureDWORD &somePureDWORD)
{
	mDWORD+=somePureDWORD.mDWORD;
  return *this;
}

inline
PureDWORD &PureDWORD::operator-=(const PureDWORD &somePureDWORD)
{
	mDWORD-=somePureDWORD.mDWORD;
	return *this;
}

inline
DWORD PureDWORD::getValue(void)const
{
  return mDWORD;
}

inline
void PureDWORD::setValue(DWORD value)
{
  mDWORD=value;
}
#endif
