OpendTect  6.6
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  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "ptrman.h"
15 
16 #ifdef __msvc__
17 # define __varlenwithptr__
18 #endif
19 
20 #ifdef __mac__
21 # define __varlenwithptr__
22 #endif
23 
24 #ifdef __lux__
25 # ifdef __debug__
26 # define __varlenwithptr__
27 # endif
28 #endif
29 
30 #define mAllocLargeVarLenArr( type, varnm, __size ) \
31 ArrPtrMan<type> varnm; \
32 { \
33  const std::size_t __allocsize = __size; \
34  if ( __allocsize ) \
35  { \
36  mTryAllocPtrMan( varnm, type [__allocsize] ); \
37  } \
38  varnm.setSize( __allocsize ); \
39 }
40 
41 
42 
43 #ifdef __varlenwithptr__
44 
45 # define mAllocVarLenArr( type, varnm, __size ) \
46  mAllocLargeVarLenArr( type, varnm, __size )
47 
48 # define mVarLenArr(varnm) varnm.ptr()
49 # define mIsVarLenArrOK(varnm) ((bool)varnm.ptr())
50 
51 #else
52 
53 # define mAllocVarLenArr( type, varnm, __size ) \
54  type varnm[__size];
55 # define mVarLenArr(varnm) varnm
56 # define mIsVarLenArrOK(varnm) (true)
57 
58 #endif
59 
60 
61 #define mAllocVarLenIdxArr(tp,var,sz) \
62  mAllocVarLenArr(tp,var,sz) \
63  if ( mIsVarLenArrOK(var) ) \
64  for ( tp idx=sz-1; idx>=0; idx-- ) \
65  var[idx] = idx;
66 
67 
68 #undef __varlenwithptr__
69 
ptrman.h

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