#pragma once

#include <string>
class Trench {

private:

    int _size;
    std::string _colour;
    int _price;
    int _quantity;
    std::string _photograph;

public:
    Trench()=default;

    /*
    * Constructor for the Trench class
    * Input: size - integer
    *       colour - string
    *      price - integer
    *     quantity - integer
    *    photograph - string
    * Output: trench object
    */
    Trench(int size, std::string colour, int price, int quantity, std::string photograph);
    

    /*
    * Destructor for the Trench class
    * Input: -
    * Output: -
    */
    ~Trench();

    /*
    * Copy constructor for the Trench class
    * Input: trench - trench object
    * Output: trench object
    */
    Trench(const Trench &trench);

    /*
    * Overload of the = operator
    * Input: trench - trench object
    * Output: trench object
    */
    Trench& operator=(const Trench &trench);

    /*
    * Getter for the size attribute
    * Input: -
    * Output: size - integer
    */
    int size() const;

    /*
    * Setter for the size attribute
    * Input: newSize - integer
    * Output: -
    */
    void size(int newSize);

    /*
    * Getter for the colour attribute
    * Input: -
    * Output: colour - string
    */
    std::string colour() const;

    /*
    * Setter for the colour attribute
    * Input: newColour - string
    * Output: -
    */
    void colour(std::string newColour);

    /*
    * Getter for the price attribute
    * Input: -
    * Output: price - integer
    */
    int price() const;

    /*
    * Setter for the price attribute
    * Input: newPrice - integer
    * Output: -
    */
    void price(int newPrice);

    /*
    * Getter for the quantity attribute
    * Input: -
    * Output: quantity - integer
    */
    int quantity() const;

    /*
    * Setter for the quantity attribute
    * Input: newQuantity - integer
    * Output: -
    */
    void quantity(int newQuantity);

    /*
    * Getter for the photograph attribute
    * Input: -
    * Output: photograph - string
    */
    std::string photograph() const;

    /*
    * Setter for the photograph attribute
    * Input: newPhotograph - string
    * Output: -
    */
    void photograph(std::string newPhotograph);

    /*
    * Overload of the == operator
    * Input: trench - trench object
    * Output: true - if the trench objects are the same
    *         false - otherwise
    */
    bool operator==(const Trench& t);

    friend std::ostream& operator<<(std::ostream& os, const Trench& trench);

    friend std::ofstream& operator<<(std::ofstream& os, const Trench& trench);

    friend std::ifstream& operator>>(std::ifstream& is, Trench& trench);

};
    