<%include file="__header.mako" /> #include #include "${name}_mock.hpp" static I${name}_mock *s_instance = nullptr; I${name}_mock::I${name}_mock() { if(s_instance != nullptr) { throw std::runtime_error("Creating a second instance of mock object"); } s_instance = this; } I${name}_mock::~I${name}_mock() { // destructors shouldn't throw exceptions s_instance = nullptr; } % for fn in functions: ${fn['return']} ${name}_${fn['name']}(${ ", ".join(fn['arguments']) }) { if(s_instance == nullptr) { throw std::runtime_error("No mock created to handle function ${name}_${fn['name']}"); } return s_instance->${fn['name']}(${ ", ".join(fn['argument_names']) }); } % endfor