OpendTect  6.3
varlenarray.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: Nanne Hemstra
8  Date: September 2007
9 ________________________________________________________________________
10 
11 -*/
12 
13 #include "ptrman.h"
14 
15 #ifdef __msvc__
16 # define __varlenwithptr__
17 #endif
18 
19 #ifdef __mac__
20 # define __varlenwithptr__
21 #endif
22 
23 #ifdef __lux__
24 # ifdef __debug__
25 # define __varlenwithptr__
26 # endif
27 #endif
28 
29 #define mAllocLargeVarLenArr( type, varnm, __size ) \
30 ArrPtrMan<type> varnm; \
31 { \
32  const std::size_t __allocsize = __size; \
33  if ( __allocsize ) \
34  { \
35  mTryAllocPtrMan( varnm, type [__allocsize] ); \
36  } \
37  varnm.setSize( __allocsize ); \
38 }
39 
40 
41 
42 #ifdef __varlenwithptr__
43 
44 # define mAllocVarLenArr( type, varnm, __size ) \
45  mAllocLargeVarLenArr( type, varnm, __size )
46 
47 # define mVarLenArr(varnm) varnm.ptr()
48 # define mIsVarLenArrOK(varnm) ((bool)varnm.ptr())
49 
50 #else
51 
52 # define mAllocVarLenArr( type, varnm, __size ) \
53  type varnm[__size];
54 # define mVarLenArr(varnm) varnm
55 # define mIsVarLenArrOK(varnm) (true)
56 
57 #endif
58 
59 
60 #define mAllocVarLenIdxArr(tp,var,sz) \
61  mAllocVarLenArr(tp,var,sz) \
62  if ( mIsVarLenArrOK(var) ) \
63  for ( tp idx=sz-1; idx>=0; idx-- ) \
64  var[idx] = idx;
65 
66 
67 #undef __varlenwithptr__

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B. V. 2017