summaryrefslogtreecommitdiff
path: root/thirdparty/linux/include/coin/BonArraysHelpers.hpp
blob: a397fb8ad7b6292466311a0c641bddf770841044 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
// (C) Copyright International Business Machines Corporation 2007
// All Rights Reserved.
// This code is published under the Eclipse Public License.
//
// Authors :
// Pierre Bonami, International Business Machines Corporation
//
// Date : 10/06/2007

#include "CoinHelperFunctions.hpp"
#ifndef BonArraysHelpers_H
#define BonArraysHelpers_H

namespace Bonmin {
template <class X> void
resizeAndCopyArray(X *& array, unsigned int oldSize, unsigned int newSize){
 if(newSize == 0){
   if(oldSize > 0){
     delete [] array;
     array = NULL;
   }
   return;
 }
 X * buffy = new X[newSize];
 if(oldSize > 0){
   if(oldSize < newSize)
     CoinCopyN(array, oldSize, buffy);
   else
     CoinCopyN(array, newSize, buffy);
   delete [] array;
 }
 array = buffy;
}

template <class X> void
resizeAndCopyArray(X *& array, unsigned int oldSize, unsigned int newSize,
                   unsigned int& capacity){
 if(newSize > capacity){
   X * buffy = new X[newSize];
   if(oldSize > 0){
     CoinCopyN(array, oldSize, buffy);
     delete [] array;
    }
   array = buffy;
  }
  else {
    newSize = oldSize;
  }
}
}// Ends Bonmin namespace
#endif