1994-11-04 16:29:24 +00:00
|
|
|
|
@ifset TODO_ONLY
|
|
|
|
|
@chapter GNU Objective-C Class Library To Do list, and Questions.
|
|
|
|
|
@c set the vars GOBJC_VERSION and GCC_VERSION
|
|
|
|
|
@include version.texi
|
|
|
|
|
@end ifset
|
|
|
|
|
|
|
|
|
|
@section Projects Looking for Volunteers
|
|
|
|
|
|
|
|
|
|
If you think you can do one of these projects, please let me know. Your
|
1995-04-03 03:15:32 +00:00
|
|
|
|
help is greatly appreciated. Send email to
|
1994-11-04 16:29:24 +00:00
|
|
|
|
@samp{mccallum@@gnu.ai.mit.edu}.
|
|
|
|
|
|
1996-01-27 00:53:14 +00:00
|
|
|
|
@itemize @bullet
|
1994-11-04 16:29:24 +00:00
|
|
|
|
|
|
|
|
|
@item Write a test-suite for the library. Use dejagnu.
|
|
|
|
|
|
1996-03-24 22:02:42 +00:00
|
|
|
|
@item Write a proper name server for Port's. Currently we're just
|
1994-11-04 16:29:24 +00:00
|
|
|
|
hashing the name to a socket port number---we could get unwanted hash
|
|
|
|
|
collisions. This will also allow us to name a SocketPort after it's
|
|
|
|
|
been created.
|
|
|
|
|
|
1995-08-09 16:32:56 +00:00
|
|
|
|
@ignore
|
1994-11-04 16:29:24 +00:00
|
|
|
|
@item Add some features to the compiler:
|
|
|
|
|
@enumerate
|
|
|
|
|
@item You can't add __attribute__'s to methods. I want to use:
|
|
|
|
|
@smallexample
|
|
|
|
|
- (int) writeFormat: (const char *)format, ...
|
|
|
|
|
__attribute__ ((format (printf, 1, 2)));
|
|
|
|
|
- (int) readFormat: (const char *)format, ...
|
|
|
|
|
__attribute__ ((format (scanf, 1, 2)));
|
|
|
|
|
@end smallexample
|
|
|
|
|
@item I would like to be able to use a function name/pointer as an
|
|
|
|
|
argument to @@encode() and get a type string like the selector types.
|
|
|
|
|
@end enumerate
|
1995-08-09 16:32:56 +00:00
|
|
|
|
@end ignore
|
1994-11-04 16:29:24 +00:00
|
|
|
|
|
1996-03-24 22:02:42 +00:00
|
|
|
|
@item Write some code to deal with `%@@' in printf-style format strings
|
|
|
|
|
for systems that do not have the GNU C library. Those with the GNU C
|
|
|
|
|
Library can just use @samp{register_printf_function}.
|
1995-04-06 21:05:42 +00:00
|
|
|
|
|
1995-08-09 16:32:56 +00:00
|
|
|
|
@item Implement efficient SmallInt and SmallFloat classes in the same
|
1995-08-16 17:53:51 +00:00
|
|
|
|
sort of way that Smalltalk does. Talk to me. mccallum@@gnu.ai.mit.edu.
|
1995-08-09 16:32:56 +00:00
|
|
|
|
|
1995-04-03 03:15:32 +00:00
|
|
|
|
@item See
|
1996-04-18 00:23:58 +00:00
|
|
|
|
http://www.cs.rochester.edu/u/mccallum/libgnustep-base/volunteers.html for
|
1995-08-09 16:32:56 +00:00
|
|
|
|
a list of the claimed and unclaimed GNUStep Foundation classes.
|
1995-04-03 03:15:32 +00:00
|
|
|
|
|
1994-11-04 16:29:24 +00:00
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
|
|
|
1996-03-24 22:02:42 +00:00
|
|
|
|
@section McCallum's To Do's
|
1994-11-04 16:29:24 +00:00
|
|
|
|
|
|
|
|
|
@itemize @bullet
|
|
|
|
|
|
1996-04-19 23:50:13 +00:00
|
|
|
|
@item Make sure the GNU Archiver/Unarchiver handle
|
|
|
|
|
-encodeConditionalObject: and -decodeObject: correctly.
|
|
|
|
|
|
1996-04-10 00:22:53 +00:00
|
|
|
|
@item Reorganize some of the Categories to make a minimal NSObject-using
|
|
|
|
|
program smaller. Currently it is huge becuase it pulls in archiving and
|
|
|
|
|
therefore many of the collection classes.
|
1996-03-24 22:02:42 +00:00
|
|
|
|
|
1996-04-16 02:50:18 +00:00
|
|
|
|
@item Make sure that Encoder's properly release their CStream and
|
|
|
|
|
Stream's. It seems that the Stream is not getting -delloc'ed, and
|
|
|
|
|
therefore may not be closed, and therefore may be missing data at the
|
|
|
|
|
end.
|
|
|
|
|
|
|
|
|
|
@item Change all the assert()'s (especially in the archiving code) to
|
|
|
|
|
NSAssert()'s. This will help make D.O. servers more safe from bad
|
|
|
|
|
clients.
|
|
|
|
|
|
1995-05-05 15:24:14 +00:00
|
|
|
|
@item Make my NS... classes raise the NSExceptions they are supposed to.
|
1996-04-10 00:22:53 +00:00
|
|
|
|
Change many NSParameterAssert()'s into NSAssert()'s with explanations.
|
1996-03-24 22:02:42 +00:00
|
|
|
|
|
|
|
|
|
@item Do low-level frobbing of TCP to reduce delays.
|
|
|
|
|
|
|
|
|
|
@item Make UdpPort work; make MachPort work.
|
|
|
|
|
|
|
|
|
|
@item Write NSRunLoop class, on top of GNU RunLoop.
|
|
|
|
|
|
|
|
|
|
@item Finish NotificationQueue, and make it interoperate with the
|
|
|
|
|
RunLoop properly.
|
|
|
|
|
|
|
|
|
|
@item Make the NSTimer's work and interoperate with the run loop
|
|
|
|
|
properly.
|
|
|
|
|
|
|
|
|
|
@item Clean up and finish the String object situation.
|
1995-04-06 01:16:37 +00:00
|
|
|
|
|
1995-04-15 20:04:12 +00:00
|
|
|
|
@item Fix many memory allocation inconsistencies. Methods that return
|
|
|
|
|
malloced buffers should autorelease those buffers, (like readFormat:).
|
|
|
|
|
|
1995-09-30 22:13:38 +00:00
|
|
|
|
@item Many code fixes and cleanups, indicated with @samp{xxx} in the
|
|
|
|
|
source.
|
|
|
|
|
|
1996-03-24 22:02:42 +00:00
|
|
|
|
@item Add Coding methods to all the collection classes.
|
1994-11-04 16:29:24 +00:00
|
|
|
|
|
1996-03-24 22:02:42 +00:00
|
|
|
|
@item Finish Collection heirarchy clean ups. We need non-mutable
|
|
|
|
|
version for many of the classes.
|
1994-11-04 16:29:24 +00:00
|
|
|
|
|
1995-09-30 22:13:38 +00:00
|
|
|
|
@item
|
|
|
|
|
Possibly change @code{-(int)compare:anObject} for Collection. How
|
|
|
|
|
should non-Indexed collections be ordered?
|
|
|
|
|
|
1994-11-04 16:29:24 +00:00
|
|
|
|
@item
|
|
|
|
|
Finish HashTable.m. Implement freeKeys:values: (What is this supposed
|
|
|
|
|
to do anyway?). Handle archiving of atom string, "%", keys.
|
|
|
|
|
|
|
|
|
|
@item
|
|
|
|
|
Finish Time.m. Many methods are not yet implemented.
|
|
|
|
|
|
|
|
|
|
@item
|
|
|
|
|
Many implementations could be made more efficient. Libobjects hasn't
|
1996-03-24 22:02:42 +00:00
|
|
|
|
been efficiency tuned very much. Overridding more methods in certain
|
1994-11-04 16:29:24 +00:00
|
|
|
|
classes could make things more efficient (especially EltNodeCollector).
|
|
|
|
|
SplayTree's could be done using top-down splaying. collhash could be
|
|
|
|
|
completely reimplemented. ...and a lot more...
|
|
|
|
|
|
|
|
|
|
@item
|
|
|
|
|
Fix all the subclassResponsibility comments in objects/*.h
|
|
|
|
|
|
|
|
|
|
@item
|
1996-04-18 00:23:58 +00:00
|
|
|
|
I will finish gnustep-base documentation.
|
1994-11-04 16:29:24 +00:00
|
|
|
|
|
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
|
|
@c ==================================================================
|
|
|
|
|
@section Questions
|
|
|
|
|
|
|
|
|
|
I would greatly appreciate your feedback on the questions
|
|
|
|
|
below. Please email your thoughts to mccallum@@gnu.ai.mit.edu.
|
|
|
|
|
|
|
|
|
|
@itemize @bullet
|
|
|
|
|
|
|
|
|
|
@item
|
|
|
|
|
I want to put method names in texinfo indices, but the colons in the
|
|
|
|
|
method names are interfering with info's notion of menu item names and
|
|
|
|
|
node names. Help. Any ideas? (Kresten?)
|
|
|
|
|
|
|
|
|
|
@item
|
|
|
|
|
HashTable.m (-initKeyDesc:valueDesc:capacity:) I tried to make it
|
|
|
|
|
portable, but I didn't try very hard. Anyone want to send in fixes?
|
|
|
|
|
|
|
|
|
|
@item
|
|
|
|
|
I fixed -emptyCopy in all the subclasses, but the -emptyCopy scheme
|
|
|
|
|
seems pretty fragile. How about calling -initFoo: inside -emptyCopy?
|
|
|
|
|
This way we avoid having yet another method in which instance vars
|
|
|
|
|
must be initialized to some consistent state. -allocCopy would never
|
|
|
|
|
even get called. <<ObjC insiders: This is a less well-expressed
|
|
|
|
|
version of what we've just been discussing in email.>>
|
|
|
|
|
|
|
|
|
|
@item
|
1996-04-18 00:23:58 +00:00
|
|
|
|
I created libgnustep-base.texi by copying libg++.texi. Some of the text
|
1994-11-04 16:29:24 +00:00
|
|
|
|
is taken verbatim. Is this a problem?
|
|
|
|
|
|
|
|
|
|
@item
|
|
|
|
|
If you don't like the organization of the documentation and you have
|
|
|
|
|
suggestions for changes, please say so now, not after it's all been
|
|
|
|
|
written.
|
|
|
|
|
|
|
|
|
|
@item
|
1996-03-24 22:02:42 +00:00
|
|
|
|
Does anyone really need the ability to set the collection element
|
|
|
|
|
comparison function independent of the -compare: method?
|
|
|
|
|
|
|
|
|
|
@item
|
|
|
|
|
How about adding flexibity in the method name that a LinkedList sends a
|
|
|
|
|
LinkedListNode to get/set the link ivars. This would enable us to add a
|
|
|
|
|
node to more than one linked list.
|
1994-11-04 16:29:24 +00:00
|
|
|
|
|
|
|
|
|
@item
|
|
|
|
|
Something like this needed?
|
|
|
|
|
- elementDidChange: (elt*)elementPtr;
|
|
|
|
|
Currently you have to remove, change, add, for some classes.
|
|
|
|
|
|
|
|
|
|
@c -------------------------------------------------------------------
|
|
|
|
|
@c @section Questions leftover from last release
|
|
|
|
|
|
|
|
|
|
@item
|
|
|
|
|
I've been told that GNU filenames should be 14 chars or less. I
|
|
|
|
|
don't want to abbreviate my classnames, but I think using .h
|
|
|
|
|
@@interface files with names different than the class name is even
|
|
|
|
|
worse. ** I want to keep my unabbreviated filenames!! ** What to do,
|
|
|
|
|
what to do... I can't believe that *all* GNU classnames will be
|
|
|
|
|
limited to 12 characters forever and ever---disgusting.
|
|
|
|
|
|
|
|
|
|
@end itemize
|
|
|
|
|
|
1996-03-22 00:36:13 +00:00
|
|
|
|
|
1996-03-24 22:02:42 +00:00
|
|
|
|
|
1996-03-22 00:36:13 +00:00
|
|
|
|
@section Albin's To Do List
|
|
|
|
|
|
|
|
|
|
I'm sure that there're other things to do, but these are the ones I know now:
|
|
|
|
|
|
|
|
|
|
@subsection General
|
|
|
|
|
|
|
|
|
|
@itemize @bullet
|
|
|
|
|
@item Make thread-safe all of my code that should be.
|
|
|
|
|
@item Fully annotate all of my headers.
|
|
|
|
|
@item Document my work and the use of its fruit.
|
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
|
|
@subsection Critical
|
|
|
|
|
|
|
|
|
|
@itemize @bullet
|
|
|
|
|
@item Code:
|
|
|
|
|
@itemize +
|
|
|
|
|
@item (@file{src/array.m}) @samp{objects_array_check}
|
|
|
|
|
@item (@file{src/array.m}) @samp{objects_array_map_elements}
|
|
|
|
|
@item (@file{src/cbs-char-p.m}) @samp{objects_char_p_describe}
|
|
|
|
|
@item (@file{src/cbs-int-p.m}) @samp{objects_int_p_describe}
|
|
|
|
|
@item (@file{src/cbs-int.m}) @samp{objects_int_describe}
|
|
|
|
|
@item (@file{src/hash.m}) @samp{_objects_hash_hash}
|
|
|
|
|
@item (@file{src/hash.m}) @samp{objects_hash_check}
|
|
|
|
|
@item (@file{src/hash.m}) @samp{objects_hash_description}
|
|
|
|
|
@item (@file{src/list.m}) @samp{objects_list_is_equal_to_list}
|
|
|
|
|
@item (@file{src/map.m}) @samp{_objects_map_hash}
|
|
|
|
|
@item (@file{src/map.m}) @samp{objects_map_check}
|
|
|
|
|
@item (@file{src/map.m}) @samp{objects_map_description}
|
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
|
|
@item Correct:
|
|
|
|
|
@itemize +
|
|
|
|
|
@item (@file{src/array.m}) @samp{objects_array_dealloc}
|
1996-04-18 00:23:58 +00:00
|
|
|
|
@item (@file{src/cbs-int.m}) @samp{_GNUSTEP_BASE_NOT_AN_INT_MARKER}
|
1996-03-22 00:36:13 +00:00
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
|
|
@item Improve the error handling of:
|
|
|
|
|
@itemize +
|
|
|
|
|
@item (@file{src/array.m}) @samp{_objects_array_insert_bucket}
|
|
|
|
|
@item (@file{src/hash.m}) @samp{objects_hash_add_element_known_absent}
|
|
|
|
|
@item (@file{src/list.m}) @samp{objects_list_at_index_insert_element}
|
|
|
|
|
@item (@file{src/map.m}) @samp{objects_map_at_key_put_value_known_absent}
|
|
|
|
|
@end itemize
|
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
|
|
@subsection Not So Critical
|
|
|
|
|
|
|
|
|
|
@itemize @bullet
|
|
|
|
|
@item Strengthen my resolve on the correctness of:
|
|
|
|
|
@itemize +
|
1996-04-18 00:23:58 +00:00
|
|
|
|
@item (@file{src/cbs-char-p.m}) @samp{_GNUSTEP_BASE_NOT_A_CHAR_P_MARKER}
|
|
|
|
|
@item (@file{src/cbs-id.m}) @samp{_GNUSTEP_BASE_NOT_AN_ID_MARKER}
|
|
|
|
|
@item (@file{src/cbs-int-p.m}) @samp{_GNUSTEP_BASE_NOT_AN_INT_P_MARKER}
|
1996-03-22 00:36:13 +00:00
|
|
|
|
@item (@file{src/cbs-int-p.m}) @samp{objects_int_p_is_equal}
|
1996-04-18 00:23:58 +00:00
|
|
|
|
@item (@file{src/cbs-void-p.m}) @samp{_GNUSTEP_BASE_NOT_A_VOID_P_MARKER}
|
1996-03-22 00:36:13 +00:00
|
|
|
|
@item (@file{src/hash.m}) @samp{objects_hash_rightsize}
|
|
|
|
|
@item (@file{src/hash.m}) @samp{objects_hash_all_elements}
|
|
|
|
|
@item (@file{src/map.m}) @samp{objects_map_rightsize}
|
|
|
|
|
@item (@file{src/map.m}) @samp{objects_map_all_keys}
|
|
|
|
|
@item (@file{src/map.m}) @samp{objects_map_all_values}
|
|
|
|
|
@end itemize
|
|
|
|
|
|
|
|
|
|
@item Improve the effeciency of:
|
|
|
|
|
@itemize +
|
|
|
|
|
@item (@file{src/array.m}) @samp{_objects_array_insert_bucket}
|
|
|
|
|
@item (@file{src/hash.m}) @samp{objects_hash_minus_hash}
|
|
|
|
|
@item (@file{src/list.m}) @samp{objects_list_at_index_insert_list}
|
|
|
|
|
@end itemize
|
|
|
|
|
@end itemize
|