//File:	circleMS.cpp IMPLEMENTATION file
#include "circleMS.h"
#include <string.h>

const double PI = 3.14159;

//Uses member initializer list
circle::circle () : m_x(0.0), m_y(0.0), m_rad(1.0)
{
	m_name = new char[strlen("Unit Circle")];
	strcpy (m_name, "Unit Circle");
}

circle::circle (double xcoord, double ycoord, double radius, char* name)
{
	m_x = xcoord;
	m_y = ycoord;
	m_rad = radius;

	m_name = new char[strlen(name)];
	strcpy (m_name, name);
}

circle::~circle ()
{
	delete [] m_name;
}

double circle::circumference () const
{
	return (m_rad * 2.0 * PI);
}

double circle::radius () const
{
	return m_rad;
}

char* circle::name () const
{
	return m_name;
}

void circle::center (double & x, double & y) const
{
	x = m_x;
	y = m_y;
}

ostream & operator << (ostream & out, const circle & c)
{
	out << c.m_name << " is located at (" << c.m_x << ", " << c.m_y << ")" << endl;
	out << "Its radius is: " << c.m_rad << endl;
	out << "Its circumference is: " << c.circumference() << endl;
	out << endl;

	return out;
}

istream & operator >> (istream & in, circle & c)
{
	if (in == cin)
	{
		cout << "Name	center(x y)	radius " << endl;
	}			
	
	char* name = new char [20];
	in >> name >> c.m_x >> c.m_y >> c.m_rad;
	strcpy (c.m_name, name);

	return in;
}
