• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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