1: 2011-03-09 (水) 11:43:53 k-tan |
現: 2024-01-08 (月) 12:58:53 lina |
| *** ドライバ関数群 [#za94daa3] | | *** ドライバ関数群 [#za94daa3] |
| -[01f以降] 各OSのmain関数 | | -[01f以降] 各OSのmain関数 |
- | --この関数は、ドライバに必要な初期化を行って、さらに bl_init(); で blike の内部を初期化したのち、 blMain(); を呼び出す。 | + | --この関数では、ドライバに必要な初期化を行って、 bl_main(); を呼び出す。 |
- | --もし blMain(); から帰ってきた場合は、アプリの終了が期待されているので、速やかにドライバの終了処理や bl_exit(); で blike の内部の終了処理を完了させたのち、アプリそのものをそのOSのやり方で終了する。現状では終了コードは渡されないので、常に正常終了でかまわない。 | + | --もし bl_main(); から帰ってきた場合は、アプリの終了が期待されているので、速やかにドライバの終了処理をして、アプリそのものをそのOSのやり方で終了する。現状では bl_main() からは常に0が返るので、常に正常終了でかまわない。 |
| | | |
| -[01f以降] void *bld_malloc(unsigned int bytes) | | -[01f以降] void *bld_malloc(unsigned int bytes) |
- | --この関数は、そのOSにおけるメモリ確保を期待している。確保に失敗した場合は NULL (0) を返してほしい。 | + | --この関数は、そのOSにおけるメモリ確保を期待している。確保に失敗した場合は NULL を返してほしい。 |
| | | |
| -[01f以降] void bld_free(void *p, unsigned int bytes) | | -[01f以降] void bld_free(void *p, unsigned int bytes) |
| | | |
| -[01f以降] void bld_flshWin(int sx, int sy, int x0, int y0) | | -[01f以降] void bld_flshWin(int sx, int sy, int x0, int y0) |
- | --この関数は、イメージバッファ内の指定された範囲のフラッシュを期待している。sxやsyが0以下になるとか、画面外のピクセルが含まれてしまうなど、そういうやっかいなパラメータを渡すことはないので、その辺はドライバ関数が心配する必要はない。 | + | --この関数は、イメージバッファ内の指定された範囲のフラッシュを期待している。ウィンドウをオープンしてないのにフラッシュが呼ばれるとか、sxやsyが0以下になるとか、ウィンドウ外のピクセルが含まれてしまうなど、そういうやっかいな挙動はないので、その辺はドライバ関数が心配する必要はない。 |
| --setMode(BL_DBGFLSH); では、不正なカラーコード(0x000000未満とか0xffffffより大きいとか)を渡さないようになっている。リリースモードの場合は、チェックを省略しているので、もしかしたら渡してしまうかもしれないが、しかしとりあえず常に不正なカラーコードが来ることはないと仮定していいと思われる。 | | --setMode(BL_DBGFLSH); では、不正なカラーコード(0x000000未満とか0xffffffより大きいとか)を渡さないようになっている。リリースモードの場合は、チェックを省略しているので、もしかしたら渡してしまうかもしれないが、しかしとりあえず常に不正なカラーコードが来ることはないと仮定していいと思われる。 |
| ---デバッグが完了しないうちにリリースモードを指定するほうがおかしいので。 | | ---デバッグが完了しないうちにリリースモードを指定するほうがおかしいので。 |
| + | |
| + | -[01f以降] int bld_getSeed() |
| + | --この関数は、デフォルトの乱数の種を計算するためのものである。できれば起動するごとに異なる値が返されることが望ましい(「はりぼてOS」ではいい方法がなかったので常に1を返している)。 |
| + | |
| + | -[01f以降] void bld_initFont() |
| + | --この関数は、デフォルトのフォントをセットするためのものである。これはOSによっては8x16ドットのフォントを提供してくれるかもしれないと思って、サイズ節約のためにつけられている。もしそのようなAPIを持たないOSであったり、もしくはフォントが違うとか、APIはあるが仕様がよく分からないといった場合は、以下のような実装でかまわない。 |
| + | void bld_initFont() |
| + | { |
| + | bl_initFont(); |
| + | bl_work.mod |= BL_READYFONTS; |
| + | return; |
| + | } |
| + | --むしろ、現状ではフォントのロード方法がきちんと決まっていないので、上記以外の実装は危険である。 |
| + | |
| + | -[01f以降] void bld_flshSys() |
| + | --この関数は、ドライバが状態変化などを検出し、それに応対することを期待している。もし何もすることがないのなら(状態変化がないとか、もしくは割り込み駆動型のドライバであるとか)、もちろん何もしないですぐに return; してほしい。 |
| + | |
| + | -[01f以降] void bld_waitNF() |
| + | --この関数は、CPUの負荷が下がる程度に、少しの間休んでくれることを期待している。あまり長く休まれてしまうと、 wait() の時間分解能が落ちる。かといって休む時間が短いと仕事がないのにもかかわらず負荷が下げられない。 |
| + | |
| + | -[01f以降] int bld_vsnprintf(char *b, int n, const char *f, va_list ap) |
| + | --この関数は vsnprintf() を実行するためのものである。これはOSによってはこの関数をAPIやDLLで提供してくれるかもしれないと思って、サイズ節約のためにつけられている。もしそのようなAPIを持たないOSであれば、そのうちblike側で簡易代用関数を用意するのでそれを使ってほしい。 |