1 #ifndef OT_LAYOUT_GSUB_REVERSECHAINSINGLESUBST_HH 2 #define OT_LAYOUT_GSUB_REVERSECHAINSINGLESUBST_HH 3 4 #include "Common.hh" 5 #include "ReverseChainSingleSubstFormat1.hh" 6 7 namespace OT { 8 namespace Layout { 9 namespace GSUB_impl { 10 11 struct 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> dispatchOT::Layout::GSUB_impl::ReverseChainSingleSubst21 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