[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[b-free: 994] Re: C++ と GUI+α
最近私は、BTRON1 用 C++ Frame work を作ろうかと模索中です。
もうすぐテストが終わるので、春休み中になんとか作業を
進めたいな、と思ってます。
まずは TAD のほうをやって GUI 関係は後からにしようかと思っています。
/* In [b-free: 986] C++ と GUI+α
Hideaki Suzuki <h1suzuki@bridgew.edu> Wrote: */
|C++ については GUI 処理系は、標準と呼ぶものをみたことがないので、よくわ
|かりませんが、BTRON の GUI の Class 化は比較的簡単のはずです。実際、
|FTRON の Lib にも 1B の標準 C library に C++ の class を被せたものがあり
|ますし、僕 BTRON1 System Call から Window の class は一時期作っています
|が、特に大きな問題には直面しませんでした。
私も Aki さんの言うように、GUI 関係はそんなに難しくないと
思います。他の OS 向けの Frame work を参考にできますしね。
|Class にするのが難しいのはむしろ、TAD で、こいつは Link を何とかしない
Link は仮身セグメントと一緒に取り扱うのが良いと思います
(つまりトレーと同じ方式)。
TAD を取り出したり入れたりする対象としては
とりあえずは実身とトレーを想定しています。
(Window に送ったら描画する、といったものは今のところパス)
BTRON1では、実身とトレーの扱いがまるっきり異なるので、
抽象化がとてもやりにくいですが、なんとかしなければなりません
一応、私の案(まだまだ不十分):
実身とトレーを抽象化したものを TADStream とします。
TADStream を継承した class には readSegment() と writeSegment() を
実装する必要があります。
TADStream の sub class がそれぞれ byte列を解析したり
セグメントを byte列に展開するのは無駄なので、
TAD の parsing を助ける TADParser を作り、
そこに委譲することにします。
TADParser を使いたい class は readByte() と writeByte() を実装している
必要があります。
Segment という抽象クラスがあり、
各segment は Segment を継承します。かなりの class の数になりそうです。
文字は 可変長segment と 可変長segment に挟まれた文字の列を
ひとまとまりに見て StringSegment とします。
|と、だめですね。後もう一つ、考えられる障害としては、Databox があります
データボックスは、システムのものを使うのをやめて、
新たなリソース管理の手段を考えても良いのではないでしょうか。
どうせプログラムは作り直しになるのですから。
なぜ BTRON1 はデータボックスをデータボックス独自のデータ構造に
したのでしょうか。TAD の枠にはまった形で作れば
良かったのに、と思います。
ついでに言えば、フォントも実行オブジェクトも TAD のセグメントにして、
実身のレコードには TAD しか書き込めないようにすれば良かったのですが。
===
落合秀俊 名古屋大学工学部情報工学科
h953046b@ice.nuie.nagoya-u.ac.jp