Merge pull request #4775 from jmarshallnz/empty_episode_playcount
[vuplus_xbmc] / xbmc / windowing / DllXKBCommon.h
1 #pragma once
2
3 /*
4  *      Copyright (C) 2005-2013 Team XBMC
5  *      http://xbmc.org
6  *
7  *  This Program is free software; you can redistribute it and/or modify
8  *  it under the terms of the GNU General Public License as published by
9  *  the Free Software Foundation; either version 2, or (at your option)
10  *  any later version.
11  *
12  *  This Program is distributed in the hope that it will be useful,
13  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  *  GNU General Public License for more details.
16  *
17  *  You should have received a copy of the GNU General Public License
18  *  along with XBMC; see the file COPYING.  If not, see
19  *  <http://www.gnu.org/licenses/>.
20  *
21  */
22
23 #if (defined HAVE_CONFIG_H) && (!defined TARGET_WINDOWS)
24   #include "config.h"
25 #endif
26 #include <xkbcommon/xkbcommon.h>
27 #include "utils/log.h"
28 #include "DynamicDll.h"
29
30 class IDllXKBCommon
31 {
32 public:
33   virtual ~IDllXKBCommon() {}
34   
35   virtual struct xkb_context * xkb_context_new(enum xkb_context_flags) = 0;
36   virtual void xkb_context_unref(struct xkb_context *) = 0;
37   virtual struct xkb_keymap * xkb_keymap_new_from_string(struct xkb_context *,
38                                                          const char *,
39                                                          enum xkb_keymap_format,
40                                                          enum xkb_keymap_compile_flags) = 0;
41   virtual struct xkb_keymap * xkb_keymap_new_from_names(struct xkb_context *,
42                                                         const struct xkb_rule_names *,
43                                                         enum xkb_keymap_compile_flags) = 0;
44   virtual xkb_mod_index_t xkb_keymap_mod_get_index(struct xkb_keymap *, 
45                                                    const char *) = 0;
46   virtual void xkb_keymap_unref(struct xkb_keymap *) = 0;
47   virtual struct xkb_state * xkb_state_new(struct xkb_keymap *) = 0;
48   virtual xkb_mod_mask_t xkb_state_serialize_mods(struct xkb_state *,
49                                                   enum xkb_state_component) = 0;
50   virtual enum xkb_state_component xkb_state_update_mask (struct xkb_state *,
51                                                           xkb_mod_mask_t,
52                                                           xkb_mod_mask_t,
53                                                           xkb_mod_mask_t,
54                                                           xkb_layout_index_t,
55                                                           xkb_layout_index_t,
56                                                           xkb_layout_index_t) = 0;
57   virtual uint32_t xkb_state_key_get_syms(struct xkb_state *,
58                                           uint32_t,
59                                           const xkb_keysym_t **) = 0;
60   virtual void xkb_state_unref(struct xkb_state *) = 0;
61 };
62
63 class DllXKBCommon : public DllDynamic, public IDllXKBCommon
64 {
65   DECLARE_DLL_WRAPPER(DllXKBCommon, DLL_PATH_XKBCOMMON)
66   
67   DEFINE_METHOD1(struct xkb_context *, xkb_context_new, (enum xkb_context_flags p1));
68   DEFINE_METHOD1(void, xkb_context_unref, (struct xkb_context *p1));
69   DEFINE_METHOD4(struct xkb_keymap *, xkb_keymap_new_from_string, (struct xkb_context *p1, const char *p2, enum xkb_keymap_format p3, enum xkb_keymap_compile_flags p4));
70   DEFINE_METHOD3(struct xkb_keymap *, xkb_keymap_new_from_names, (struct xkb_context *p1, const struct xkb_rule_names *p2, enum xkb_keymap_compile_flags p3));
71   DEFINE_METHOD2(xkb_mod_index_t, xkb_keymap_mod_get_index, (struct xkb_keymap *p1, const char *p2));
72   DEFINE_METHOD1(void, xkb_keymap_unref, (struct xkb_keymap *p1));
73   DEFINE_METHOD1(struct xkb_state *, xkb_state_new, (struct xkb_keymap *p1));
74   DEFINE_METHOD2(xkb_mod_mask_t, xkb_state_serialize_mods, (struct xkb_state *p1, enum xkb_state_component p2));
75   DEFINE_METHOD7(enum xkb_state_component, xkb_state_update_mask, (struct xkb_state *p1, xkb_mod_mask_t p2, xkb_mod_mask_t p3, xkb_mod_mask_t p4, xkb_layout_index_t p5, xkb_layout_index_t p6, xkb_layout_index_t p7));
76   DEFINE_METHOD3(uint32_t, xkb_state_key_get_syms, (struct xkb_state *p1, uint32_t p2, const xkb_keysym_t **p3));
77   DEFINE_METHOD1(void, xkb_state_unref, (struct xkb_state *p1));
78   
79   BEGIN_METHOD_RESOLVE()
80     RESOLVE_METHOD(xkb_context_new)
81     RESOLVE_METHOD(xkb_context_unref)
82     RESOLVE_METHOD(xkb_keymap_new_from_string)
83     RESOLVE_METHOD(xkb_keymap_new_from_names)
84     RESOLVE_METHOD(xkb_keymap_mod_get_index)
85     RESOLVE_METHOD(xkb_keymap_unref)
86     RESOLVE_METHOD(xkb_state_new)
87     RESOLVE_METHOD(xkb_state_serialize_mods)
88     RESOLVE_METHOD(xkb_state_update_mask)
89     RESOLVE_METHOD(xkb_state_key_get_syms)
90     RESOLVE_METHOD(xkb_state_unref)
91   END_METHOD_RESOLVE()
92 };