1 #ifndef OT_LAYOUT_GPOS_PAIRPOS_HH
2 #define OT_LAYOUT_GPOS_PAIRPOS_HH
4 #include "PairPosFormat1.hh"
5 #include "PairPosFormat2.hh"
15 HBUINT16 format; /* Format identifier */
16 PairPosFormat1_3<SmallTypes> format1;
17 PairPosFormat2_4<SmallTypes> format2;
18 #ifndef HB_NO_BEYOND_64K
19 PairPosFormat1_3<MediumTypes> format3;
20 PairPosFormat2_4<MediumTypes> format4;
25 template <typename context_t, typename ...Ts>
26 typename context_t::return_t dispatch (context_t *c, Ts&&... ds) const
28 if (unlikely (!c->may_dispatch (this, &u.format))) return c->no_dispatch_return_value ();
29 TRACE_DISPATCH (this, u.format);
31 case 1: return_trace (c->dispatch (u.format1, std::forward<Ts> (ds)...));
32 case 2: return_trace (c->dispatch (u.format2, std::forward<Ts> (ds)...));
33 #ifndef HB_NO_BEYOND_64K
34 case 3: return_trace (c->dispatch (u.format3, std::forward<Ts> (ds)...));
35 case 4: return_trace (c->dispatch (u.format4, std::forward<Ts> (ds)...));
37 default:return_trace (c->default_return_value ());
46 #endif // OT_LAYOUT_GPOS_PAIRPOS_HH