/*
 * Copyright ©2026 Soham Pardeshi. All rights reserved.
 * Permission is hereby granted to students registered for University of
 * Washington CSE 333 for use solely during Summer Quarter 2026 for
 * purposes of the course. No other use, copying, distribution, or
 * modification is permitted without prior written consent. Copyrights
 * for third-party components of this work must be honored. Instructors
 * interested in reusing these course materials should contact the author.
 */

#include <iostream>

#include "Point.h"

using std::cout;
using std::endl;

int* AllocateInt(int x) {
  int* heapy_int = new int;
  *heapy_int = x;
  // could also have been: int *heapy_int = new int(x);
  return heapy_int;
}

Point* AllocatePoint(int x, int y) {
  Point* heapy_point = new Point(x, y);
  return heapy_point;
}

int main(int argc, char** argv) {
  Point* x = AllocatePoint(1, 2);
  int* y = AllocateInt(3);

  cout << "x's x_ coordinate: " << x->get_x() << endl;
  cout << "distance between x and self: " << x->Distance(*x) << endl;
  cout << "y: " << y << ", *y: " << *y << endl;

  delete x;
  delete y;

  return EXIT_SUCCESS;
}