1/* Copyright (c) 2012 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#ifndef PPAPI_SIMPLE_PS_MAIN_H_
6#define PPAPI_SIMPLE_PS_MAIN_H_
7
8#include "ppapi_simple/ps.h"
9#include "ppapi_simple/ps_event.h"
10
11EXTERN_C_BEGIN
12
13typedef int (*PSMainFunc_t)(int argc, char *argv[]);
14
15/**
16 * PSMainCreate
17 *
18 * Constructs an instance SimpleInstance and configures it to call into
19 * the provided "main" function.
20 */
21void* PSMainCreate(PP_Instance inst, PSMainFunc_t entry_point);
22
23/**
24 * PSUserMainGet
25 *
26 * Prototype for the user provided function which retrieves the user's main
27 * function.
28 * This is normally defined using the PPAPI_SIMPLE_REGISTER_MAIN macro.
29 */
30PSMainFunc_t PSUserMainGet();
31
32/**
33 * PPAPI_SIMPLE_REGISTER_MAIN
34 *
35 * Constructs a PSInstance object and configures it to use call the provided
36 * 'main' function on its own thread once initialization is complete.
37 */
38#define PPAPI_SIMPLE_REGISTER_MAIN(main_func)     \
39  PSMainFunc_t PSUserMainGet() {                  \
40    return main_func;                             \
41  }                                               \
42  void* PSUserCreateInstance(PP_Instance inst) {  \
43    return PSMainCreate(inst, main_func);         \
44  }
45
46EXTERN_C_END
47
48#endif  /* PPAPI_SIMPLE_PS_MAIN_H_ */
49