#ifndef _XiaoGeMVarTempleteHasBeenDefined_ #define _XiaoGeMVarTempleteHasBeenDefined_ #include <Afxmt.h> template <class MVAR_TYPE> class MVAR { public: MVAR() { m_pBegin=new char[sizeof(MVAR_TYPE)]; memset(m_pBegin,0,sizeof(MVAR_TYPE)); } ~MVAR(){delete[] m_pBegin;} int GetLength(){return sizeof(MVAR_TYPE);} MVAR_TYPE Set(MVAR_TYPE& value) { m_csLockHandle.Lock(); memcpy(m_pBegin,(char*)&value,sizeof(MVAR_TYPE)); m_csLockHandle.Unlock(); return value; } MVAR_TYPE Get() { MVAR_TYPE myValue; m_csLockHandle.Lock(); memcpy((char*)&myValue,m_pBegin,sizeof(MVAR_TYPE)); m_csLockHandle.Unlock(); return myValue; } MVAR_TYPE operator=(MVAR_TYPE value) { MVAR_TYPE myValue; m_csLockHandle.Lock(); myValue=value; memcpy(m_pBegin,(char*)&myValue,sizeof(MVAR_TYPE)); m_csLockHandle.Unlock(); return myValue; } MVAR_TYPE operator~() { MVAR_TYPE myValue; m_csLockHandle.Lock(); memcpy((char*)&myValue,m_pBegin,sizeof(MVAR_TYPE)); myValue=~myValue; m_csLockHandle.Unlock(); return myValue; } MVAR_TYPE operator++(int) { MVAR_TYPE myValue; m_csLockHandle.Lock(); memcpy((char*)&myValue,m_pBegin,sizeof(MVAR_TYPE)); myValue++; memcpy(m_pBegin,(char*)&myValue,sizeof(MVAR_TYPE)); m_csLockHandle.Unlock(); return myValue; } MVAR_TYPE operator++() { MVAR_TYPE myValue; m_csLockHandle.Lock(); memcpy((char*)&myValue,m_pBegin,sizeof(MVAR_TYPE)); myValue++; memcpy(m_pBegin,(char*)&myValue,sizeof(MVAR_TYPE)); m_csLockHandle.Unlock(); return myValue; } MVAR_TYPE operator--(int) { MVAR_TYPE myValue; m_csLockHandle.Lock(); memcpy((char*)&myValue,m_pBegin,sizeof(MVAR_TYPE)); myValue--; memcpy(m_pBegin,(char*)&myValue,sizeof(MVAR_TYPE)); m_csLockHandle.Unlock(); return myValue; } MVAR_TYPE operator--() { MVAR_TYPE myValue; m_csLockHandle.Lock(); memcpy((char*)&myValue,m_pBegin,sizeof(MVAR_TYPE)); myValue--; memcpy(m_pBegin,(char*)&myValue,sizeof(MVAR_TYPE)); m_csLockHandle.Unlock(); return myValue; } MVAR_TYPE operator+(MVAR_TYPE value) { MVAR_TYPE myValue; m_csLockHandle.Lock(); memcpy((char*)&myValue,m_pBegin,sizeof(MVAR_TYPE)); myValue+=value; m_csLockHandle.Unlock(); return myValue; } MVAR_TYPE operator-(MVAR_TYPE value) { MVAR_TYPE myValue; m_csLockHandle.Lock(); memcpy((char*)&myValue,m_pBegin,sizeof(MVAR_TYPE)); myValue-=value; m_csLockHandle.Unlock(); return myValue; } MVAR_TYPE operator*(MVAR_TYPE value)
|