Replacing Array class with another Array class
This commit is contained in:
258
common/Array.cpp
258
common/Array.cpp
@@ -1,258 +0,0 @@
|
||||
#if 0
|
||||
#include "Array.h"
|
||||
/*
|
||||
* Array.cpp
|
||||
*
|
||||
* Created by James Mcclure on 3/31/09.
|
||||
* Copyright 2009 __MyCompanyName__. All rights reserved.
|
||||
*
|
||||
*/
|
||||
|
||||
// *****************************************
|
||||
// ******** class IntArray ****************
|
||||
// *****************************************
|
||||
IntArray::IntArray()
|
||||
{
|
||||
m=n=o=Length=0;
|
||||
}
|
||||
|
||||
IntArray::IntArray(int size)
|
||||
{
|
||||
data = new int [size];
|
||||
Length = size;
|
||||
m = size;
|
||||
n = 1;
|
||||
o = 1;
|
||||
}
|
||||
|
||||
IntArray::IntArray(int nx, int ny)
|
||||
{
|
||||
m = nx;
|
||||
n = ny;
|
||||
o = 1;
|
||||
Length = m*n;
|
||||
data = new int [Length];
|
||||
}
|
||||
|
||||
IntArray::IntArray(int nx, int ny, int nz)
|
||||
{
|
||||
m = nx;
|
||||
n = ny;
|
||||
o = nz;
|
||||
Length = m*n*o;
|
||||
data = new int [Length];
|
||||
}
|
||||
|
||||
IntArray::~IntArray()
|
||||
{
|
||||
delete data;
|
||||
}
|
||||
|
||||
|
||||
void IntArray::New(int size)
|
||||
{
|
||||
m=size;
|
||||
n = 1;
|
||||
o = 1;
|
||||
data = new int [size];
|
||||
Length = size;
|
||||
}
|
||||
|
||||
void IntArray::New(int nx, int ny)
|
||||
{
|
||||
m = nx;
|
||||
n = ny;
|
||||
o = 1;
|
||||
Length = m*n;
|
||||
data = new int [Length];
|
||||
}
|
||||
|
||||
void IntArray::New(int nx, int ny,int nz)
|
||||
{
|
||||
m = nx;
|
||||
n = ny;
|
||||
o = nz;
|
||||
Length = m*n*o;
|
||||
data = new int [Length];
|
||||
}
|
||||
|
||||
int IntArray::e(int i)
|
||||
{
|
||||
return data[i];
|
||||
}
|
||||
|
||||
int IntArray::e(int i, int j)
|
||||
{
|
||||
return data[m*j+i];
|
||||
}
|
||||
|
||||
int IntArray::e(int i, int j, int k)
|
||||
{
|
||||
return data[m*n*k+m*j+i];
|
||||
}
|
||||
|
||||
// *****************************************
|
||||
// ******** class DoubleArray **************
|
||||
// *****************************************
|
||||
DoubleArray::DoubleArray()
|
||||
{
|
||||
m=n=o=Length=0;
|
||||
}
|
||||
|
||||
DoubleArray::DoubleArray(int size)
|
||||
{
|
||||
m=size;
|
||||
n = 1;
|
||||
o = 1;
|
||||
data = new double [size];
|
||||
Length = size;
|
||||
}
|
||||
|
||||
DoubleArray::DoubleArray(int nx, int ny)
|
||||
{
|
||||
m = nx;
|
||||
n = ny;
|
||||
o = 1;
|
||||
Length = m*n;
|
||||
data = new double [Length];
|
||||
}
|
||||
|
||||
DoubleArray::DoubleArray(int nx, int ny,int nz)
|
||||
{
|
||||
m = nx;
|
||||
n = ny;
|
||||
o = nz;
|
||||
Length = m*n*o;
|
||||
data = new double [Length];
|
||||
}
|
||||
|
||||
void DoubleArray::New(int size)
|
||||
{
|
||||
m=size;
|
||||
n = 1;
|
||||
o = 1;
|
||||
data = new double [size];
|
||||
Length = size;
|
||||
}
|
||||
|
||||
void DoubleArray::New(int nx, int ny)
|
||||
{
|
||||
m = nx;
|
||||
n = ny;
|
||||
o = 1;
|
||||
Length = m*n;
|
||||
data = new double [Length];
|
||||
}
|
||||
|
||||
void DoubleArray::New(int nx, int ny,int nz)
|
||||
{
|
||||
m = nx;
|
||||
n = ny;
|
||||
o = nz;
|
||||
Length = m*n*o;
|
||||
data = new double [Length];
|
||||
}
|
||||
|
||||
DoubleArray::~DoubleArray()
|
||||
{
|
||||
delete data;
|
||||
}
|
||||
|
||||
double DoubleArray::e(int i)
|
||||
{
|
||||
return data[i];
|
||||
}
|
||||
|
||||
double DoubleArray::e(int i, int j)
|
||||
{
|
||||
return data[j*m+i];
|
||||
}
|
||||
|
||||
double DoubleArray::e(int i, int j, int k)
|
||||
{
|
||||
return data[k*m*n+j*m+i];
|
||||
}
|
||||
|
||||
extern DoubleArray IncreaseSize(DoubleArray &A, int addLength)
|
||||
{
|
||||
if (addLength<0) {
|
||||
printf("IncreaseSize(Array,Length)","Length needs to be >0.");
|
||||
return DoubleArray();
|
||||
}
|
||||
|
||||
int newM,newN,newO;
|
||||
if (A.o>1) {
|
||||
if (addLength%(A.m*A.n)!=0) {
|
||||
printf("IncreaseSize(Array,Length)","Length needs to be a multiple of m*n");
|
||||
return DoubleArray();
|
||||
}
|
||||
newM = A.m;
|
||||
newN = A.n;
|
||||
newO = A.o + addLength/(A.m*A.n);
|
||||
}
|
||||
else if (A.n>1) {
|
||||
if (addLength%(A.m)!=0) {
|
||||
printf("IncreaseSize(Array,Length)","Length needs to be a multiple of m");
|
||||
return DoubleArray();
|
||||
}
|
||||
newM = A.m;
|
||||
newN = A.n + addLength/A.m;
|
||||
newO = 1;
|
||||
}
|
||||
else {
|
||||
newM = A.m + addLength;
|
||||
newN = 1;
|
||||
newO = 1;
|
||||
}
|
||||
|
||||
DoubleArray toReturn(newM,newN,newO);
|
||||
memcpy(toReturn.Pointer(),A.Pointer(),A.Length*sizeof(double));
|
||||
return toReturn;
|
||||
}
|
||||
extern IntArray IncreaseSize(IntArray &A, int addLength)
|
||||
{
|
||||
if (addLength<0) {
|
||||
printf("IncreaseSize(Array,Length)","Length needs to be >0.");
|
||||
return IntArray();
|
||||
}
|
||||
|
||||
int newM,newN,newO;
|
||||
if (A.o>1) {
|
||||
if (addLength%(A.m*A.n)!=0) {
|
||||
printf("IncreaseSize(Array,Length)","Length needs to be a multiple of m*n");
|
||||
return IntArray();
|
||||
}
|
||||
newM = A.m;
|
||||
newN = A.n;
|
||||
newO = A.o + addLength/(A.m*A.n);
|
||||
}
|
||||
else if (A.n>1) {
|
||||
if (addLength%(A.m)!=0) {
|
||||
printf("IncreaseSize(Array,Length)","Length needs to be a multiple of m");
|
||||
return IntArray();
|
||||
}
|
||||
newM = A.m;
|
||||
newN = A.n + addLength/A.m;
|
||||
newO = 1;
|
||||
}
|
||||
else {
|
||||
newM = A.m + addLength;
|
||||
newN = 1;
|
||||
newO = 1;
|
||||
}
|
||||
|
||||
IntArray toReturn(newM,newN,newO);
|
||||
memcpy(toReturn.Pointer(),A.Pointer(),A.Length*sizeof(int));
|
||||
return toReturn;
|
||||
}
|
||||
|
||||
DoubleArray DoubleArray::Copy()
|
||||
{
|
||||
DoubleArray CopyInto(m,n,o);
|
||||
// Check that the allocation worked.
|
||||
if (CopyInto.Length!=Length) return CopyInto; // Failed. Already printed an error message.
|
||||
memcpy(CopyInto.Pointer(),Pointer(),Length*sizeof(double));
|
||||
return CopyInto;
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user