lookup_words.c

説明を見る。
00001 /*------------------------------------------------------------------------*/
00013 /* ヘッダファイル */
00014 #include <string.h>
00015 #include <stdlib.h>
00016 #include "lookup_words.h"
00017 
00018 
00019 /*------------------------------------------------------------------------*/
00030 int lookup_words(keyword_t words[], int len, const char * s)
00031 {
00032     int p, q, r, comp;
00033 
00034     p = 0;
00035     q = len - 1;
00036 
00037     while (p <= q)
00038     {
00039         r = (p + q) / 2;
00040         comp = strcasecmp(s, words[r].name);
00041 
00042         if (comp == 0)
00043             return words[r].tokn;
00044 
00045         if (comp < 0)
00046             q = r - 1;
00047         else
00048             p = r + 1;
00049     }
00050 
00051     return -1;
00052 }
00053 
00054 
00055 /*------------------------------------------------------------------------*/
00059 int lookup_membcompare(const void * a1, const void * a2)
00060 {
00061     return strcasecmp(((keyword_t *)a1)->name, ((keyword_t *)a2)->name);
00062 }
00063 
00064 
00065 /*------------------------------------------------------------------------*/
00074 void lookup_sorttable(keyword_t words[], int len)
00075 {
00076     qsort((void *)words, len, sizeof(keyword_t), &lookup_membcompare);
00077 }
00078 

NEWT/0に対してThu Nov 23 16:50:42 2006に生成されました。  doxygen 1.5.0