aclib #2

  • (by K, 2020.09.08)

(1) ライブラリが提供する型

AInt8, AInt8a8bit符号付き整数値を保持できる型
AInt16, AInt16a16bit符号付き整数値を保持できる型
AInt32, AInt32a32bit符号付き整数値を保持できる型
AInt64, AInt64a64bit符号付き整数値を保持できる型
AInt, AIntaポインタのビット幅と同じかそれ以上の整数型
va_liststdarg系マクロのための型
AWindow *ウィンドウハンドル
  • AInt系の型は、保持できることを保証しているだけなので、実際はそれよりも大きいビット数である可能性はありうる(環境依存)。したがって正確なサイズはsizeofしなければわからない。
  • 末尾にaがついている方はarray用という意味。aが付かないほうは、CPUの都合を優先してサイズを大きめにとる(たとえば、x86ではAInt16はshortではなくintにする)。
  • 一方で、AInt16aでは、ちゃんとshortになる。aは中規模・大規模array用なので、CPUの都合よりもサイズを切り詰めることのほうを優先する。

(2)ライブラリが提供する関数・マクロ

  • グラフィック系
    AWindow *aOpenWin(AInt16 xsiz, AInt16 ysiz, const char *t, AInt8 autoClose)ウィンドウを開く、指定した大きさはウィンドウの大きさではなく描画可能域の大きさである
    void aCloseWin(AWindow *w)ウィンドウを閉じる
    void aSetPix0(AWindow *w, AInt16 x, AInt16 y, AInt32 c)ウィンドウに1ピクセルの点を打つ(必ず画面内)
    void aSetPix(AWindow *w, AInt32 x, AInt32 y, AInt32 c)ウィンドウに1ピクセルの点を打つ
    void aFillRect0(AWindow *w, AInt16 sx, AInt16 sy, AInt16 x0, AInt16 y0, AInt32 c)ウィンドウに塗りつぶした長方形を描画する(必ず画面内)
    void aFillRect(AWindow *w, AInt32 sx, AInt32 sy, AInt32 x0, AInt32 y0, AInt32 c)ウィンドウに塗りつぶした長方形を描画する
    void aDrawRect0(AWindow *w, AInt16 sx, AInt16 sy, AInt16 x0, AInt16 y0, AInt32 c)ウィンドウに枠だけの長方形を描画する(必ず画面内)
    void aDrawRect(AWindow *w, AInt32 sx, AInt32 sy, AInt32 x0, AInt32 y0, AInt32 c)ウィンドウに枠だけの長方形を描画する
    void aFillOval0(AWindow *w, AInt16 sx, AInt16 sy, AInt16 x0, AInt16 y0, AInt32 c)ウィンドウに塗りつぶした楕円形を描画する(必ず画面内)
    void aFillOval(AWindow *w, AInt32 sx, AInt32 sy, AInt32 x0, AInt32 y0, AInt32 c)ウィンドウに塗りつぶした楕円形を描画する
    void aDrawOval(AWindow *w, AInt32 sx, AInt32 sy, AInt32 x0, AInt32 y0, AInt32 c)ウィンドウに枠だけの楕円形を描画する
    void aDrawLine0(AWindow *w, AInt16 x0, AInt16 y0, AInt16 x1, AInt16 y1, AInt32 c)ウィンドウに直線を描画する(必ず画面内)
    void aDrawLine(AWindow *w, AInt32 x0, AInt32 y0, AInt32 x1, AInt32 y1, AInt32 c)ウィンドウに直線を描画する
    void aDrawStr0(AWindow *w, AInt16 x, AInt16 y, AInt32 c, AInt32 b, const char *s)文字列の描画
    void aDrawStr(AWindow *w, AInt32 x, AInt32 y, AInt32 c, AInt32 b, const char *s)文字列の描画
    void aFill(AWindow *w, AInt32 x, AInt32 y, AInt32 c)塗りつぶし
    void aFlushAll0(AWindow *w)描画内容を画面に反映させる
    void aFlushAll(AWindow *w)描画内容を画面に反映させる
    void aLeapFlushAll0(AWindow *w, AInt32 msec)描画内容を画面に反映させる
    void aLeapFlushAll(AWindow *w, AInt32 msec)描画内容を画面に反映させる
    • aSetPix0()は画面内への描画のみを想定している。デバッグモードならチェックするが、画面外の場合は問答無用で強制エラー終了する。描画モード設定は無視され、常にSETで描画する。描画ルーチンはコンパクトだし高速である。
    • aSetPix()は画面外になるかもしれないことも想定していて、デバッグモードでなくてもチェックし、画面外の場合は単に描画しない。エラーにもならない。また描画の際にはSET/OR/AND/XORの設定も反映される。
    • aFillRect0()、aFillRect()についても同様の仕様になっている。
    • aDrawRect0()、aDrawRect()についても同様の仕様になっている。
    • aFillOval0()、aFillOval()についても同様の仕様になっている。
    • aDrawOval0()は提供されない(楕円の描画処理は高負荷なので、ちょっとチェックが減ってもほとんど速度に影響しないため)。
    • aDrawLine0()、aDrawLine()についても同様の仕様になっている。
    • aDrawStr0()、aDrawStr()についても同様の仕様になっている。
  • 入力系
  • メモリ管理系
    void *aMalloc(AInt sz)NULLを返すことはないmalloc
    void *aMalloc0(AInt sz)メモリがなければNULLを返すことを許されるmalloc
    void aFree(void *p, AInt sz)free
    void aFree0(void *p, AInt sz)NULLを渡さないことが保証されているfree
  • stdarg系
    va_arg
    va_copy
    va_end
    va_start
  • 雑関数群
    int aGetMsb(AInt i)
    int aPopCnt(AInt i)

(3) 有効な-Dオプション

-DADEBUGデバッグモード
-DANOUSE_ATERRMSGaSetAtErrExitMsg()を無視する代わりにバイナリをコンパクトにする
-DANOUSE_FASTMALLOC高性能mallocを使わない代わりにコンパクトにする

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-09-15 (火) 11:07:18 (72d)