planetary days,

不惑とか嘘だよ。惑う惑う。ふらふらと。

ポインターを使わないWidget

2004年06月02日 | (`・ω・´)
Widgetと言えば、ややこしい初期化手続きやオブジェクトの管理が付き物だったのだが、このZeroMemoryWidgetではスタック以外のメモリー消費をゼロにしたという。
サンプル(以下に示す)を見れば一目瞭然、new Handlerすら無い。
ヒントとなったのは、HTML+ECMAScriptなどのスクリプトによるWidgetの動的生成だが、複数の記述言語を使用しなくても良いように考え、GDK(Gtkじゃない)を描画に用いた関数呼出でWidget群を構築したのだという。

[Hello World]
#include "zmw.h"
void hello world(void)
{ static GdkWindow  w = NULL ;
ZMW(zmw window(&w))
{ zmw text("Hello World!") ;
} }

int main(int argc, char  argv[])
{ zmw run(argc, argv, hello world) ;
return 0 ;
}

面倒なイベント処理も、Gtkと比べるとこの通り。

[event(Gtk)]
void handler destroy(GtkWidget  widget, gpointer data)
{
printf ("ENDn") ;
exit (0) ;
}
...
button = gtk button new with label("Quit");
gtk signal connect(GTK OBJECT(button), "clicked",
GTK SIGNAL FUNC(handler destroy), NULL);

[event(ZMW)]
zmw button("Quit") ;
if ( exit allowed && zmw activated() ) {
printf ("ENDn") ;
exit (0) ;
} if ( zmw tip visible () ) {
ZMW( zmw window popup(&window tip) ) {
zmw text("Quit the program") ;
}}

これは、お手軽でいいかもね。
コメント (2)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« モバイダー、SealOnline運営... | トップ | 2次元チェック »
最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
ウィジェット (FOJY)
2008-04-19 12:04:32
こんにちは。
テクマクマヤコン、エクマスクリプトは仕事でおぼえるチャンスが来そうで来なかったので、残念です。
ところでGDkと、perlのグラフィック系モジュール「GD」とは関係あるのでしょうか・・勉強不足で申し訳ないす。。拝見した文法がモロperlなので・・

http://search.cpan.org/~allenday/CGI-Widget-0.15/

くだらない書き込みでスミマセンでした
m(_ _)m
返信する
元記事削除のため (ぺき~゜)
2008-04-19 12:10:56
コメントスパムが酷いので、元記事を作成しなおしました。
FOJYさんのコメントの日付が変なのはそのせいです。

もし、これでもコメントスパムが続くようなら、記事削除しかないかなあ。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。