]> err.no Git - sope/blob - libFoundation/TODO
Drop apache 1 build-dependency
[sope] / libFoundation / TODO
1 =========================== BIG THINGS TO DO ==================================
2
3 - Distributed Objects
4 - Unicode support in NSString
5 - change the NSInvocation and NSMethodSignature machine dependent macros to
6   use the macros defined into the GNU compiler. This should eventually become
7   part of the GNU Objective-C runtime library.
8 - locale support?
9
10 ========================== SMALL THINGS TO DO =================================
11
12 - Bug: descriptionWithCalendarFormat:timeZone:locale: does not honor timezone
13   argument, at least with NSCalendarDate (SKYRIX Bug 1106)
14
15 - finish NSFileManager
16 - port to HP-UX (NSInvocation and NSMethodSignature)
17   (what about OSF/1 and Ultrix?)
18 - serializer/deserializer
19 - change NSZone from class to struct
20 - finish NSByteOrder.h
21 - HH: avoid creating/releasing the formatter objects in common.m:Avsprintf
22 - HH: check return value of 'objc_thread_detach' in NSThread.m
23 - HH: description methods of NSCalendarFormat must be made timezone-aware
24 - HH: support GetTempPath() with mingw32
25 - HH: finish NSSearchPathForDirectoriesInDomains() function
26 - HH: merge implementation of -stringByTrimmingTailWhiteSpaces and 
27       -stringByTrimmingTailWhiteSpaces? Or remove them altogether (not part
28       of gstep-base anymore either?)
29
30 - HH: add -replaceOccurrencesOfString:withString:options:range: 
31
32 - NSCalendarDate parser can't parse '20041212' with %Y%m%d, because it uses
33   scanInt: which parses that as a complete int (needs a char-count limit)
34
35 ============================ general checks ===================================
36
37 (The following does not necessary mean they are missing ;-). These should
38 remind implementors what do they have to check for. )
39
40 - implement `copyWithZone:' and `mutableCopyWithZone:' for all classes
41
42 - implement `encodeWithCoder:' and `initWithCoder:' for all classes
43
44 - implement meaningful `description', `descriptionWithIndent:' or
45 `stringRepresentation'
46
47 - revise `hash' `isEqual:' and `compare:' methods for all containers so that
48   isEqual/compare/hash shoud be consistent
49
50 - check that all `dealloc' calls [super dealloc] to release memory
51
52 - check that calls to [super init] are done before *any* ivar is set
53
54 - check imutable `copyWithZone:' for containers so that it performs a deep
55   copy, making all its content imutable
56
57 - check mutable `mutableCopyWithZone:' for containers so that it performs a
58   shallow copy, making all its content imutable
59
60 - thread-safe notes (comment with `// THREAD') where we access global variables
61
62 ================================== CLASSES ====================================
63
64 NSArchiver, NSUnarchiver
65         - more tests
66
67 NSArray, NSMutableArray
68         - extended tests
69         - init* methods for immutable should throw if called twice
70
71 NSAutoreleasePool
72         - OK
73
74 NSBundle
75         - implement unloading of code (need some patches to objc-runtime)
76
77 NSCharacterSet, NSMutableCharacterSet
78         - init* methods for immutable should throw if called twice
79         - extended tests
80
81 NSCoder
82         - more tests with it and the NSArchiver for all methods
83
84 NSConnection, NSDistantObject, NSProxy
85         - TODO
86
87 NSData, NSMutableData
88         - extended tests
89         - init* methods for immutable should throw if called twice
90         - check subclasses for mmap and range
91
92 NSDate, NSCalendarDate
93         - init* methods for immutable should throw if called twice
94         - extended tests
95
96 NSDictionary, NSMutableDictionary
97         - init* methods for immutable should throw if called twice
98         - tests
99
100 NSDistributedLock
101         - test that checks concurrence
102
103 NSEnumerator
104         - OK
105
106 NSException
107         - OK
108
109 NSFileHandle
110         - tests
111
112 NSFileManager
113         - tests
114         - finish implementation (2-3 methods left)
115
116 NSInvocation
117         - port and test on HPPA HPUX
118         - test on Solaris
119
120 NSMethodSignature
121         - port and test on HPPA HPUX
122         - test on Solaris (code was written)
123
124 NSLock, NSRecursiveLock,  NSConditionLock
125         - OK
126
127 NSNotification, NSNotificationCenter, NSNotificationQueue
128         - OK
129
130 NSObject
131         - OK
132
133 NSPipe
134         - tests
135
136 NSPosixFileDescriptor
137         - tests
138
139 NSProcessInfo
140         - OK
141
142 NSRunLoop
143         - write code that determines when the process is idle
144
145 NSScanner
146         - OK
147
148 NSSerializer, NSDeserializer
149         - TODO
150
151 NSSet, NSMutableSet,  NSCountedSet
152         - tests for all methods
153         - write init* in concrete classes
154         - init* methods for immutable should throw if called twice
155
156 NSString, NSMutableString
157         - add support for Unicode
158
159 NSTask
160         - OK
161
162 NSThread
163         - tests
164
165 NSTimeZone, NSTimeZoneDetail
166         - tests
167
168 NSTimer
169         - tests
170
171 NSUserDefaults
172         - put command-line args in NSArgument domain
173
174 NSValue, NSNumber
175         - tests
176
177 NSZone (NSDefaultZone)
178         - make an allocator with zones using page-allocation functions
179         - make a non-free zone and support recycle
180
181 UnixSignalHandler
182         - OK
183
184 NSStream, NSInputStream, NSOutputStream
185         - implement
186
187 NSError, NSURLError
188         - implement
189
190 ================================ DOCUMENTATION ===============================
191
192 - comment the headers about classes, functions, ivars
193 - comment sources about class structure and general ideas
194 - README.debugging
195
196 ================================ NEW CLASSES =================================
197
198 Ascii Coder
199         - TODO: human readable and easy modifiable format. Such a class was
200         already designed and implemented and it is used for archiving
201         and unarchiving GNUstep GUI objects.
202
203 Regexp support 
204         - new class and support methods in a category to NSString
205
206 ========================== Configure, Makefile, Porting ======================
207
208 We discussed long time ago about a makefile package to help developers
209 easily build libraries and applications using the current free
210 libraries written in Objective-C. This was finally implemented by
211 Scott Christley and Ovidiu Predescu in the GNUstep makefile package.