メインコンテンツまでスキップ

GC 管理の class

new を使えるようにする。

// -lgccpp
#include <gc_cpp.h>

struct Line : public gc_cleanup {
Line(int n, Line *prevl = nullptr) : linenumber(n), prev(prevl) {
if (prev) {
prev->next = this;
}
}
~Line() {}
Line(const Line &) = delete;
Line &operator=(const Line &) = delete;
};

順次 class 化して constructor と destructor を使えるようにしていく。 安全のため default constructor と copy constructor を使えないようにしておく。 TabBuffer, Buffer, Line, Anchor, FormList, HRequest, Str など。 これが済めば、member に std::string などを使えるようになる。 std::vector, std::unordered_map, std::list などでシンプル化を推進。