#include <memory>
struct CD3DFontDeleter {
void operator()(CD3DFont* ptr) const {
ptr->Invalidate();
delete ptr;
}
}
typedef std::unique_ptr<CD3DFont, CD3DFontDeleter> font_ptr;
font_ptr TextCreate(const char * szFontName,int FontHeight,DWORD dwCreateFlags)
{
CD3DFont* ptr = new CD3DFont(szFontName,FontHeight,dwCreateFlags);
ptr->Initialize(origIDirect3DDevice9);
return font_ptr(ptr);
}
int main() {
std::vector<font_ptr> fonts;
fonts.push_back(TextCreate("thing", 43124, 0));
}
I2luY2x1ZGUgPG1lbW9yeT4KCnN0cnVjdCBDRDNERm9udERlbGV0ZXIgewogICAgdm9pZCBvcGVyYXRvcigpKENEM0RGb250KiBwdHIpIGNvbnN0IHsKICAgICAgICBwdHItPkludmFsaWRhdGUoKTsKICAgICAgICBkZWxldGUgcHRyOwogICAgfQp9CnR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPENEM0RGb250LCBDRDNERm9udERlbGV0ZXI+IGZvbnRfcHRyOwpmb250X3B0ciBUZXh0Q3JlYXRlKGNvbnN0IGNoYXIgKiBzekZvbnROYW1lLGludCBGb250SGVpZ2h0LERXT1JEIGR3Q3JlYXRlRmxhZ3MpCnsKICAgIENEM0RGb250KiBwdHIgPSBuZXcgQ0QzREZvbnQoc3pGb250TmFtZSxGb250SGVpZ2h0LGR3Q3JlYXRlRmxhZ3MpOwogICAgcHRyLT5Jbml0aWFsaXplKG9yaWdJRGlyZWN0M0REZXZpY2U5KTsKICAgIHJldHVybiBmb250X3B0cihwdHIpOwp9CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6dmVjdG9yPGZvbnRfcHRyPiBmb250czsKICAgIGZvbnRzLnB1c2hfYmFjayhUZXh0Q3JlYXRlKCJ0aGluZyIsIDQzMTI0LCAwKSk7Cn0=