MANUAL 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. WonX のプログラム構造についての解説です.
  2. 改造するときの参考にしてください.(ライセンスはGPLなので,改造は自由です)
  3. ■ ファイル構成
  4. WonX はオブジェクト指向で書いてあり,クラス単位でファイルを分けてあります.
  5. ファイル自体は一つのクラスにつき3つずつあります.例えば X のウインドウを
  6. 管理するための XDisplay クラス用には,以下の3つのファイルがあります.
  7. XDisplay.h ... 外部公開用ヘッダファイル.XDisplay クラスを使用したい
  8. ときには,このファイルを include する.
  9. XDisplayP.h ... 外部に公開しないプライベートなヘッダファイル.
  10. 一般には include しない.デバッグ時などにメンバを直接
  11. 参照したいときに include するためのもの.
  12. XDisplay.c ... メンバ関数などの本体.
  13. クラスのメンバ変数は XDisplayP.h で定義してあるので,メンバを直接参照することは
  14. できません.必ずアクセス用のメンバ関数を通して参照します.値の設定も同様です.
  15. この他に,disp.c や text.c などのファイルがあります.これらは,
  16. WonderWitch の互換関数です.
  17. ■ オブジェクトのツリー
  18. オブジェクトは以下のようなツリー構造になっています.
  19. ┌─ WWColorMap
  20. ├─ WWPalette[16]
  21. ├─ WWCharacter[512]
  22. ┌─WWDisplay ─┼─ WWSprite[128]
  23. ┌─ WonXDisplay ──┤ ├─ WWScreen[2]
  24. │ └─XDisplay ├─ WWLCDPanel
  25. │ ├─ WWText
  26. │ └─ WWCursor
  27. │ ┌─ WWInterrupt
  28. WonX ─┼─ WonXSystem ───┼─ WWTimer[3]
  29. │ └─ UNIXTimer
  30. │ ┌─ WWSerialPort
  31. └─ WonXSerialPort ─┤
  32. └─ UNIXSerialPort
  33. WW という接頭語がつくクラスは WonderWitch 依存のものです.主に
  34. WonderSwan の状態情報を格納します.
  35. X という接頭語がつくクラスは X 依存のもの,UNIX という接頭語がつくクラスは
  36. UNIX 依存のものです.
  37. WonX という接頭語がつくクラスはそれらを統括するものです.
  38. ツリー構造を理解したかったら,各クラスの *P.h ファイルのメンバの定義と,
  39. *.c ファイルの *_Create() 関数を参照してください.
  40. ■ オブジェクトの生成
  41. 各クラスには,オブジェクトの生成用に,[クラス名]_Create() という
  42. 関数が用意されています.
  43. WonX_Create() が呼ばれると,内部で WonXDisplay_Create(), WonXSystem_Create(),
  44. WonXSerialPort_Create() が呼ばれ,子の WonXDisplay, WonXSystem,
  45. WonXSerialPort オブジェクトが生成されます.
  46. WonXDisplay_Create() が呼ばれると,内部で WWDisplay_Create(),
  47. XDisplay_Create() が呼ばれ,... というように続いて,すべてのツリーか
  48. 生成されます.
  49. オブジェクトを解放するときも同様なのですが,WonX_Destroy() が
  50. 呼ばれるタイミングが無いため,あまりちゃんと書いてません.
  51. WonderWitch 用の互換関数では,必ず先頭で,
  52. if (!WonX_IsCreated()) WonX_Create();
  53. のようなことをやっています.つまり,互換関数のどれかが最初に呼ばれたときに,
  54. WonX オブジェクトのツリーが作成されます.
  55. ■ メンバ関数
  56. クラスのメンバ関数は,[クラス名]_xxx() という名前になっています.
  57. ■ このファイルはここまでです