//----------------------------------------------------------------------
//  IMPLEMENTATION FILE (namedstk.cpp)
//  This module exports an ADT for an unbounded stack of integer values.
//  IntStack is a public base class of NamedStack.
//----------------------------------------------------------------------
#include "namedstk.h"
#include <iostream.h>
#include <string.h>     // For strcpy()

// Additional private members of class:
//     char* stkName;

NamedStack::NamedStack( /* in */ const char* stackName )
    //..................................................................
    // PRE:  Assigned(stackName)
    // POST: New stack created via implicit call to
    //       base class constructor
    //    && stkName points to duplicate of stackName on free store
    //..................................................................
{
    stkName = new char[strlen(stackName) + 1];
    strcpy(stkName, stackName);
}

NamedStack::NamedStack( const NamedStack& otherStk ) : IntStack(otherStk)
    //..................................................................
    // POST: New stack created via call to base class copy-constructor
    //       (Incoming parameter otherStk is passed as a parameter to
    //        base class's copy-constructor)
    //    && stkName points to duplicate of otherStack.stackName
    //       on free store
    //..................................................................
{
    stkName = new char[strlen(otherStk.stkName) + 1];
    strcpy(stkName, otherStk.stkName);
}

NamedStack::~NamedStack()
    //..................................................................
    // POST: stkName string deleted from free store, then stack
    //       destroyed via implicit call to base class destructor
    //..................................................................
{
    delete stkName;
}

void NamedStack::WriteName() const
    //..................................................................
    // POST: stkName has been output
    //..................................................................
{
    cout << stkName;
}

