1 /* Additional testing for the NeXT runtime. Encoding in -m64 mode */
3 /* { dg-do run { target *-*-darwin* } } */
4 /* { dg-require-effective-target lp64 } */
5 /* { dg-skip-if "" { *-*-* } { "-fgnu-runtime" } { "" } } */
6 /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */
11 #include <objc/Object.h>
12 #include "../objc-obj-c++-shared/runtime.h"
14 #define CHECK_IF(E) if (!(E)) abort ()
16 @class NSDictionary, NSFont, NSError, _NSATSTypesetterGuts, NSString, NSMenu, NSArray;
18 typedef unsigned char UInt8;
19 typedef const signed long OSStatus;
20 typedef unsigned long CFIndex;
21 typedef unsigned int UInt32;
22 typedef UInt32 FourCharCode;
23 typedef FourCharCode OSType;
28 typedef struct FSRef FSRef;
30 typedef struct _NSPoint {
35 typedef struct _NSSize {
40 typedef struct _NSRect {
45 typedef struct _NSRange {
46 unsigned int location;
50 typedef const char *NXAtom;
53 NSDictionary *_attributes;
55 CFIndex _characterLength;
56 CFIndex _nominalGlyphLocation;
58 float _defaultLineHeight;
59 float _defaultBaselineOffset;
60 float _horizExpansion;
62 NSRect _attachmentBBox;
64 unsigned long ull, *ullp;
67 const struct objc_object *a2;
70 const struct objc_selector *b2;
74 const char *const str4;
76 unsigned int _isAttachmentRun:1;
77 unsigned int _hasPositionalStake:1;
78 unsigned int _isDefaultFace:1;
79 unsigned int _hasCombiningMarks:1;
80 unsigned int _isScreenFont:1;
81 unsigned int _reserved:27;
83 } NSATSGlyphStorageRun;
85 typedef struct __CFSet *CFMutableSetRef;
86 typedef const struct __CTLine * CTLineRef;
87 typedef const struct __NSAppleEventManagerSuspension* NSAppleEventManagerSuspensionID;
89 struct ComponentInstanceRecord {
92 typedef struct ComponentInstanceRecord ComponentInstanceRecord;
93 typedef ComponentInstanceRecord *ComponentInstance;
95 typedef NSString *(*NSErrorUserInfoFormatterFunc)(id objToBeDisplayed, NSError *err, char modifier);
97 NSErrorUserInfoFormatterFunc formatterFunc;
98 NSString *userInfoKey;
99 unsigned int parameterMask;
100 } NSErrorUserInfoFormatter;
102 typedef Object MyObj;
103 typedef Object *MyPtr;
105 @interface Foo: Object {
106 NSATSGlyphStorageRun r;
108 - (NSError *)_errorWithOSStatus:(OSStatus)inOSStatus ref1:(const FSRef *)inRef1 ref2:(const struct FSRef *)inRef2
109 reading:(BOOL)inReadingNotWriting;
110 - (const NSATSGlyphStorageRun *)_attributeRunForCharacterAtIndex:(const CFIndex)charIndex;
111 - (const _NSATSTypesetterGuts *)_getATSTypesetterGuts:(const struct objc_selector *)sel;
112 - (void)resumeWithSuspensionID:(NSAppleEventManagerSuspensionID)suspensionID and:(const CFIndex *)status;
113 - (const id)anotherMeth:(const SEL)sel and:(const Foo *)foo and:(const struct objc_object *)obj;
114 - (id)str1:(const char *)str1 str2:(char *)str2 str3:(char *const)str3 str4:(const char *const)str4;
115 - (oneway void)foo1:(Foo *)foo1 foo2:(const Foo *)foo2 foo3:(Foo *const)foo3 foo4:(const Foo *const)foo4;
116 - (in const char *)sel1:(const SEL)sel1 id1:(const id)id1;
117 - (inout id)obj1:(const MyPtr)obj1 obj2:(Object *const)obj2 obj3:(MyObj *const)obj3;
118 + (ComponentInstance)_defaultScriptingComponent;
119 - (NSString *)_formatCocoaErrorString:(NSString *)formatString parameters:(const char *)parameters
120 applicableFormatters:(NSErrorUserInfoFormatter **)formatters count:(int)numFormatters;
121 - (NSErrorUserInfoFormatter *)formatter_func:(id)obj run:(const NSATSGlyphStorageRun **)run;
122 - (BOOL)_forgetWord:(bycopy in NSString *)word inDictionary:(bycopy in NSString *)language;
123 - (void)_registerServicesMenu:(NSMenu *)servicesMenu withSendTypes:(const NXAtom *)sendTypes
124 andReturnTypes:(const NXAtom *)returnTypes addToList:(BOOL)addToList;
125 + (CFMutableSetRef *)_proxySharePointer;
126 - (NSRange)_checkGrammarInString:(in NSString *)stringToCheck language:(bycopy in NSString *)language details:(bycopy out NSArray **)details;
127 - (bool)_resolvePositionalStakeGlyphsForLineFragment:(CTLineRef)line lineFragmentRect:(NSRect)lineFragmentRect
128 minPosition:(float)minPosition maxPosition:(float)maxPosition maxLineFragmentWidth:(float)maxLineFragmentWidth
129 breakHint:(CFIndex *)charIndex;
130 + (BOOL)findVoiceByIdentifier:(NSString *)identifier returningCreator:(OSType *)returnedCreator returningID:(OSType *)returnedID;
136 - (NSError *)_errorWithOSStatus:(OSStatus)inOSStatus ref1:(const FSRef *)inRef1 ref2:(const struct FSRef *)inRef2
137 reading:(BOOL)inReadingNotWriting {
138 return (NSError *)self;
140 - (const NSATSGlyphStorageRun *)_attributeRunForCharacterAtIndex:(CFIndex)charIndex {
141 return (const NSATSGlyphStorageRun *)self;
143 - (const _NSATSTypesetterGuts *)_getATSTypesetterGuts:(const struct objc_selector *)sel {
144 return (const _NSATSTypesetterGuts *)self;
146 - (void)resumeWithSuspensionID:(NSAppleEventManagerSuspensionID)suspensionID and:(const CFIndex *)status {
148 - (const id)anotherMeth:(const SEL)sel and:(const Foo *)foo and:(const struct objc_object *)obj {
149 return (const id)self;
151 - (id)str1:(const char *)str1 str2:(char *)str2 str3:(char *const)str3 str4:(const char *const)str4 {
154 - (oneway void)foo1:(Foo *)foo1 foo2:(const Foo *)foo2 foo3:(Foo *const)foo3 foo4:(const Foo *const)foo4 {
156 - (in const char *)sel1:(const SEL)sel1 id1:(const id)id1 {
159 - (inout id)obj1:(const MyPtr)obj1 obj2:(Object *const)obj2 obj3:(MyObj *const)obj3 {
162 + (ComponentInstance)_defaultScriptingComponent {
163 return (ComponentInstance)0;
165 - (NSString *)_formatCocoaErrorString:(NSString *)formatString parameters:(const char *)parameters
166 applicableFormatters:(NSErrorUserInfoFormatter **)formatters count:(int)numFormatters {
167 return (NSString *)self;
169 - (NSErrorUserInfoFormatter *)formatter_func:(id)obj run:(const NSATSGlyphStorageRun **)run {
170 return (NSErrorUserInfoFormatter *)0;
172 - (BOOL)_forgetWord:(bycopy in NSString *)word inDictionary:(bycopy in NSString *)language {
175 - (void)_registerServicesMenu:(NSMenu *)servicesMenu withSendTypes:(const NXAtom *)sendTypes
176 andReturnTypes:(const NXAtom *)returnTypes addToList:(BOOL)addToList {
178 + (CFMutableSetRef *)_proxySharePointer {
179 return (CFMutableSetRef *)0;
181 - (NSRange)_checkGrammarInString:(in NSString *)stringToCheck language:(bycopy in NSString *)language details:(bycopy out NSArray **)details {
184 - (bool)_resolvePositionalStakeGlyphsForLineFragment:(CTLineRef)line lineFragmentRect:(NSRect)lineFragmentRect
185 minPosition:(float)minPosition maxPosition:(float)maxPosition maxLineFragmentWidth:(float)maxLineFragmentWidth
186 breakHint:(CFIndex *)charIndex {
189 + (BOOL)findVoiceByIdentifier:(NSString *)identifier returningCreator:(OSType *)returnedCreator returningID:(OSType *)returnedID {
195 Class fooClass = objc_getClass ("Foo");
198 unsigned int ivar_count;
201 meth = class_getInstanceMethod (fooClass, @selector(_errorWithOSStatus:ref1:ref2:reading:));
202 CHECK_IF (!strcmp (method_getTypeEncoding(meth), "@44@0:8q16r^{FSRef=[80C]}24r^{FSRef=[80C]}32c40"));
204 meth = class_getInstanceMethod (fooClass, @selector(_attributeRunForCharacterAtIndex:));
205 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "r^{?=@@QQ^Qffff{_NSRect={_NSPoint=ff}{_NSSize=ff}}q^qQ^Q@@@:::****{?=b1b1b1b1b1b27}}24@0:8Q16"));
207 meth = class_getInstanceMethod (fooClass, @selector(_getATSTypesetterGuts:));
208 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "r@24@0:8r:16"));
210 meth = class_getInstanceMethod (fooClass, @selector(resumeWithSuspensionID:and:));
211 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "v32@0:8^{__NSAppleEventManagerSuspension=}16r^Q24"));
213 meth = class_getInstanceMethod (fooClass, @selector(anotherMeth:and:and:));
214 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "r@40@0:8r:16r@24r@32"));
216 meth = class_getInstanceMethod (fooClass, @selector(str1:str2:str3:str4:));
217 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "@48@0:8r*16*24*32r*40"));
219 meth = class_getInstanceMethod (fooClass, @selector(foo1:foo2:foo3:foo4:));
220 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "Vv48@0:8@16r@24@32r@40"));
222 meth = class_getInstanceMethod (fooClass, @selector(sel1:id1:));
223 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "rn*32@0:8r:16r@24"));
225 meth = class_getInstanceMethod (fooClass, @selector(obj1:obj2:obj3:));
226 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "N@40@0:8r@16@24^{Object=#}32"));
228 meth = class_getClassMethod (fooClass, @selector(_defaultScriptingComponent));
229 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "^{ComponentInstanceRecord=[1q]}16@0:8"));
231 meth = class_getInstanceMethod (fooClass, @selector(_formatCocoaErrorString:parameters:applicableFormatters:count:));
232 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "@44@0:8@16r*24^^{?}32i40"));
234 meth = class_getInstanceMethod (fooClass, @selector(formatter_func:run:));
235 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "^{?=^?@I}32@0:8@16r^^{?}24"));
237 meth = class_getInstanceMethod (fooClass, @selector(_forgetWord:inDictionary:));
238 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "c32@0:8nO@16nO@24"));
240 meth = class_getInstanceMethod (fooClass, @selector(_registerServicesMenu:withSendTypes:andReturnTypes:addToList:));
241 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "v44@0:8@16r^*24r^*32c40"));
243 meth = class_getClassMethod (fooClass, @selector(_proxySharePointer));
244 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "^^{__CFSet}16@0:8"));
246 meth = class_getInstanceMethod (fooClass, @selector(_checkGrammarInString:language:details:));
247 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "{_NSRange=II}40@0:8n@16nO@24oO^@32"));
249 meth = class_getInstanceMethod (fooClass, @selector(_resolvePositionalStakeGlyphsForLineFragment:lineFragmentRect:minPosition:maxPosition:maxLineFragmentWidth:breakHint:));
250 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "B60@0:8^{__CTLine=}16{_NSRect={_NSPoint=ff}{_NSSize=ff}}24f40f44f48^Q52"));
252 meth = class_getClassMethod (fooClass, @selector(findVoiceByIdentifier:returningCreator:returningID:));
253 CHECK_IF (!strcmp (method_getTypeEncoding (meth), "c40@0:8@16^I24^I32"));
255 ivars = class_copyIvarList (fooClass, &ivar_count);
256 CHECK_IF (ivar_count == 1);
259 CHECK_IF (!strcmp (ivar_getName(ivar), "r"));
260 CHECK_IF (!strcmp (ivar_getTypeEncoding(ivar),
261 "{?=\"_attributes\"@\"NSDictionary\"\"_font\"@\"NSFont\"\"_characterLength\""
262 "Q\"_nominalGlyphLocation\"Q\"p\"^Q\"_defaultLineHeight\"f\"_defaultBaselineOffset\""
263 "f\"_horizExpansion\"f\"_baselineDelta\"f\"_attachmentBBox\"{_NSRect=\"origin\""
264 "{_NSPoint=\"x\"f\"y\"f}\"size\"{_NSSize=\"width\"f\"height\"f}}\"ll\"q\"llp\"^q\"ull\""
265 "Q\"ullp\"^Q\"a\"@\"a1\"@\"a2\"@\"b\":\"b1\":\"b2\":\"str1\"*\"str2\"*\"str3\"*\"str4\""
266 "*\"_rFlags\"{?=\"_isAttachmentRun\"b1\"_hasPositionalStake\"b1\"_isDefaultFace\""
267 "b1\"_hasCombiningMarks\"b1\"_isScreenFont\"b1\"_reserved\"b27}}"));