// Copyright 2016, University of Freiburg,
// Chair of Algorithms and Data Structures.
// Author: Hannah Bast <bast@cs.uni-freiburg.de>.
#include "./Array.h"
// _____________________________________________________________________________
template<class T>
Array<T>::Array(T* array, int n) {
_size = n;
_elements = new T[_size];
for (int i = 0; i < _size; i++) { _elements[i] = array[i]; }
}
// _____________________________________________________________________________
template<class T>
Array<T>::~Array() {
delete[] _elements;
}
// _____________________________________________________________________________
template<class T>
T Array<T>::get(int i) const {
return _elements[i];
}
// Explicit instantiation.
template class Array<int>;
template class Array<float>;
// _____________________________________________________________________________
Array<bool>::Array(bool* array, int n) {
_size = n;
_elements = 0;
for (int i = 0; i < _size; i++) {
if (array[i]) {
// Set the i-th bit of the _elements byte; see slide 17.
_elements |= (1 << i);
}
}
}
// _____________________________________________________________________________
bool Array<bool>::get(int i) const {
return (_elements & (1 << i)) == 0 ? false : true;
}
// OLD NON-TEMPLATED CODE
/*
// _____________________________________________________________________________
ArrayInt::ArrayInt(int* array, int n) {
_size = n;
_elements = new int[_size];
for (int i = 0; i < _size; i++) { _elements[i] = array[i]; }
}
// _____________________________________________________________________________
ArrayInt::~ArrayInt() {
delete[] _elements;
}
// _____________________________________________________________________________
int ArrayInt::get(int i) const {
return _elements[i];
}
// _____________________________________________________________________________
ArrayFloat::ArrayFloat(float* array, int n) {
_size = n;
_elements = new float[_size];
for (int i = 0; i < _size; i++) { _elements[i] = array[i]; }
}
// _____________________________________________________________________________
ArrayFloat::~ArrayFloat() {
delete[] _elements;
}
// _____________________________________________________________________________
float ArrayFloat::get(int i) const {
return _elements[i];
}
*/