単連結リストの整列 #23 インタフェイスをほんのちょっとだけ修正

関数プロトタイプひとつを変更でなく修正。

sclist.h
#ifndef SCLIST_H_INCLUDED
#define SCLIST_H_INCLUDED

typedef struct tag_sclist *sclist_t;
typedef struct tag_scdata *scdata_t;
typedef struct tag_sciter *sciter_t;

sclist_t sclist_new(void);
void sclist_dispose(sclist_t list);
int sclist_add(sclist_t list, const char *name, int score);
sciter_t sclist_iterator(const sclist_t list);
void sclist_sort(sclist_t list, int (*issup)(const scdata_t, const scdata_t, void *), void *arg);

const char *scdata_get_name(const scdata_t data);
int scdata_get_score(const scdata_t data);

int sciter_has_next(const sciter_t iter);
scdata_t sciter_next(const sciter_t iter);

#endif /* SCLIST_H_INCLUDED */

リストを整列する関数sclist_sortの第二引数に与える順序定義関数のプロトタイプは、
一つ目と二つ目の引数の型がconst void *であったが、const scdata_tに修正した。
関数lsortのインタフェイスに合わせつつsclist_sortの第一引数だけsclist_t型にしていたが、
指定した順序定義関数に与えられる要素の型はscdata_t型しかないはずなので、
const void *でなくscdata_t型に制約されるべきものだろう。
ということで、上に示したようなプロトタイプとした。