/** * This module contains UDA's (User Defined Attributes) either used in * the runtime or special UDA's recognized by compiler. * * Copyright: Copyright Jacob Carlborg 2015. * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0) * Authors: Jacob Carlborg * Source: $(DRUNTIMESRC core/_attribute.d) */ /* Copyright Jacob Carlborg 2015. * Distributed under the Boost Software License, Version 1.0. * (See accompanying file LICENSE or copy at * http://www.boost.org/LICENSE_1_0.txt) */ module core.attribute; /** * Use this attribute to attach an Objective-C selector to a method. * * This is a special compiler recognized attribute, it has several * requirements, which all will be enforced by the compiler: * * $(UL * $(LI * The attribute can only be attached to methods or constructors which * have Objective-C linkage. That is, a method or a constructor in a * class or interface declared as $(D_CODE extern(Objective-C)). * ), * * $(LI It cannot be attached to a method or constructor that is a template), * * $(LI * The number of colons in the string need to match the number of * arguments the method accept. * ), * * $(LI It can only be used once in a method declaration) * ) * * Examples: * --- * extern (Objective-C) * class NSObject * { * this() @selector("init"); * static NSObject alloc() @selector("alloc"); * NSObject initWithUTF8String(in char* str) @selector("initWithUTF8String:"); * ObjcObject copyScriptingValue(ObjcObject value, NSString key, NSDictionary properties) * @selector("copyScriptingValue:forKey:withProperties:"); * } * --- */ version (D_ObjectiveC) struct selector { string selector; }