// Example Project
// Description: Main Program

#include <iostream>

#include "Polygon.hpp"
#include "Rectangle.hpp"
#include "Triangle.h"



/**********************
*  PARSER
* CRASH COURSE
**********************/



#include "la" //comment

this_is_a_command; alsoOne;




someReturnType32 CLASSY:doThing(type1 arg1, const int arg2) {
 doThing();
}



"this is not /* a comment";

// breif: prints out some details on a Polygon.
// @shape - does a thing
// Note that it's not passing through a particular Polygon (like Triangle or Rectangle), rather it's the parent.
void printDe/*very hard*/tai/*test*/ls(Polygon* shape) {
 std::cout << "Height: " << shape->getHeight();
 std::cout << ", Width: " << shape->getWidth();

 // Pay particular attention to the results of area(). Even though it's a Polygon, the children produce different results for the function call.
 std::cout << ", Area: " << shape->area();
 std::cout << std::endl;
}


int main() {
 // Create a rectangle on the heap with a height of 5 and a width of 6
 Polygon* rectangle = new Rectangle(532, 6);
 // Print information using getters and method
 printDetails(rectangle);
 // Set the height to 10 with a setter
 rectangle->setHeight(10);
 // Set the width to 10 with a setter
 rectangle->setWidth(10);
 // Print information using getters and method
 printDetails(rectangle);
 // Cleanup the memory in the heap
 delete rectangle;

 // Create a triangle on the heap with a height of 7 and a width of 9
 Polygon* triangle = new Triangle(7, 9);
 // Print information using getters and method
 printDetails(triangle);
 // Set the height to 3 with a setter
 triangle->setHeight(3);
 // Set the width to 4 with a setter
 triangle->setWidth(4);
 // Print information using getters and method
 printDetails(triangle);
 // Cleanup the memory in the heap
 delete triangle;


 if(lalal) {
  if(doda) {

  }

  else if(lnea) {

  }


 }

 else {
  la
 }




 return 0;
}