単連結リストの整列 #99 二教科の成績へのインタフェイスの変更

成績が列挙型で公開されていたので隠すように変更する。

school_record.h
typedef struct tag_school_record school_record_t;
typedef struct tag_grade grade_t;

school_record_t *school_record_new(const char *name, const grade_t *maths, const grade_t *physics);
void school_record_dispose(school_record_t *rec);
const char *school_record_get_name(const school_record_t *rec);
const grade_t *school_record_get_maths(const school_record_t *rec);
const grade_t *school_record_get_physics(const school_record_t *rec);

extern const grade_t * const GRADE_A;
extern const grade_t * const GRADE_B;
extern const grade_t * const GRADE_C;

int grade_compare(const grade_t *g1, const grade_t *g2);

grade_t型の実体が隠されたため成績の優劣を比較する関数grade_compareを追加する。
また、変更する必要のないものや変更されては困るものはconstで修飾した。