* 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 }