Pepper_31_C_interfaces
ppb_ext_events_dev.h
Go to the documentation of this file.
1 /* Copyright (c) 2013 The Chromium Authors. All rights reserved.
2  * Use of this source code is governed by a BSD-style license that can be
3  * found in the LICENSE file.
4  */
5 
6 /* From extensions/dev/ppb_ext_events_dev.idl,
7  * modified Mon Mar 18 17:18:20 2013.
8  */
9 
10 #ifndef PPAPI_C_EXTENSIONS_DEV_PPB_EXT_EVENTS_DEV_H_
11 #define PPAPI_C_EXTENSIONS_DEV_PPB_EXT_EVENTS_DEV_H_
12 
13 #include "ppapi/c/pp_instance.h"
14 #include "ppapi/c/pp_macros.h"
15 #include "ppapi/c/pp_stdint.h"
16 
17 #define PPB_EXT_EVENTS_DEV_INTERFACE_0_1 "PPB_Ext_Events(Dev);0.1"
18 #define PPB_EXT_EVENTS_DEV_INTERFACE PPB_EXT_EVENTS_DEV_INTERFACE_0_1
19 
20 /**
21  * @file
22  */
23 
24 
25 /**
26  * @addtogroup Typedefs
27  * @{
28  */
29 /**
30  * Used to represent arbitrary C function pointers. Please note that usually
31  * the function that a <code>PP_Ext_GenericFuncType</code> pointer points to
32  * has a different signature than <code>void (*)()</code>.
33  */
34 typedef void (*PP_Ext_GenericFuncType)(void);
35 /**
36  * @}
37  */
38 
39 /**
40  * @addtogroup Structs
41  * @{
42  */
43 /**
44  * An event listener that can be registered with the browser and receive
45  * notifications via the callback function.
46  *
47  * A function is defined for each event type to return a properly-filled
48  * <code>PP_Ext_EventListener</code> struct, for example,
49  * <code>PP_Ext_Alarms_OnAlarm_Dev()</code>.
50  */
52  /**
53  * The name of the event to register to.
54  */
55  const char* event_name;
56  /**
57  * A callback function whose signature is determined by
58  * <code>event_name</code>. All calls will happen on the same thread as the
59  * one on which <code>AddListener()</code> is called.
60  */
62  /**
63  * An opaque pointer that will be passed to <code>func</code>.
64  */
65  void* user_data;
66 };
67 /**
68  * @}
69  */
70 
71 /**
72  * @addtogroup Interfaces
73  * @{
74  */
76  /**
77  * Registers a listener to an event.
78  *
79  * @param[in] instance A <code>PP_Instance</code> identifying one instance of
80  * a module.
81  * @param[in] listener A <code>PP_Ext_EventListener</code> struct.
82  *
83  * @return An listener ID, or 0 if failed.
84  */
85  uint32_t (*AddListener)(PP_Instance instance,
86  struct PP_Ext_EventListener listener);
87  /**
88  * Deregisters a listener.
89  *
90  * @param[in] instance A <code>PP_Instance</code> identifying one instance of
91  * a module.
92  * @param[in] listener_id The ID returned by <code>AddListener()</code>.
93  */
94  void (*RemoveListener)(PP_Instance instance, uint32_t listener_id);
95 };
96 
98 /**
99  * @}
100  */
101 
102 /**
103  * Creates a <code>PP_Ext_EventListener</code> struct.
104  *
105  * Usually you should not call it directly. Instead you should call those
106  * functions that return a <code>PP_Ext_EventListener</code> struct for a
107  * specific event type, for example, <code>PP_Ext_Alarms_OnAlarm_Dev()</code>.
108  */
110  const char* event_name,
112  void* user_data) {
113  struct PP_Ext_EventListener listener;
114  listener.event_name = event_name;
115  listener.func = func;
116  listener.user_data = user_data;
117  return listener;
118 }
119 #endif /* PPAPI_C_EXTENSIONS_DEV_PPB_EXT_EVENTS_DEV_H_ */
120 
void(* PP_Ext_GenericFuncType)(void)
#define PP_INLINE
Definition: pp_macros.h:46
PP_Ext_GenericFuncType func
PP_INLINE struct PP_Ext_EventListener PP_Ext_MakeEventListener(const char *event_name, PP_Ext_GenericFuncType func, void *user_data)
int32_t PP_Instance
Definition: pp_instance.h:34
void(* RemoveListener)(PP_Instance instance, uint32_t listener_id)
uint32_t(* AddListener)(PP_Instance instance, struct PP_Ext_EventListener listener)