diff options
| author | Seth ProductEngine <slitovchuk@productengine.com> | 2012-02-23 21:02:46 +0200 | 
|---|---|---|
| committer | Seth ProductEngine <slitovchuk@productengine.com> | 2012-02-23 21:02:46 +0200 | 
| commit | bc4d0b0b0f0cf8ee305598d66c78f4a5a723a955 (patch) | |
| tree | 3f014d9c597486ea4eea831e7e6ee4df255f6a01 /indra/llmath | |
| parent | d9b915f09b4f9db0aa16d88dd4a7d5fb4980dc34 (diff) | |
Linux build fix.
Moved type casts from protected base classes to derived LLCoord.
(transplanted from fa4c01adac7224b909ab1dbfc90416b633e6d6c2)
Diffstat (limited to 'indra/llmath')
| -rw-r--r-- | indra/llmath/llcoord.h | 19 | 
1 files changed, 13 insertions, 6 deletions
| diff --git a/indra/llmath/llcoord.h b/indra/llmath/llcoord.h index 1f617e649e..a66f3c7424 100644 --- a/indra/llmath/llcoord.h +++ b/indra/llmath/llcoord.h @@ -26,6 +26,15 @@  #ifndef LL_LLCOORD_H  #define LL_LLCOORD_H +template<typename> class LLCoord; +struct LL_COORD_TYPE_GL; +struct LL_COORD_TYPE_WINDOW; +struct LL_COORD_TYPE_SCREEN; + +typedef LLCoord<LL_COORD_TYPE_GL> LLCoordGL; +typedef LLCoord<LL_COORD_TYPE_WINDOW> LLCoordWindow; +typedef LLCoord<LL_COORD_TYPE_SCREEN> LLCoordScreen; +  struct LLCoordCommon  {  	LLCoordCommon(S32 x, S32 y) : mX(x), mY(y) {} @@ -62,6 +71,8 @@ public:  	bool operator==(const self_t& other) const { return mX == other.mX && mY == other.mY; }  	bool operator!=(const self_t& other) const { return !(*this == other); } +	static const self_t& getTypedCoords(const COORD_FRAME& self) { return static_cast<const self_t&>(self); } +	static self_t& getTypedCoords(COORD_FRAME& self) { return static_cast<self_t&>(self); }  };  struct LL_COORD_TYPE_GL  @@ -70,13 +81,13 @@ struct LL_COORD_TYPE_GL  	LLCoordCommon convertToCommon() const  	{ -		const LLCoord<LL_COORD_TYPE_GL>& self = static_cast<const LLCoord<LL_COORD_TYPE_GL>&>(*this); +		const LLCoordGL& self = LLCoordGL::getTypedCoords(*this);  		return LLCoordCommon(self.mX, self.mY);  	}  	void convertFromCommon(const LLCoordCommon& from)  	{ -		LLCoord<LL_COORD_TYPE_GL>& self = static_cast<LLCoord<LL_COORD_TYPE_GL>&>(*this); +		LLCoordGL& self = LLCoordGL::getTypedCoords(*this);  		self.mX = from.mX;  		self.mY = from.mY;  	} @@ -98,8 +109,4 @@ struct LL_COORD_TYPE_SCREEN  	void convertFromCommon(const LLCoordCommon& from);  }; -typedef LLCoord<LL_COORD_TYPE_GL> LLCoordGL; -typedef LLCoord<LL_COORD_TYPE_WINDOW> LLCoordWindow; -typedef LLCoord<LL_COORD_TYPE_SCREEN> LLCoordScreen; -  #endif | 
