1 #ifndef OT_LAYOUT_GPOS_MARKLIGPOS_HH 2 #define OT_LAYOUT_GPOS_MARKLIGPOS_HH 3 4 #include "MarkLigPosFormat1.hh" 5 6 namespace OT { 7 namespace Layout { 8 namespace GPOS_impl { 9 10 struct MarkLigPos 11 { 12 protected: 13 union { 14 HBUINT16 format; /* Format identifier */ 15 MarkLigPosFormat1_2<SmallTypes> format1; 16 #ifndef HB_NO_BEYOND_64K 17 MarkLigPosFormat1_2<MediumTypes> format2; 18 #endif 19 } u; 20 21 public: 22 template <typename context_t, typename ...Ts> dispatchOT::Layout::GPOS_impl::MarkLigPos23 typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const 24 { 25 TRACE_DISPATCH (this, u.format); 26 if (unlikely (!c->may_dispatch (this, &u.format))) return_trace (c->no_dispatch_return_value ()); 27 switch (u.format) { 28 case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...)); 29 #ifndef HB_NO_BEYOND_64K 30 case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...)); 31 #endif 32 default:return_trace (c->default_return_value ()); 33 } 34 } 35 }; 36 37 } 38 } 39 } 40 41 #endif /* OT_LAYOUT_GPOS_MARKLIGPOS_HH */ 42