* AMap11
-(by [[K]], 2024.09.20)


** (0)
-連想配列を提供するクラス(AMap11ではインタフェースのみを提供)
-keyの長さはintptr_t単位で1つ分。valueの長さもintptr_t単位で1つ分。

** (1) ver.1.00 [2024.09.20] (43行)
** (1) ver.1.00 [2024.09.20] (47行)

 #if 0 // AMemMan.c に移動済み.
 AClass(AMap11) {
     void *add, *del, *sch, *dst
     AInt n1, n, flags;
     AM *m;
 };
 #endif
 
 AStatic AMap11 *AMap11_dbgNam = 0;
 AInlineStatic void AMap11_dbgSetNam(AMap11 *w, const char *n) { aDbgSetNam(&AMap11_dbgNam, w, n); }
 AInlineStatic void AMap11_dbgDelNam(AMap11 *w) { aDbgDelNam(&AMap11_dbgNam, w); }
 AStatic void AMap11_err(AMap11 *w, const char *fnc, const char *f,...) { va_list ap; va_start(ap, f); aClassErr(&AM_dbgNam, w, fnc, f, ap); va_end(ap); }
 
 AInlineStatic void AMap11_add(AMap11 *w, void *k, void *v)
 {
     #if (ADbgLv >= 2)
         if (AMap11_sch(w, k, (void *) (AInt) 0xdeadbeef) != (void *) (AInt) 0xdeadbeef
              || AMap11_sch(w, k, (void *) (AInt) 0xdeaddead) != (void *) (AInt) 0xdeaddead)
             AMap11_err(w, "AMap11_add", "duplicate error: k=%d", (AInt) k);
     #endif
     void (*add)(void *, void *, void *);
     add = w->add; add(w, k, v);
 }
 
 AInlineStatic int AMap11_del(AMap11 *w, void *k)
 {
     int (*del)(void *, void *);
     del = w->del; return del(w, k);
 }
 
 AInlineStatic void *AMap11_sch(AMap11 *w, void *k, void *v0)
 {
     void *(*sch)(void *, void *, void *);
     sch = w->sch; return sch(w, k, v0);
 }
 
 AInlineStatic void AMap11_dst(AMap11 *w)
 {
     void (*dst)(void *);
     #if (ADbgLv >= 1)
         if ((w->flags & 8) != 0 && w->n > 0) AMap11_err(w, "AMap11_dst", "error: n=%d",  w->n);
     #endif
     dst = w->dst; dst(w);
     #if (ADbgLv >= 1)
         AMap11_dbgDelNam(w);
     #endif
 }



トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS