APEL version

守岡 知彦 / MORIOKA Tomohiko tomo @ etl.go.jp
1999年 11月 8日 (月) 18:55:44 JST


>>>>> In [apel-ja : No.00023] 
>>>>>	"圭一" = Keiichi Suzuki <keiichi @ nanap.org> wrote:

圭一> 他の application でエラーが発生したなどの質問をされたときに、 
圭一> load されている APEL のバージョンを簡単に調べてもらえるので、便
圭一> 利ではないかと思います。

総論賛成ということなので、各論に入りましょう。


守岡> (1) Version 名を調べるための機構を付ける

守岡>  (1-1) どこに付けるか?

守岡>   (1-1-4) version 名を記載するための module を新設し、APEL の各
守岡>		module はそれを require するようにする

守岡>  (1-2) どのような界面を用いるか?

守岡>   (1-2-2) 関数

守岡>  (1-3) code-name は付けるか?

圭一> これはどちらでも構いませんが、 APEL には要らないような気がします。


もし、APEL に version 名関連の機構を入れるなら、現在、FLIM に入れてい
る mime-product-* と同等の機能を持つ機構を実装し、FLIM/SEMI ではそれを
使うのが良いかなと思います。

そうすると、例えば、product という抽象型を考え、

product-name (PRODUCT)

    PRODUCT の名前を返す。

product-version (PRODUCT)

    PRODUCT の version 番号 (整数の list) を返す。

product-code-name (PRODUCT)

    PRODUCT の code name (文字列) を返す。

というような関数を用意すれば良いでしょうか。

また、PRODUCT の実体は vector だとしても、定数を直接見せる(ことを保証
する)のは後々厄介ですから、

define-product (NAME VERSION &optional CODE-NAME)

    名前が文字列 NAME, version 番号が VERSION (整数の list) である
    product を定義し、その product object を返す。

    CODE-NAME は code name を表す文字列である。

find-product (NAME)

    NAME に対応する product を返す。

    見付からなかった場合は nil を返す。

みたいなのを設け、内部表現を隠蔽するのが良いかも知れません。

例えば、

(define-product "APEL" (9 23) "Nippori")

という風に定義し、

(product-version (find-product "APEL"))

で APEL の version を得ることができるという訳です。

;; 実体は例えば hash (XEmacs, Emacs 21) とか obarray で。


あるいは、

provide-product (FEATURE NAME &optional VERSION CODE-NAME)

    FEATURE が product 情報付き feature であることを告知する。

    NAME は product の名前を表す文字列である。

    NAME に対応する product が存在しない場合、NAME に対応する product
    object を生成する。この時、VERSION は番号を表す整数の list であり、
    CODE-NAME は code name を表す文字列である。

find-product-by-feature (FEATURE)

    FEATURE に対応する product を返す。

    見付からなかった場合は nil を返す。

というようなものを設け、feature と対応させると良いかも知れません。

例えば、

(require 'poe)

:

(provide-product 'poem "APEL")

みたいに書いて、poem が APEL の一部であることを宣言できます。


こういうのと

(provide-product 'product "APEL" '(9 23) "Nippori")

が入った product.el を設け、(require 'product) することで、こうした
service が利用できます。


;; なんかやりすぎな気がしますが。(^_^;

;;; おまけに方向があさってに入ってしまった気も。(^_^;;


というのが私の案ですが、他の方、特に管理人の御意見をお伺いしたいです。

;; ここで述べた案は議論の叩き台として挙げただけなので、あんまり因われ
;; ないでください。

-- 
┯━…‥・懐かしい未来の記憶をふと思い出しかけた・‥…━━┯━━━┯━
││ ─ │  ─  /    ─   ┼─     ┬                ─   ─┼ ┬┴─
┼┼─┼|〓━─┼ 守岡 知彦 (MORIOKA Tomohiko) <tomo @ etl.go.jp>─ ─┬
┻┻━┻━┷━━━━━━━━━━━━━━━━━━━━━━━━━━━━━




More information about the APEL-ja mailing list