//: C06:Inventory.h
// Z knihy "Myslíme v jazyce C++, část 2" od Bruce Eckela a Chucka Allisona.
// (c) 1995-2004 MindView, Inc. Všechna práva vyhrazena.
// Přečtěte si podmínky používání zdrojových kódů umístěné v souboru 
// 'Licence.txt' dodávaném spolu s balíčkem kódu dostupným na www.MindView.net.
#ifndef INVENTORY_H
#define INVENTORY_H
#include <iostream>
#include <cstdlib>
using std::rand;

class Katalog {
  char polozka;
  int mnozstvi;
  int hodnota;
public:
  Katalog(char it, int quant, int val)
  : polozka(it), mnozstvi(quant), hodnota(val) {}
  // Kombinovaný operator= & kopírovací konstruktor je OK
  char getPolozka() const { return polozka; }
  int getMnozstvi() const { return mnozstvi; }
  void setMnozstvi(int q) { mnozstvi = q; }
  int getHodnota() const { return hodnota; }
  void setHodnota(int val) { hodnota = val; }
  friend std::ostream& operator<<(
    std::ostream& os, const Katalog& kat) {
    return os << kat.polozka << ": "
      << "mnozstvi " << kat.mnozstvi
      << ", hodnota " << kat.hodnota;
  }
};

// generátor:
struct KatalogGen {
  Katalog operator()() {
    static char c = 'a';
    int q = rand() % 100;
    int v = rand() % 500;
    return Katalog(c++, q, v);
  }
};
#endif // INVENTORY_H ///:~
