update SVN properties
[reactos.git] / rosapps / games / solitaire / cardlib / cardstack.h
1 #ifndef CARDSTACK_INCLUDED
2 #define CARDSTACK_INCLUDED
3
4 #include "card.h"
5
6 #define MAX_CARDSTACK_SIZE 128
7
8 class CardStack
9 {
10 friend class CardRegion;
11
12 public:
13 CardStack() : nNumCards(0) { }
14
15 void NewDeck();
16 int NumCards() const { return nNumCards; }
17 void Shuffle();
18 void Clear();
19 void Reverse();
20
21 void Push(const Card card);
22 void Push(const CardStack &cardstack);
23
24 Card Pop();
25 CardStack Pop(int items);
26
27 Card Top();
28 CardStack Top(int items);
29
30 void Print();
31
32 Card RemoveCard(size_t index);
33 void InsertCard(size_t index, Card card);
34
35 //subscript capability!!
36 Card & operator[] (size_t index);
37 const Card & operator[] (size_t index) const;
38
39 CardStack &operator += (Card card);
40 CardStack &operator += (CardStack &cs);
41
42 CardStack operator + (Card card);
43 CardStack operator + (CardStack &cs);
44
45 private:
46
47 CardStack(CardStack &copythis, size_t fromindex);
48
49 Card cardlist[MAX_CARDSTACK_SIZE];
50 int nNumCards;
51 };
52
53 #endif