#include <memory>
#include <vector>
typedef int DWORD;
struct CD3DFont {
CD3DFont(const char * szFontName,int FontHeight,DWORD dwCreateFlags){}
void Initialize(char){}
void Invalidate(){}
};
const static char origIDirect3DDevice9='0';
struct CD3DInvalidator {
template<class T>
void operator()(T* ptr) const {
ptr->Invalidate();
delete ptr;
}
};
typedef std::unique_ptr<CD3DFont, CD3DInvalidator> 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));
}
I2luY2x1ZGUgPG1lbW9yeT4KI2luY2x1ZGUgPHZlY3Rvcj4KCnR5cGVkZWYgaW50IERXT1JEOwpzdHJ1Y3QgQ0QzREZvbnQgewogICAgQ0QzREZvbnQoY29uc3QgY2hhciAqIHN6Rm9udE5hbWUsaW50IEZvbnRIZWlnaHQsRFdPUkQgZHdDcmVhdGVGbGFncyl7fQogICAgdm9pZCBJbml0aWFsaXplKGNoYXIpe30KICAgIHZvaWQgSW52YWxpZGF0ZSgpe30KfTsKY29uc3Qgc3RhdGljIGNoYXIgb3JpZ0lEaXJlY3QzRERldmljZTk9JzAnOwoKCgoKc3RydWN0IENEM0RJbnZhbGlkYXRvciB7CiAgICB0ZW1wbGF0ZTxjbGFzcyBUPgogICAgdm9pZCBvcGVyYXRvcigpKFQqIHB0cikgY29uc3QgewogICAgICAgIHB0ci0+SW52YWxpZGF0ZSgpOwogICAgICAgIGRlbGV0ZSBwdHI7CiAgICB9Cn07CnR5cGVkZWYgc3RkOjp1bmlxdWVfcHRyPENEM0RGb250LCBDRDNESW52YWxpZGF0b3I+IGZvbnRfcHRyOwpmb250X3B0ciBUZXh0Q3JlYXRlKGNvbnN0IGNoYXIgKiBzekZvbnROYW1lLGludCBGb250SGVpZ2h0LERXT1JEIGR3Q3JlYXRlRmxhZ3MpCnsKICAgIENEM0RGb250KiBwdHIgPSBuZXcgQ0QzREZvbnQoc3pGb250TmFtZSxGb250SGVpZ2h0LGR3Q3JlYXRlRmxhZ3MpOwogICAgcHRyLT5Jbml0aWFsaXplKG9yaWdJRGlyZWN0M0REZXZpY2U5KTsKICAgIHJldHVybiBmb250X3B0cihwdHIpOwp9CgppbnQgbWFpbigpIHsKICAgIHN0ZDo6dmVjdG9yPGZvbnRfcHRyPiBmb250czsKICAgIGZvbnRzLnB1c2hfYmFjayhUZXh0Q3JlYXRlKCJ0aGluZyIsIDQzMTI0LCAwKSk7Cn0=