------------------------------------------------------------------------------
MC logo
Safe Integer Array Implementation
[^] CSc 220 Home
------------------------------------------------------------------------------
[Introduction] [Boolean and Control] [Functions] [Arrays and Pointers] [Dynamic Arrays] [Array Errors] [Command Array] [Standard Containers] [Structs and Classes] [Automatic Pointer] [Multi-File Programs] [Copying Objects] [Templates] [Inheritance] [Plain C I/O] [Type Odds And Ends] [Plain C Strings] [File I/O]
[Safe Integer Array Class] [Safe Integer Array Implementation] [Bounds Error Demo] [Object Copy Demo] [No Copies For Me, Please] [Hidden Calls]
safearr.cpp
#include "safearr.h"

// Make us a copy of the other array.  Allocates m_space of the same size, then
// copies the contents of other.m_size into it, and copies m_size.
void SafeIntArr::copyin(const SafeIntArr &other)
{
        m_space = new int[other.m_size];
        m_size = other.m_size;
        for(int m = 0; m < m_size; ++m)
                m_space[m] = other.m_space[m];
}

// Store into the array, or print an error message and don't 
// change the aray.
void SafeIntArr::store(int pos, int tostore) 

        if(pos < m_size && pos >= 0)
                m_space[pos] = tostore;
        else 
                cerr << pos << " out of bounds on store" << endl;
}

// Fetch from pos, or, if pos is out of bounds, print a message
// and return 0.
int SafeIntArr::fetch(int pos) const

        if(pos < m_size && pos >= 0)
                return m_space[pos];
        else {
                cerr << pos << " out of bounds on fetch" << endl;
                return 0;
        }
}

// Array printer
void SafeIntArr::print(ostream &out) const
{
        for(int n = 0; n < m_size; ++n) {
                out << m_space[n];
                if(n < m_size-1) out << " ";
        }
}