X-Git-Url: https://git.saurik.com/apple/objc4.git/blobdiff_plain/13d8803475234e2ab631c8ddbfef9243aa697074..8070259c3936ee823b758fc1ad1645ae016ba500:/runtime/Protocol.h diff --git a/runtime/Protocol.h b/runtime/Protocol.h index 033aa26..0e78850 100644 --- a/runtime/Protocol.h +++ b/runtime/Protocol.h @@ -1,23 +1,22 @@ /* - * Copyright (c) 1999 Apple Computer, Inc. All rights reserved. - * + * Copyright (c) 1999-2003, 2006-2007 Apple Inc. All Rights Reserved. + * * @APPLE_LICENSE_HEADER_START@ * - * Portions Copyright (c) 1999 Apple Computer, Inc. All Rights - * Reserved. This file contains Original Code and/or Modifications of - * Original Code as defined in and that are subject to the Apple Public - * Source License Version 1.1 (the "License"). You may not use this file - * except in compliance with the License. Please obtain a copy of the - * License at http://www.apple.com/publicsource and read it before using - * this file. + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. * * The Original Code and all software distributed under the License are - * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the - * License for the specific language governing rights and limitations - * under the License. + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. * * @APPLE_LICENSE_HEADER_END@ */ @@ -29,43 +28,55 @@ #ifndef _OBJC_PROTOCOL_H_ #define _OBJC_PROTOCOL_H_ -#import +#if !__OBJC__ + +// typedef Protocol is here: +#include + -struct objc_method_description { - SEL name; - char *types; -}; -struct objc_method_description_list { - int count; - struct objc_method_description list[1]; -}; +#elif __OBJC2__ +#include + +// All methods of class Protocol are unavailable. +// Use the functions in objc/runtime.h instead. + +__OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0) +@interface Protocol : NSObject +@end + + +#else + +#include + +__OSX_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0) @interface Protocol : Object { @private - char *protocol_name; - struct objc_protocol_list *protocol_list; - struct objc_method_description_list *instance_methods, *class_methods; -#ifdef NeXT_PDO /* hppa needs 8 byte aligned protocol blocks */ -#if defined(__hpux__) || defined(hpux) - unsigned long risc_pad; -#endif /* __hpux__ || hpux */ -#endif NeXT_PDO + char *protocol_name OBJC2_UNAVAILABLE; + struct objc_protocol_list *protocol_list OBJC2_UNAVAILABLE; + struct objc_method_description_list *instance_methods OBJC2_UNAVAILABLE; + struct objc_method_description_list *class_methods OBJC2_UNAVAILABLE; } /* Obtaining attributes intrinsic to the protocol */ -- (const char *)name; +- (const char *)name OBJC2_UNAVAILABLE; /* Testing protocol conformance */ -- (BOOL) conformsTo: (Protocol *)aProtocolObject; +- (BOOL) conformsTo: (Protocol *)aProtocolObject OBJC2_UNAVAILABLE; /* Looking up information specific to a protocol */ -- (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel; -- (struct objc_method_description *) descriptionForClassMethod:(SEL)aSel; +- (struct objc_method_description *) descriptionForInstanceMethod:(SEL)aSel + __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_5, __IPHONE_2_0,__IPHONE_2_0); +- (struct objc_method_description *) descriptionForClassMethod:(SEL)aSel + __OSX_AVAILABLE_BUT_DEPRECATED(__MAC_10_0,__MAC_10_5, __IPHONE_2_0,__IPHONE_2_0); @end +#endif + #endif /* _OBJC_PROTOCOL_H_ */