namazu-ml(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: divide code for library.



いわきりです

遅くなりました m(_ _)m

NOKUBI Takatsuguさんの<199909290350.MAA20042@xxxxxxxxxxxxxx>から
><199909290205.LAA15590@xxxxxxxxxxxxxx>の記事において
>satoru-t@xxxxxxxxxxxxxxxxxxさんは書きました。
>>> libnmz から外に公開する関数はそれほど多くないでしょうから、
>>> それらの prototype宣言を libnmz.h にまとめればいいと思います。
>  なるほど。了解です。

個人的には、下記の様なAPIがあるとうれしいです
mod_namazuを実現するには、
namazu.cgiとnamazu_confが1対1対応であるのに対し、
mod_namzu対namazu_confが1対多にする必要があります。
現在のvar.cは一つの構造体としておき、リクエスト毎に
切り替えられないと困りますので。

typedef struct _NMZ_CONF {
    uchar DEFAULT_CONF_PATH[BUFFSIZE];
      :
    uchar index_path;
    int   output_type;
    uchar format_file_path;
} NMZ_CONF;


    
Apacheモジュールの動作としては、mod_namazuが最初に呼ばれたとき
に実行するフック、コンテンツの置かれているディレクトリ毎に
呼び出されるフック、実際のリクエストに応えるためのフックと
いった具合にジャンプテーブルを使うので、下記の4つは欲しいかも
# 勝手に構造体とか名前決めてます。

int nmz_api_common_conf(NMZ_CONF *p);         /* namzu_confを読み込み初期化 */
int nmz_api_marge_dir_conf(NMZ_CONF *p, uchar *local_conf_filepath); /* http://foo.or.jp/index.nmz */
RESULTS *nmz_api_search(NMZ_CONF *p, uchar *query_strings); /* 検索結果を未整形の状態で返す */
int nmz_api_output_format(NMZ_CONF *p, RESULT *results); /* NMZ.result.* に合わせて出力 */ 

>>>   NMZ result;
>>>   result = namazu_search(query);
>>>   for (i = 0 ; i < result.num; i++) {
>>>       (この部分で何をするかが問題)
>>>   }
>>>   namazu_free(result);
>  結果を取り出すための関数が必要になりますね。
># いわきりさんの御意見も伺いたいところです。

ほとんど、私の構想にあるnmz_api_searchと一緒ですね。
(この部分で何をするかが問題)
とおっしゃってる部分は、複数パターン用意するか、
main()に任せるしか無いかなぁと思っています。