--- a +++ b/vposition.h @@ -0,0 +1,100 @@ +/* + Copyright (C) 2011 Arnaud Champenois arthelion92@gmail.com + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ +#ifndef VPOSITION_H +#define VPOSITION_H + +#include <stdint.h> + +struct VPosition +{ + VPosition() + { + mMsPos = mFilePos = -1; + } + + VPosition(int64_t aMsPos, int64_t aFilePos) + { + mMsPos = aMsPos; + mFilePos = aFilePos; + } + + int64_t mMsPos; // Position time + int64_t mFilePos; // Position in file + +}; + +inline bool operator<(const VPosition&a,const VPosition&b) +{ + if(a.mMsPos<b.mMsPos) return true; + else return false; +} + +inline bool operator>(const VPosition&a,const VPosition&b) +{ + if(a.mMsPos>b.mMsPos) return true; + else return false; +} + +inline bool operator<=(const VPosition&a,const VPosition&b) +{ + if(a.mMsPos<b.mMsPos) return true; + else return false; +} + +inline bool operator>=(const VPosition&a,const VPosition&b) +{ + if(a.mMsPos>b.mMsPos) return true; + else return false; +} + +inline bool operator==(const VPosition&a,const VPosition&b) +{ + if(a.mMsPos==b.mMsPos) return true; + else return false; +} + +inline VPosition operator*(const VPosition&a,int aValue) +{ return VPosition(a.mMsPos*aValue,a.mFilePos*aValue); } + +inline VPosition operator+(const VPosition&a,const VPosition&b) +{ + return VPosition(a.mMsPos+b.mMsPos,a.mFilePos+b.mFilePos); +} + +inline VPosition &operator+=(VPosition&a,const VPosition&b) +{ + a.mMsPos += b.mMsPos; + a.mFilePos += b.mFilePos; + + return a; +} + +inline VPosition &operator-=(VPosition&a,const VPosition&b) +{ + a.mMsPos -= b.mMsPos; + a.mFilePos -= b.mFilePos; + + return a; +} + + +inline VPosition operator-(const VPosition&a,const VPosition&b) +{ + return VPosition(a.mMsPos-b.mMsPos,a.mFilePos-b.mFilePos); + } + +#endif // VPOSITION_H