//: C06:Stack3Test.cpp
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 2000
// Copyright notice in Copyright.txt
//{L} Stack3
//{T} Stack3Test.cpp
// Constructors/destructors

#include "Stack3.h"
#include "../require.h"
#include <fstream>
#include <iostream>
#include <string>
using namespace std;

/* Questo esempio è simile a quello già proposto a lezione con il nome di StackTest.cpp.
In questo caso però, si utilizzano costruttori e distruttori.*/

int main(int argc, char* argv[])
{

/* File name is argument */

requireArgs(argc, 1); 
ifstream in(argv[1]);
assure(in, argv[1]);

/* Chiama il costruttore della classe stack, dichiarando un oggetto "textlines". */

Stack textlines;
string line;

/* Read file and store lines in the stack: */

while(getline(in, line))

textlines.push(new string(line));

/* Pop the lines from the stack and print them: */

string* s;
while((s = (string*)textlines.pop()) != 0)
{

cout << *s << endl;
delete s; 

}

} ///:~