VirtualBox

source: vbox/trunk/include/VBox/VBoxCocoa.h@ 73768

Last change on this file since 73768 was 69107, checked in by vboxsync, 7 years ago

include/VBox/: (C) year

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 2.4 KB
Line 
1/** @file
2 * VBoxCocoa Helper
3 */
4
5/*
6 * Copyright (C) 2009-2017 Oracle Corporation
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * The contents of this file may alternatively be used under the terms
17 * of the Common Development and Distribution License Version 1.0
18 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
19 * VirtualBox OSE distribution, in which case the provisions of the
20 * CDDL are applicable instead of those of the GPL.
21 *
22 * You may elect to license modified versions of this file under the
23 * terms and conditions of either the GPL or the CDDL or both.
24 */
25
26#ifndef ___VBox_VBoxCocoa_h
27#define ___VBox_VBoxCocoa_h
28
29/** Macro which add a typedef of the given Cocoa class in an appropriate form
30 * for the current context. This means void* in the C/CPP context and
31 * NSWhatever* in the ObjC/ObjCPP context. Use
32 * NativeNSWhateverRef/ConstNativeNSWhateverRef when you reference the Cocoa
33 * type somewhere. The use of this prevents extensive casting of void* to the
34 * right type in the Cocoa context. */
35#ifdef __OBJC__
36# define ADD_COCOA_NATIVE_REF(CocoaClass) \
37 @class CocoaClass; \
38 typedef CocoaClass *Native##CocoaClass##Ref; \
39 typedef const CocoaClass *ConstNative##CocoaClass##Ref
40#else /* !__OBJC__ */
41# define ADD_COCOA_NATIVE_REF(CocoaClass) \
42 typedef void *Native##CocoaClass##Ref; \
43 typedef const void *ConstNative##CocoaClass##Ref
44#endif /* !__OBJC__ */
45
46
47/*
48 * Objective-C++ Helpers.
49 */
50#if defined(__OBJC__) && defined (__cplusplus)
51
52/* Global includes */
53# import <Foundation/NSAutoreleasePool.h>
54
55/** Helper class for automatic creation & destroying of a cocoa auto release
56 * pool. */
57class CocoaAutoreleasePool
58{
59public:
60 inline CocoaAutoreleasePool()
61 {
62 mPool = [[NSAutoreleasePool alloc] init];
63 }
64 inline ~CocoaAutoreleasePool()
65 {
66 [mPool release];
67 }
68
69private:
70 NSAutoreleasePool *mPool;
71};
72
73#endif /* __OBJC__ && __cplusplus */
74
75#endif /* !___VBox_VBoxCocoa_h */
76
Note: See TracBrowser for help on using the repository browser.

© 2023 Oracle
ContactPrivacy policyTerms of Use