view user/anatofuz/note/2021/01/09.md @ 20:3fd21f4cadc3

backup 2021-01-10
author autobackup
date Sun, 10 Jan 2021 00:10:03 +0900
parents
children
line wrap: on
line source

# 2021/01/09

```c
typedef struct AtomicT <T>{
    union Data* atomicTImpl;
    T newData;
    __code checkAndSet(Impl* atomicTImpl, T newData, __code next(...), __code fail(...));
    __code next(...);
    __code fail(...);
} AtomicT;
```

# tの置換
- Tの境界が指定されていない場合
    - 置き換えられるかの確認
    - 置き換えられそうならコードを生成する
        - 型(header)
        - CodeGear
- Tの境界が指定されている場合
    - 型チェック
        - data gearの同一性
        - primitive typeはwrapeperをいれる?
    - 置き換えられそうなら置換する

いずれにせよ.cbcと.hを生成する必要がありそう
    - 動的にコンパイルする必要があるので、CMakeをいじる必要性がありそう...