//: C04:StackTest.cpp
//{L} Stack
//{T} StackTest.cpp
// Test of nested linked list
#include "Stack.h"                    

/* Notiamo che viene inclusa la libreria definita da noi ove abbiamo le due struct e i prototipi di funzione che, a loro volta, sono definite in Stack.cpp */

#include <fstream>
#include <iostream>
#include <string>
using namespace std;

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

ifstream in("StackTest.cpp"); 
Stack textlines;
textlines.initialize();
string line;
                                      

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

while(getline(in, line))              

/* Legge riga per righa (finchè non trova il carattere di capo riga) il file in input */

textlines.push(new string(line));     

/* Viene passato alla funzione di push il puntatore ad una stringa creata ed inizializzata a line */

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

string* s;

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

/* Cicla finchè il puntatore assagnato ad s, ricavato dalla pop, non punta a null */ 

{

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

}

textlines.cleanup();                  

/* Libera lo spazio allocato per i dati */

} ///:~