 |
OpendTect
6.6
|
Go to the documentation of this file.
17 #include "odversion.h"
26 template <
class RT,
class T>
30 inline RT roundOff(
double x ) {
return RT((x)>0 ? (x)+.5 : (x)-.5); }
33 inline RT roundOff(
float x ) {
return RT((x)>0 ? (x)+.5f : (x)-.5f); }
35 template <
class fT,
class eT>
36 inline bool isFPZero( fT v, eT eps ) {
return v < eps && v > -eps; }
38 template <
class T1,
class T2,
class eT>
43 {
return v<min ? min : (v>max ? max : v); }
50 {
return const_cast<T*
>( t ); }
54 {
return const_cast<T&
>( t ); }
57 #define mRounded(typ,x) roundOff<typ>( x )
58 #define mNINT32(x) mRounded( od_int32, x )
59 #define mNINT64(x) mRounded( od_int64, x )
61 #define mMAX(x,y) ( (x)>(y) ? (x) : (y) )
62 #define mMIN(x,y) ( (x)<(y) ? (x) : (y) )
63 #define mMaxLimited(v,lim) ( (v)<(lim) ? (v) : (lim) )
64 #define mMinLimited(v,lim) ( (v)>(lim) ? (v) : (lim) )
66 #define mIsZero(x,eps) isFPZero( x, eps )
67 #define mIsEqual(x,y,eps) isFPEqual( x, y, eps )
68 #define mIsEqualWithUdf(x,y,e) ((mIsUdf(x) && mIsUdf(y)) || mIsEqual(x,y,e) )
69 #define mDefEpsF (1e-10f)
70 #define mDefEpsD (1e-10)
71 #define mDefEps mDefEpsD
77 # define M_PI 3.14159265358979323846
80 # define M_PIl 3.1415926535897932384626433832795029L
83 # define M_2PI 6.28318530717958647692
86 # define M_PI_2 1.57079632679489661923
89 # define M_PI_4 0.78539816339744830962
92 # define M_SQRT2 1.41421356237309504880168872421
95 # define M_SQRT1_2 0.70710678118654752440
98 # define M_PIf 3.14159265358979323846f
101 # define M_2PIf 6.28318530717958647692f
104 # define M_PI_2f 1.57079632679489661923f
107 # define M_PI_4f 0.78539816339744830962f
110 # define M_SQRT2f 1.41421356237309504880168872421f
113 # define M_SQRT1_2f 0.70710678118654752440f
117 # define MAXFLOAT 3.4028234663852886e+38F
120 # define MAXDOUBLE 1.7976931348623157e+308
123 #define mFromFeetFactorF 0.3048f
124 #define mFromFeetFactorD 0.3048
125 #define mToFeetFactorF 3.2808399f
126 #define mToFeetFactorD 3.28083989501312336
127 #define mToPercent(f) (mIsUdf(f) ? f : f*100)
128 #define mFromPercent(f) (mIsUdf(f) ? f : f*0.01)
129 #define mDeg2RadD 0.017453292519943292
130 #define mRad2DegD 57.295779513082323
131 #define mDeg2RadF 0.017453292519943292f
132 #define mRad2DegF 57.295779513082323f
137 #define mCast(tp,v) ((tp)(v))
138 #define cCast(tp,v) const_cast< tp >( v )
139 #define dCast(tp,v) dynamic_cast< tp >( v )
140 #define rCast(tp,v) reinterpret_cast< tp >( v )
141 #define sCast(tp,v) static_cast< tp >( v )
143 #define mNonConst(x) getNonConst( x )
144 #define mSelf() mNonConst( *this )
146 #define mUseType(scope,typ) typedef scope::typ typ
147 # define mDynamicCast(typ,out,in) out = dynamic_cast< typ >( in );
148 # define mDynamicCastGet(typ,out,in) typ mDynamicCast(typ,out,in)
150 #define mDefSetupClssMemb(clss,typ,memb) \
152 clss& memb( typ val ) { memb##_ = val; return *this; }
154 #define mDefSetupMemb(typ,memb) mDefSetupClssMemb(Setup,typ,memb)
164 # define __func__ __FUNCTION__
173 # define mMaxFilePathLength 255
176 #define mExp( module ) Export_##module
177 #define mExpClass( module ) class mExp( module )
178 #define mExpStruct( module ) struct mExp( module )
180 #define mGlobal( module ) mExp( module )
181 #define mClass( module ) class
182 #define mStruct( module ) mExpStruct( module )
183 #define mExtern( module ) extern mExp( module )
184 #define mExternC( module) extern "C" mExp( module )
186 #define mExportInst( mod, tp ) Extern_##mod tp mExp(mod)
187 #define mExportTemplClassInst(mod) mExportInst(mod,template class)
200 #define mLockStaticInitLock( nm )
201 #define mUnlockStaticInitLock( nm )
203 #define mDefineStaticLocalObject( type, var, init ) \
204 static type var init;
221 #define mIfNotFirstTime(act) \
223 static volatile int _already_visited_ = 0; \
224 if ( !Threads::atomicSetIfValueIs( _already_visited_, \
233 # define mFDQtclass(cls) class cls;
234 # define mQtclass(cls) ::cls
235 # define mUseQtnamespace
237 # define mFDQtclass(cls) namespace QT_NAMESPACE { class cls; }
238 # define mQtclass(cls) ::QT_NAMESPACE::cls
239 # define mUseQtnamespace using namespace ::QT_NAMESPACE;
246 #define mTryAlloc(var,stmt) \
247 { try { var = new stmt; } catch ( std::bad_alloc ) { var = nullptr; } }
249 #define mTryAllocPtrMan(var,stmt) \
250 { try { var = new stmt; } catch ( std::bad_alloc ) { var.set( nullptr ); } }
253 #define mDeclareAndTryAlloc(tp,var,stmt) \
258 #define mGetIdxArr(tp,var,sz) \
260 mTryAlloc(var,tp [sz]) \
262 for ( tp idx=0; idx<sz; idx++ ) \
285 #define mDoArrayPtrOperation( type, arr, operation, arrsz, ptrinc ) \
287 type* __curptr = arr; \
288 for ( const type* __stopptr = __curptr + arrsz; \
289 __curptr!=__stopptr; \
292 *__curptr operation; \
297 #if defined __win32__
298 #define mMaxContiguousMemSize 0x20000000 // 512 MB (OS limit)
299 #elif defined __win64__
300 #define mMaxContiguousMemSize 0x800000000 // 32 GB (OS limit)
301 #elif defined __mac__
302 #define mMaxContiguousMemSize 0x800000000 // 32 GB (arbitrary)
304 #define mMaxContiguousMemSize 0x4000000000 // 256 GB (arbitrary)
310 # define od_sprintf sprintf_s
311 # define od_sscanf sscanf_s
313 # define od_sprintf snprintf
314 # define od_sscanf sscanf
void Swap(T &a, T &b)
Definition: commondefs.h:46
void unlockSimpleSpinLock(volatile int &lock)
#define mGlobal(module)
Definition: commondefs.h:180
bool isFPEqual(T1 v1, T2 v2, eT eps)
Definition: commondefs.h:39
RT roundOff(T x)
Definition: commondefs.h:27
T getLimited(T v, T min, T max)
Definition: commondefs.h:42
bool atomicSetIfValueIs(volatile int &val, int curval, int newval, int *actualvalptr)
void swap(BufferStringSet &o1, BufferStringSet &o2)
Definition: bufstringset.h:154
interface to threads that should be portable.
Definition: atomic.h:23
bool isFPZero(fT v, eT eps)
Definition: commondefs.h:36
T * getNonConst(const T *t)
Definition: commondefs.h:49
bool lockSimpleSpinWaitLock(volatile int &lock)
Generated at
for the OpendTect
seismic interpretation project.
Copyright (C): dGB Beheer B.V. 1995-2021