#include class ListVector { struct Node { int prev; int next; }; int head; int tail; int free; Vector node; public: int GetHead() const { return head; } int GetTail() const { return tail; } int AddHead(); int AddTail(); void Unlink(int q); } int ListVector::AddHead() { if(free < 0) { int q = node.GetCount(); node.Add(); node.Top().prev = } } int ListVector::AddTail() { } void ListVector::Unlink(int q) { } struct ImageMaker { virtual String GetKey(); virtual Image Render(); virtual ~CachedImage(); }; struct ScaleRasterMaker { String data; int64 id; int cx; int cy; virtual String GetKey(); virtual Image Render(); }; String GetKey() { String s; s.Cat((const char *)&id, sizeof(id)); } Image ScaleRasterMaker::Render() { }