acl4の開発ログ #11

2026.04.11(土) #0

2026.04.11(土) #1

2026.04.11(土) #2

2026.04.12(日) #0

// tt0005a.c

#define a_Version 1
#include <acl4v1.c>

class_(Data) { SetElm elm[2]; int age; };

int main()
{
    Set0 index[2]; char *k;
    Set0_ini(_a_ &index[0], NULL);
    Set0_ini(_a_ &index[1], NULL);

    // nameだけではなく、phoneでもデータを検索できるようにした例.
    Data data[4], *p; int i;
    data[0].elm[0].k = "Kawai";    data[0].age = 20; data[0].elm[1].k = "090-8765-4321";
    data[1].elm[0].k = "Suzuki";   data[1].age = 22; data[1].elm[1].k = "0X0-XXXX-XXXX";
    data[2].elm[0].k = "Tanaka";   data[2].age = 25; data[2].elm[1].k = "0Y0-YYYY-YYYY";
    data[3].elm[0].k = "Yamamoto"; data[3].age = 30; data[3].elm[1].k = "0Z0-ZZZZ-ZZZZ";
    for (i = 0; i < 4; i++) {
        data[i].elm[0].n = strlen(data[i].elm[0].k);
        data[i].elm[1].n = strlen(data[i].elm[1].k);
        Set0_add(&index[0], &data[i].elm[0]);
        Set0_add(&index[1], &data[i].elm[1]);
    }

    k = "Tanaka"; p = Set0_findKn(&index[0], k, strlen(k));
    if (p == NULL) printf("name(key)=%s: not found\n", k);
    if (p != NULL) printf("name=%s age=%d phone=%s\n", (char *) p->elm[0].k, p->age, (char *) p->elm[1].k);

    k = "0X0-XXXX-XXXX"; p = ptrSub(Set0_findKn(&index[1], k, strlen(k)), sizeof (SetElm));
    if (p == NULL) printf("name(key)=%s: not found\n", k);
    if (p != NULL) printf("name=%s age=%d phone=%s\n", (char *) p->elm[0].k, p->age, (char *) p->elm[1].k);
  
    Set0_din(_a_ &index[0]);
//  Set0_din(_a_ &index[1]); // わざとdeinitを忘れてみる.
    a_malloc_debugList(_a);
    a_DbgObjInfTbl_debugList(_a);
    return 0;
}
// 実行結果.
>tt0005a
name=Tanaka age=25 phone=0Y0-YYYY-YYYY
name=Suzuki age=22 phone=0X0-XXXX-XXXX
tt0005a.c(35): malloc_debugList()
  [p:00afccf0 sz:24 / a4_0016.c(345)] ← [註]従来からのメモリリーク情報表示
tt0005a.c(36): DbgObjInfTbl_debugList()
  [VecChr / a4_0016.c(402)]  ← [註]acl4v1のオブジェクトリーク情報表示(new)
  [Set0 / tt0005a.c(10)]     ← [註]acl4v1のオブジェクトリーク情報表示(new)

2026.04.13(月) #0

2026.04.13(月) #1

2026.04.15(水) #0

2026.04.15(水) #1

こめんと欄


コメントお名前NameLink

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS