1#ifndef OT_LAYOUT_GSUB_REVERSECHAINSINGLESUBST_HH
2#define OT_LAYOUT_GSUB_REVERSECHAINSINGLESUBST_HH
3
4#include "Common.hh"
5#include "ReverseChainSingleSubstFormat1.hh"
6
7namespace OT {
8namespace Layout {
9namespace GSUB_impl {
10
11struct ReverseChainSingleSubst
12{
13 protected:
14 union {
15 HBUINT16 format; /* Format identifier */
16 ReverseChainSingleSubstFormat1 format1;
17 } u;
18
19 public:
20 template <typename context_t, typename ...Ts>
21 typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
22 {
23 if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value ();
24 TRACE_DISPATCH (this, u.format);
25 switch (u.format) {
26 case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
27 default:return_trace (c->default_return_value ());
28 }
29 }
30};
31
32}
33}
34}
35
36#endif /* HB_OT_LAYOUT_GSUB_REVERSECHAINSINGLESUBST_HH */
37