diff options
Diffstat (limited to 'SwifTools/Cocoa')
-rw-r--r-- | SwifTools/Cocoa/CocoaAction.h | 9 | ||||
-rw-r--r-- | SwifTools/Cocoa/CocoaAction.mm | 24 | ||||
-rw-r--r-- | SwifTools/Cocoa/CocoaUtil.h | 48 | ||||
-rw-r--r-- | SwifTools/Cocoa/SConscript | 2 |
4 files changed, 52 insertions, 31 deletions
diff --git a/SwifTools/Cocoa/CocoaAction.h b/SwifTools/Cocoa/CocoaAction.h index 0ef993e..8807f08 100644 --- a/SwifTools/Cocoa/CocoaAction.h +++ b/SwifTools/Cocoa/CocoaAction.h @@ -1,14 +1,15 @@ /* - * Copyright (c) 2010 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. + * Copyright (c) 2010-2016 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. */ #pragma once -#include <Cocoa/Cocoa.h> #include <boost/function.hpp> +#include <Cocoa/Cocoa.h> + @interface CocoaAction : NSObject /** diff --git a/SwifTools/Cocoa/CocoaAction.mm b/SwifTools/Cocoa/CocoaAction.mm index 7162cd2..341da2c 100644 --- a/SwifTools/Cocoa/CocoaAction.mm +++ b/SwifTools/Cocoa/CocoaAction.mm @@ -1,30 +1,30 @@ /* - * Copyright (c) 2010-2013 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. + * Copyright (c) 2010-2013 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. */ #include <SwifTools/Cocoa/CocoaAction.h> @implementation CocoaAction { - boost::function<void ()>* function; + boost::function<void ()>* function; } - (id) initWithFunction: (boost::function<void()>*) f { - if ((self = [super init])) { - function = f; - } - return self; + if ((self = [super init])) { + function = f; + } + return self; } - (void) dealloc { - delete function; - [super dealloc]; + delete function; + [super dealloc]; } - (void) doAction: (id) sender { - (void) sender; - (*function)(); + (void) sender; + (*function)(); } @end diff --git a/SwifTools/Cocoa/CocoaUtil.h b/SwifTools/Cocoa/CocoaUtil.h index 5bb3612..8c4dd64 100644 --- a/SwifTools/Cocoa/CocoaUtil.h +++ b/SwifTools/Cocoa/CocoaUtil.h @@ -1,27 +1,47 @@ /* - * Copyright (c) 2011 Remko Tronçon - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. + * Copyright (c) 2011-2016 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. */ #pragma once // Conversion utilities -#define NS2STDSTRING(a) (a == nil ? std::string() : std::string([a cStringUsingEncoding:NSUTF8StringEncoding])) -#define STD2NSSTRING(a) [NSString stringWithCString:a.c_str() encoding:NSUTF8StringEncoding] +namespace { + +inline std::string ns2StdString(NSString* _Nullable nsString); +inline std::string ns2StdString(NSString* _Nullable nsString) { + std::string stdString; + if (nsString != nil) { + stdString = std::string([nsString cStringUsingEncoding:NSUTF8StringEncoding]); + } + return stdString; +} + +inline NSString* _Nonnull std2NSString(const std::string& stdString); +inline NSString* _Nonnull std2NSString(const std::string& stdString) { + NSString* _Nullable nsString = [NSString stringWithUTF8String:stdString.c_str()]; + if (nsString == nil) { + nsString = @""; + } + // At this point nsString is guaranteed to be not null/nil. + return static_cast<NSString* _Nonnull>(nsString); +} + +} // Intrusive pointer for NSObjects -namespace boost { - inline void intrusive_ptr_add_ref(NSObject* object) { - [object retain]; - } - - inline void intrusive_ptr_release(NSObject* object) { - [object release]; - } +namespace boost { + inline void intrusive_ptr_add_ref(NSObject* _Nonnull object) { + [object retain]; + } + + inline void intrusive_ptr_release(NSObject* _Nonnull object) { + [object release]; + } } -// Including intrusive_ptr after ref/release methods to avoid compilation +// Including intrusive_ptr after ref/release methods to avoid compilation // errors with CLang #include <boost/intrusive_ptr.hpp> diff --git a/SwifTools/Cocoa/SConscript b/SwifTools/Cocoa/SConscript index 4ae4a07..f4bd286 100644 --- a/SwifTools/Cocoa/SConscript +++ b/SwifTools/Cocoa/SConscript @@ -2,7 +2,7 @@ Import("swiftools_env", "env") sources = [] if swiftools_env["PLATFORM"] == "darwin" and swiftools_env["target"] == "native" : - sources += ["CocoaAction.mm"] + sources += ["CocoaAction.mm"] objects = swiftools_env.StaticObject(sources) swiftools_env.Append(SWIFTOOLS_OBJECTS = [objects]) |