/****
 *
 * Definition of the type Planet and associated functions.  A Planet is a
 * struct, with a name, diameter, number of moons, orbit time, and rotation
 * time.  It has functions to read from stdio, print to stdout, change the
 * value of any component, and test if the components are all empty.  A static
 * constant named EMPTY_PLANET is provided for initialization purposes.
 *
 */


/**
 * Constant for the maximum size-1 of a planet name.
 */
#define NAME_SIZE 101

/**
 * Type Planet is a structure that defines the properties of a planet.
 */
typedef struct {
    char name[NAME_SIZE];        /* name of the planet */
    double diameter;             /* equatorial diameter in km */
    int moons;                   /* number of moons */
    double orbit_time;           /* years to orbit sun once */
    double rotation_time;        /* hours to complete one revolution on axis */
} Planet;

/**
 * Constant value for an empty planet.  Note the use of the static and const
 * keywords, which mean that this value can be used for initialization
 * purposes, but it cannot be changed, nor can it be used in comparison
 * expressions.
 */
static const Planet EMPTY_PLANET = {"", 0, 0, 0, 0};

/**
 * Input the components of a planet from stdin, returning the planet value.
 */
Planet read_planet();

/**
 * Print the components of the given planet to stdout.
 */
void print_planet(Planet p);

/**
 * Change the name of the given planet to the given name.
 */
void change_name(Planet p, char* name);

/**
 * Change the diameter of the given planet to the given diameter.
 */
void change_diameter(Planet* p, double diameter);

/**
 * Change the moons of the given planet to the given moons value.
 */
void change_moons(Planet* p, int moons);

/**
 * Change the orbit_time of the given planet to the given orbit_time.
 */
void change_orbit_time(Planet* p, double orbit_time);

/**
 * Change the rotation_time of the given planet to the given rotation_time.
 */
void change_rotation_time(Planet* p, double rotation_time);

/**
 * Return true if the given planet is equal to the EMPTY_PLANET, false
 * otherwise.
 */
int is_empty(Planet p);