#pragma once

#include <time.h>
#include <stdlib.h>
#include <iostream>
#include <string>
#include <vector>
using namespace std;


struct Card {
	string value;	//Card's value in text
	string suit;	//Card's suit
	int numVal;		//Card's value as an integer (allows for comparison)
};

class Deck
{
public:
	Deck();							//create standard deck of 52 cards
	Deck(int deckSize);				//create deck of deckSize cards
	void outputDeck();				//output contents of deck
	Card dealCard();				//return top card and remove from deck
	Deck dealCard(int numOfCards);	//return deck of top numOfCards cards and remove from deck
	void addCard(Card myCard);		//add card to bottom of deck
	void shuffle();					//randomize deck contents
	int getSize();
protected:
	vector<Card> cards;				//Vector of cards.
};

//Card operator overloads
//========================================================================================
//overload less than for Card
bool operator <(Card card1, Card card2);

//overload greater than for Card
bool operator >(Card card1, Card card);

//overload equal for Card
bool operator ==(Card card1, Card card2);

//overload insertion for card
ostream& operator <<(ostream& outStream, Card myCard);