]> git.wincent.com - WOTest.git/blob - NSScanner+WOTest.h
Fix object-to-pointer comparisons on Leopard
[WOTest.git] / NSScanner+WOTest.h
1 //
2 //  NSScanner+WOTest.h
3 //  WOTest
4 //
5 //  Created by Wincent Colaiuta on 12 June 2005.
6 //
7 //  Copyright 2005-2007 Wincent Colaiuta.
8 //  This program is free software: you can redistribute it and/or modify
9 //  it under the terms of the GNU General Public License as published by
10 //  the Free Software Foundation, either version 3 of the License, or
11 //  (at your option) any later version.
12 //
13 //  This program is distributed in the hope that it will be useful,
14 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
15 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 //  GNU General Public License for more details.
17 //
18 //  You should have received a copy of the GNU General Public License
19 //  along with this program.  If not, see <http://www.gnu.org/licenses/>.
20 //
21
22 #import <Foundation/Foundation.h>
23
24 /*! 
25  Example method signatures and types:
26  
27  The documentation notes the following: "The compiler generates the method type encodings in a format that includes information on the size of the stack and the size occupied by the arguments. These numbers appear after each encoding in the method_types string. However, because the compiler historically generates them incorrectly, and because they differ depending on the CPU type, the runtime ignores them if they are present. These numbers are not required by the Objective-C runtime in Mac OS X v10.0 or later."
28  
29  The first entry indicates the type of the return value.
30  This is followed by the first argument which is always \@0 or \@8 (self).
31  The second argument is always :4 or :12 (_cmd).
32  Any subsequent arguments follow.
33  
34  + new  : \@8\@0:4
35  
36  + (const char *) name  : r*8\@0:4
37  - (const char *) name : r*8\@0:4
38  - (void *)zone :  ^v8\@0:4
39  - (BOOL) conformsTo: (Protocol *)aProtocolObject : c12\@0:4\@8
40  
41  + (id)allocWithZone:(NSZone *)zone : \@12\@0:4^{_NSZone=}8
42  
43  + (Class)class : #8\@0:4
44  
45  + (void)cancelPreviousPerformRequestsWithTarget:(id)aTarget 
46  selector:(SEL)aSelector object:(id)anArgument
47  v20\@0:4\@8:12\@16
48  
49  + (NSRect)contentRectForFrameRect:(NSRect)frameRect styleMask:(unsigned int)aStyle
50  {_NSRect={_NSPoint=ff}{_NSSize=ff}}28\@0:4{_NSRect={_NSPoint=ff}{_NSSize=ff}}8I24    
51  
52  + (id)stringWithString:(NSString *)aString : \@12\@0:4\@8
53  
54  + (NSString *)localizedNameOfStringEncoding:(NSStringEncoding)encoding
55  \@12\@0:4\@8
56  
57  See objc/objc-class.h for macros 
58  
59  
60 Additional codes used by runtime as described here: file:///Developer/ADC%20Reference%20Library/documentation/Cocoa/Conceptual/ObjectiveC/RuntimeOverview/chapter_4_section_6.html */
61
62 #define WO_ENCODING_QUALIFIER_CONST     'r'
63 #define WO_ENCODING_QUALIFIER_IN        'n'
64 #define WO_ENCODING_QUALIFIER_INOUT     'N'
65 #define WO_ENCODING_QUALIFIER_OUT       'o'
66 #define WO_ENCODING_QUALIFIER_BYCOPY    'O'
67 #define WO_ENCODING_QUALIFIER_BYREF     'R'
68 #define WO_ENCODING_QUALIFIER_ONEWAY    'V'
69
70 @interface NSScanner (WOTest) 
71
72 /*! Raises an NSInternalInconsistencyException if value is NULL. */
73 - (BOOL)WOTest_peekCharacter:(unichar *)value;
74
75 /*! Pass NULL if you merely wish to scan past a character. */
76 - (BOOL)WOTest_scanCharacter:(unichar *)value;
77
78 /*! Pass NULL if you merely wish to scan past a character from the set. */
79 - (BOOL)WOTest_scanCharacterFromSet:(NSCharacterSet *)scanSet intoChar:(unichar *)value;
80
81 /*! Scans a return type into a string. Return types must appear at the beginning of the string. Pass nil if you simply wish to scan past a return type. */
82 - (BOOL)WOTest_scanReturnTypeIntoString:(NSString **)stringValue;
83
84 /*! Scans a type (simple or compound). Pass nil if you simply wish to scan past a type. */
85 - (BOOL)WOTest_scanTypeIntoString:(NSString **)stringValue;
86
87 /*! Scans one or more qualifieres into a string. Pass nil if you simply wish to scan past the qualifiers. */
88 - (BOOL)WOTest_scanQualifiersIntoString:(NSString **)stringValue;
89
90 /*! Scans a simple (non-compound) type into a string. Pass nil if you simply wish to scan past a type. */
91 - (BOOL)WOTest_scanNonCompoundTypeIntoString:(NSString **)stringValue;
92
93 /*! Scans a bitfield into a string. Pass nil if you simply wish to scan past a bitfield. */
94 - (BOOL)WOTest_scanBitfieldIntoString:(NSString **)stringValue;
95
96 /*! Scans an array into a string. Pass nil if you simply wish to scan past an array. */
97 - (BOOL)WOTest_scanArrayIntoString:(NSString **)stringValue;
98
99 /*! Scans an identifier into a string. Pass nil if you simply wish to scan past an identifier. */
100 - (BOOL)WOTest_scanIdentifierIntoString:(NSString **)stringValue;
101
102 /*! Scans a struct into a string. Pass nil if you simply wish to scan past a struct. */
103 - (BOOL)WOTest_scanStructIntoString:(NSString **)stringValue;
104
105 /*! Scans a union into a string. Pass nil if you simply wish to scan past a union. */
106 - (BOOL)WOTest_scanUnionIntoString:(NSString **)stringValue;
107
108 /*! Scans a pointer into a string. Pass nil if you simply wish to scan past a pointer. */
109 - (BOOL)scanPointerIntoString:(NSString **)stringValue;
110
111 @end