Viewing file: pr50763-3.C (1.08 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
/* { dg-do compile } */ /* { dg-require-effective-target ilp32 } */ /* { dg-options "-O2 -ftree-tail-merge" } */
class v2d { public: double x; double y; };
class v3d { public: double x; v3d() {} v3d(const v2d & cr2Dv) {} };
class e2d { protected: v2d _Min; v2d _Max; public: int cop2d(const v2d & rPnt) const; v2d clp2d(const v2d & rPnt) const; };
inline int e2d::cop2d(const v2d & rPnt) const { int bRet = 1; if (rPnt.x < _Min.x) bRet = 0; else if (rPnt.x > _Max.x) bRet = 0; else if (rPnt.y > _Max.y) bRet = 0; return bRet; }
inline v2d e2d::clp2d(const v2d & rPnt) const { v2d sRet = rPnt; if (rPnt.x < _Min.x) sRet.x = _Min.x; if (rPnt.y < _Min.y) sRet.y = _Min.y; if (rPnt.x > _Max.x) sRet.x = _Max.x; if (rPnt.y > _Max.y) sRet.y = _Max.y; return sRet; }
class sExt { protected: e2d _Dom; long eval() const; long evalPoint(const v2d & crUV, v3d & rPnt) const; };
long sExt::evalPoint(const v2d & crUV, v3d & rPnt) const { v3d sUV = crUV; if (!_Dom.cop2d(crUV)) { sUV = _Dom.clp2d(crUV); } return eval(); }
|