単連結リストの整列 #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で修飾した。