X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flabel.c;h=9124b5cc70a58c276eb2da7fc710ae929e045b92;hb=d644fa5efb63608e59b9f7b84c7806c91c970b5d;hp=c76c3a7590ee6a5651c186d0573c875a26705d55;hpb=650f92bf8dfdd0095db993f71f9e3867e7119acc;p=YACASL2.git diff --git a/src/label.c b/src/label.c index c76c3a7..9124b5c 100644 --- a/src/label.c +++ b/src/label.c @@ -1,10 +1,19 @@ -#include "casl2.h" +#include +#include +#include +#include + +#include "cerr.h" +#include "cmem.h" +#include "hash.h" #include "assemble.h" -int labelcnt = 0; /* ラベル数 */ -LABELTAB *labels[LABELTABSIZE]; /* ラベル表 */ +static int labelcnt = 0; /* ラベル数 */ +static LABELTAB *labels[LABELTABSIZE]; /* ラベル表 */ -/* プログラム名とラベルに対応するハッシュ値を返す */ +/** + * プログラム名とラベルに対応するハッシュ値を返す + */ unsigned labelhash(const char *prog, const char *label) { HKEY *keys[2]; @@ -22,7 +31,9 @@ unsigned labelhash(const char *prog, const char *label) return hash(i+1, keys, LABELTABSIZE); } -/* ラベル表からアドレスを検索する */ +/** + * プログラム名とラベルに対応するアドレスをラベル表から検索する + */ WORD getlabel(const char *prog, const char *label) { assert(label != NULL); @@ -38,7 +49,9 @@ WORD getlabel(const char *prog, const char *label) return 0xFFFF; } -/* プログラム名、ラベル、アドレスをラベル表に追加する */ +/** + * プログラム名、ラベル、アドレスをラベル表に追加する + */ bool addlabel(const char *prog, const char *label, WORD adr) { assert(label != NULL); @@ -71,12 +84,17 @@ bool addlabel(const char *prog, const char *label, WORD adr) return true; } +/** + * ラベルを比較した結果を返す + */ int compare_adr(const void *a, const void *b) { return (**(LABELARRAY **)a).adr - (**(LABELARRAY **)b).adr; } -/* ラベル表を表示する */ +/** + * ラベル表を表示する + */ void printlabel() { int i, asize = 0; @@ -105,7 +123,9 @@ void printlabel() } } -/* ラベル表を解放する */ +/** + * ラベル表を解放する + */ void freelabel() { int i; @@ -115,10 +135,10 @@ void freelabel() for(np = labels[i]; np != NULL; np = nq) { nq = np->next; if(np->prog != NULL) { - free(np->prog); + free_chk(np->prog, "np.prog"); } - free(np->label); - free(np); + free_chk(np->label, "np.label"); + free_chk(np, "np"); } } }