1// Copyright 2014 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// This file provides forward declarations for XPC symbols that are not
6// present in the 10.6 SDK. It uses generate_stubs to produce code to
7// dynamically load the libxpc.dylib library and set up a stub table, with
8// the same names as the real XPC functions.
9
10#ifndef SANDBOX_MAC_XPC_H_
11#define SANDBOX_MAC_XPC_H_
12
13#include <AvailabilityMacros.h>
14#include <mach/mach.h>
15
16#include "sandbox/sandbox_export.h"
17
18// Declares XPC object types. This includes <xpc/xpc.h> if available.
19#include "sandbox/mac/xpc_stubs_header.fragment"
20
21#if !defined(MAC_OS_X_VERSION_10_7) || \
22    MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
23
24// C++ library loader.
25#include "sandbox/mac/xpc_stubs.h"
26
27extern "C" {
28// Signatures for XPC public functions that are loaded by xpc_stubs.h.
29#include "sandbox/mac/xpc_stubs.sig"
30// Signatures for private XPC functions.
31#include "sandbox/mac/xpc_private_stubs.sig"
32}  // extern "C"
33
34#else
35
36// Signatures for private XPC functions.
37extern "C" {
38#include "sandbox/mac/xpc_private_stubs.sig"
39}  // extern "C"
40
41#endif
42
43namespace sandbox {
44
45// Dynamically loads the XPC library.
46bool SANDBOX_EXPORT InitializeXPC();
47
48}  // namespace sandbox
49
50#endif  // SANDBOX_MAC_XPC_H_
51