//
// _naive_ dstack osztály
// vigyázat! hibás kód
//
#ifndef DSTACK_H
#define DSTACK_H

#include <iostream>

class dstack
{
    /* friend deklaráció: nem helyettesíti a függvény deklarációt */
    friend std::ostream &operator<<( std::ostream &os, const dstack &ds);
public:
        /* konstruktor */
        dstack( int size = 128 );

    void   push( double d );
    /* a legtöbb könyvtárban: void pop() */
    double pop();
    /* a legtöbb könyvtárban lenne még:
    double& top();
    const double&  top() const;
    */
    bool is_empty() const;
    bool is_full() const;
private:
    int    capacity;    // lefoglalt tárterület mérete
    int    sp;          // aktuális elemek száma
    double *v;          // pointer a tárterületre
};
/* a kiíró művelet deklarációja (friend nem elég) */
std::ostream &operator<<( std::ostream &os, const dstack &ds);

#endif /* DSTACK_H */