aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/jtutil/array.cc53
-rw-r--r--src/jtutil/array.hh16
-rw-r--r--src/jtutil/test_array.cc27
3 files changed, 44 insertions, 52 deletions
diff --git a/src/jtutil/array.cc b/src/jtutil/array.cc
index dc4b2ae..ded2033 100644
--- a/src/jtutil/array.cc
+++ b/src/jtutil/array.cc
@@ -17,8 +17,9 @@
//
#include <assert.h>
-#include <jt/stdc.h>
-#include <jt/array.hh>
+#include "jt/stdc.h"
+#include "jt/util++.hh"
+#include "jt/array.hh"
//*****************************************************************************
// array1d - 1D array template
@@ -27,16 +28,16 @@
//
// This function constructs an array1d object.
//
-template <class fp>
-array1d<fp>::array1d(int min_i_in, int max_i_in)
+template <class fpt>
+array1d<fpt>::array1d(int min_i_in, int max_i_in)
: min_i_(min_i_in), max_i_(max_i_in)
{
-array_ = new fp[N_i()];
+array_ = new fpt[N_i()];
// need to explicitly initialize -- new[] *doesn't* do this automagically
for (int i = 0 ; i < N_array() ; ++i)
{
- array_[i] = fp(0);
+ array_[i] = fpt(0);
}
}
@@ -45,8 +46,8 @@ array_ = new fp[N_i()];
//
// This function destroys an array1d object.
//
-template <class fp>
-array1d<fp>::~array1d()
+template <class fpt>
+array1d<fpt>::~array1d()
{
delete[] array_;
}
@@ -58,20 +59,20 @@ delete[] array_;
//
// This function constructs an array2d object.
//
-template <class fp>
-array2d<fp>::array2d(int min_i_in, int max_i_in,
+template <class fpt>
+array2d<fpt>::array2d(int min_i_in, int max_i_in,
int min_j_in, int max_j_in)
: min_i_(min_i_in), max_i_(max_i_in),
min_j_(min_j_in), max_j_(max_j_in)
{
stride_i_ = N_j();
N_array_ = N_i() * stride_i_;
-array_ = new fp[N_array_];
+array_ = new fpt[N_array_];
// need to explicitly initialize -- new[] *doesn't* do this automagically
for (int i = 0 ; i < N_array() ; ++i)
{
- array_[i] = fp(0);
+ array_[i] = fpt(0);
}
offset_ = 0; // temp value, needed for following subscript() call
@@ -84,8 +85,8 @@ offset_ = - subscript_unchecked(min_i_, min_j_);
//
// This function destroys an array2d object.
//
-template <class fp>
-array2d<fp>::~array2d()
+template <class fpt>
+array2d<fpt>::~array2d()
{
delete[] array_;
}
@@ -97,8 +98,8 @@ delete[] array_;
//
// This function constructs an array3d object.
//
-template <class fp>
-array3d<fp>::array3d(int min_i_in, int max_i_in,
+template <class fpt>
+array3d<fpt>::array3d(int min_i_in, int max_i_in,
int min_j_in, int max_j_in,
int min_k_in, int max_k_in)
: min_i_(min_i_in), max_i_(max_i_in),
@@ -108,12 +109,12 @@ array3d<fp>::array3d(int min_i_in, int max_i_in,
stride_j_ = N_k();
stride_i_ = N_j() * stride_j_;
N_array_ = N_i() * stride_i_;
-array_ = new fp[N_array_];
+array_ = new fpt[N_array_];
// need to explicitly initialize -- new[] *doesn't* do this automagically
for (int i = 0 ; i < N_array() ; ++i)
{
- array_[i] = fp(0);
+ array_[i] = fpt(0);
}
offset_ = 0; // temp value, needed for following subscript() call
@@ -126,8 +127,8 @@ offset_ = - subscript_unchecked(min_i_, min_j_, min_k_);
//
// This function destroys an array3d object.
//
-template <class fp>
-array3d<fp>::~array3d()
+template <class fpt>
+array3d<fpt>::~array3d()
{
delete[] array_;
}
@@ -139,8 +140,8 @@ delete[] array_;
//
// This function constructs an array4d object.
//
-template <class fp>
-array4d<fp>::array4d(int min_i_in, int max_i_in,
+template <class fpt>
+array4d<fpt>::array4d(int min_i_in, int max_i_in,
int min_j_in, int max_j_in,
int min_k_in, int max_k_in,
int min_l_in, int max_l_in)
@@ -153,12 +154,12 @@ stride_k_ = N_l();
stride_j_ = N_k() * stride_k_;
stride_i_ = N_j() * stride_j_;
N_array_ = N_i() * stride_i_;
-array_ = new fp[N_array_];
+array_ = new fpt[N_array_];
// need to explicitly initialize -- new[] *doesn't* do this automagically
for (int i = 0 ; i < N_array() ; ++i)
{
- array_[i] = fp(0);
+ array_[i] = fpt(0);
}
offset_ = 0; // temp value, needed for following subscript() call
@@ -171,8 +172,8 @@ offset_ = - subscript_unchecked(min_i_, min_j_, min_k_, min_l_);
//
// This function destroys an array4d object.
//
-template <class fp>
-array4d<fp>::~array4d()
+template <class fpt>
+array4d<fpt>::~array4d()
{
delete[] array_;
}
diff --git a/src/jtutil/array.hh b/src/jtutil/array.hh
index cc3349d..f7e584d 100644
--- a/src/jtutil/array.hh
+++ b/src/jtutil/array.hh
@@ -21,6 +21,10 @@
// arrays cannot be copied or passed to functions by value; use pass
// by reference instead.
//
+// FIXME: Maybe these should be in namespace jtutil::?
+//
+
+//
// Stroustrup ("The C++ Programming Language", 3rd edition, appendix C.7)
// suggests the use of STL vectors of STL vectors to provide multidimensional
// arrays. However, those "arrays" aren't contiguous in memory, so the
@@ -43,8 +47,6 @@
//******************************************************************************
-namespace jtutil
- {
template <class fpt>
class array1d
{
@@ -96,12 +98,9 @@ private:
// min/max array bounds
const int min_i_, max_i_;
};
- }; // close namespace jtutil::
//******************************************************************************
-namespace jtutil
- {
template <class fpt>
class array2d
{
@@ -175,12 +174,9 @@ private:
const int min_i_, max_i_;
const int min_j_, max_j_;
};
- }; // close namespace jtutil::
//******************************************************************************
-namespace jtutil
- {
template <class fpt>
class array3d
{
@@ -260,12 +256,9 @@ private:
const int min_j_, max_j_;
const int min_k_, max_k_;
};
- }; // close namespace jtutil::
//******************************************************************************
-namespace jtutil
- {
template <class fpt>
class array4d
{
@@ -357,4 +350,3 @@ private:
const int min_k_, max_k_;
const int min_l_, max_l_;
};
- }; // close namespace jtutil::
diff --git a/src/jtutil/test_array.cc b/src/jtutil/test_array.cc
index 5f46df6..d9dfcce 100644
--- a/src/jtutil/test_array.cc
+++ b/src/jtutil/test_array.cc
@@ -4,10 +4,9 @@
#include <assert.h>
#include <stdio.h>
#include <math.h>
-#include <jt/stdc.h>
-#include <jt/util.h>
-#include <jt/util++.hh>
-#include <jt/array.hh>
+#include "jt/stdc.h"
+#include "jt/util++.hh"
+#include "jt/array.hh"
//
// prototypes for non-class functions defined in this file
@@ -50,7 +49,7 @@ printf("\ntesting array1d<double>...\n");
printf("constructing...\n");
array1d<double> A(min_i, max_i);
assert(A.min_i() == min_i); assert(A.max_i() == max_i);
-assert(A.N_i() == HOW_MANY_IN_RANGE(min_i,max_i));
+assert(A.N_i() == jtutil::how_many_in_range(min_i,max_i));
printf("assigning values...\n");
#define VALUE_1D(ix) \
@@ -118,8 +117,8 @@ printf("constructing...\n");
array2d<float> A(min_i,max_i, min_j,max_j);
assert(A.min_i() == min_i); assert(A.max_i() == max_i);
assert(A.min_j() == min_j); assert(A.max_j() == max_j);
-assert(A.N_i() == HOW_MANY_IN_RANGE(min_i,max_i));
-assert(A.N_j() == HOW_MANY_IN_RANGE(min_j,max_j));
+assert(A.N_i() == jtutil::how_many_in_range(min_i,max_i));
+assert(A.N_j() == jtutil::how_many_in_range(min_j,max_j));
printf("assigning values...\n");
#define VALUE_2D(ix,jx) \
@@ -202,9 +201,9 @@ array3d<double> A(min_i,max_i, min_j,max_j, min_k,max_k);
assert(A.min_i() == min_i); assert(A.max_i() == max_i);
assert(A.min_j() == min_j); assert(A.max_j() == max_j);
assert(A.min_k() == min_k); assert(A.max_k() == max_k);
-assert(A.N_i() == HOW_MANY_IN_RANGE(min_i,max_i));
-assert(A.N_j() == HOW_MANY_IN_RANGE(min_j,max_j));
-assert(A.N_k() == HOW_MANY_IN_RANGE(min_k,max_k));
+assert(A.N_i() == jtutil::how_many_in_range(min_i,max_i));
+assert(A.N_j() == jtutil::how_many_in_range(min_j,max_j));
+assert(A.N_k() == jtutil::how_many_in_range(min_k,max_k));
printf("assigning values...\n");
#define VALUE_3D(ix,jx,kx) \
@@ -301,10 +300,10 @@ assert(A.min_i() == min_i); assert(A.max_i() == max_i);
assert(A.min_j() == min_j); assert(A.max_j() == max_j);
assert(A.min_k() == min_k); assert(A.max_k() == max_k);
assert(A.min_l() == min_l); assert(A.max_l() == max_l);
-assert(A.N_i() == HOW_MANY_IN_RANGE(min_i,max_i));
-assert(A.N_j() == HOW_MANY_IN_RANGE(min_j,max_j));
-assert(A.N_k() == HOW_MANY_IN_RANGE(min_k,max_k));
-assert(A.N_l() == HOW_MANY_IN_RANGE(min_l,max_l));
+assert(A.N_i() == jtutil::how_many_in_range(min_i,max_i));
+assert(A.N_j() == jtutil::how_many_in_range(min_j,max_j));
+assert(A.N_k() == jtutil::how_many_in_range(min_k,max_k));
+assert(A.N_l() == jtutil::how_many_in_range(min_l,max_l));
printf("assigning values...\n");
#define VALUE_4D(ix,jx,kx,lx) \