« 焦り、あるいは無力感 | メイン | ひさびさに 「 欲しい 」 »

2007年01月20日

68K, ARMlet, Simulator でソースコード共有

...みたいなことをやっていた。ふぅ。

 これまで作った ARMlet 搭載アプリでは、同じことをやるロジックでも 68K、ARMlet、Simulator用 DLL で異なるソースコードを用意していたんですね。ARMlet 部分のロジックが小さかったからそれでも問題なかったわけです。

 しかし。今作っているアプリ、ARMlet 部分が相当な大きさになるのですよ。そうなると、ソースファイルが別だと管理上大変になります、と。現時点でそれが目に見えちゃっているものだから何とかしましょうと。そんなわけで頑張ってみました。

 基本的には、昔 「 ARMletへの道 」 で書いた発想はそのまま使います。しかし、それぞれの環境用に作成した派生クラスでは実際のインプレ用クラスの処理を呼ぶだけになります。で、そのインプレ用クラスが 68K、ARMlet、Simulator用 DLLでソースコードを共有するわけですね。ARMlet のリソースを取得して実行したり、Windows DLL を呼び出したりするような環境固有の部分だけを個別化して、それ以外は極力共通化しましょうと。うん。

 ちょっと問題になったのが、ARMlet や Simulator用 DLL から Palm OS API を呼び出すときにコールバックを使用しなければならないこと。全体的にソースコードを共有するには、68K コード側で足並みを揃える必要があります。ARMlet と DLL では、陰郎が以前 PPL で書いた 「 【C/C++】 ARMlet での Palm OS API の呼出し方 」 で紹介した PalmOSAPI クラスを使用していますから、68K 側では inline で本物の Palm OS API を呼び出すような極薄のラッパーとしてこのクラスを個別化してやることで対処しました。結果として全体的な共通化を実現するためにプリプロセッサディレクティブをいくつか使用してしまいましたが、将来的にも混乱をきたすほどのものではないと判断 ( C++ プログラマにはプリプロセッサを駆使したマクロハッキングは苦痛なのです )。

 ...さぁこれで準備は整った...はず。

投稿者 kagelow : 2007年01月20日 00:00

トラックバック

このエントリーのトラックバックURL:
http://www.project-enigma.jp/members/kagelow/locus/mt-tb.cgi/473

コメント

コメントがあればどうぞ




保存しますか?




kagelow home へ