AMap11
(0)
- 連想配列を提供するクラス(AMap11ではインタフェースのみを提供)
- keyの長さはintptr_t単位で1つ分。valueの長さもintptr_t単位で1つ分。
(1) ver.1.00 [2024.09.20] (43行)
#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); }
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);
}