[debug] Allow return_trace() to return any type

This commit is contained in:
Behdad Esfahbod 2019-05-02 16:20:03 -07:00
parent 49b1c763a0
commit 7d497a3a92
1 changed files with 8 additions and 6 deletions

View File

@ -330,18 +330,20 @@ struct hb_auto_trace_t<0, ret_t>
const char *message, const char *message,
...) HB_PRINTF_FUNC(6, 7) {} ...) HB_PRINTF_FUNC(6, 7) {}
ret_t ret (ret_t v, template <typename T>
const char *func HB_UNUSED = nullptr, T ret (T&& v,
unsigned int line HB_UNUSED = 0) { return v; } const char *func HB_UNUSED = nullptr,
unsigned int line HB_UNUSED = 0) { return hb_forward<T> (v); }
}; };
/* For disabled tracing; optimize out everything. /* For disabled tracing; optimize out everything.
* https://github.com/harfbuzz/harfbuzz/pull/605 */ * https://github.com/harfbuzz/harfbuzz/pull/605 */
template <typename ret_t> template <typename ret_t>
struct hb_no_trace_t { struct hb_no_trace_t {
ret_t ret (ret_t v, template <typename T>
const char *func HB_UNUSED = "", T ret (T&& v,
unsigned int line HB_UNUSED = 0) { return v; } const char *func HB_UNUSED = nullptr,
unsigned int line HB_UNUSED = 0) { return hb_forward<T> (v); }
}; };
#define return_trace(RET) return trace.ret (RET, HB_FUNC, __LINE__) #define return_trace(RET) return trace.ret (RET, HB_FUNC, __LINE__)