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