mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 08:21:25 +00:00
216 lines
7 KiB
Text
216 lines
7 KiB
Text
|
Todo
|
|||
|
****
|
|||
|
|
|||
|
This TODO list is out of date.
|
|||
|
|
|||
|
Projects Looking for Volunteers
|
|||
|
===============================
|
|||
|
|
|||
|
If you think you can do one of these projects, please let me know.
|
|||
|
Your help is greatly appreciated. Send email to `mccallum@gnu.org'.
|
|||
|
|
|||
|
* Need to improve the testsuite and actually run it on gstep-base.
|
|||
|
|
|||
|
* 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.
|
|||
|
|
|||
|
* Make NS... classes raise the NSExceptions they are supposed to.
|
|||
|
Change many NSParameterAssert()'s into NSAssert()'s with
|
|||
|
explanations.
|
|||
|
|
|||
|
* Many implementations could be made more efficient. The library
|
|||
|
hasn't been efficiency tuned very much. Overridding more methods
|
|||
|
in certain 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...
|
|||
|
|
|||
|
* Implement efficient SmallInt and SmallFloat classes in the same
|
|||
|
sort of way that Smalltalk does. Talk to me.
|
|||
|
mccallum@gnu.ai.mit.edu.
|
|||
|
|
|||
|
McCallum's To Do's
|
|||
|
==================
|
|||
|
|
|||
|
* Separate core and non-core code in NSDictionary, NSSet, etc, the
|
|||
|
same way I did for NSArray.
|
|||
|
|
|||
|
* Separate Constant and non-Constant collections for the rest of the
|
|||
|
GNU connection classes the same way I did for Array.
|
|||
|
|
|||
|
* Make sure the GNU Archiver/Unarchiver handle
|
|||
|
-encodeConditionalObject: and -decodeObject: correctly.
|
|||
|
|
|||
|
* 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. (But
|
|||
|
perhaps this doesn't matter, since we recommend using shared
|
|||
|
libraries anyway.)
|
|||
|
|
|||
|
* 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.
|
|||
|
|
|||
|
* Do low-level frobbing of TCP to reduce delays.
|
|||
|
|
|||
|
* Make UdpPort work; make MachPort work.
|
|||
|
|
|||
|
* Finish NotificationQueue, and make it interoperate with the
|
|||
|
RunLoop properly.
|
|||
|
|
|||
|
* Make the NSTimer's work and interoperate with the RunLoop properly.
|
|||
|
|
|||
|
* Fix many memory allocation inconsistencies. Methods that return
|
|||
|
malloc'ed buffers should autorelease those buffers, (like
|
|||
|
readFormat:). (I think all these are fixed now.)
|
|||
|
|
|||
|
* Many code fixes and cleanups, indicated with `xxx' in the source.
|
|||
|
|
|||
|
* Add Coding methods to all the collection classes.
|
|||
|
|
|||
|
* Finish Collection heirarchy clean ups. We need non-mutable
|
|||
|
version for many of the classes.
|
|||
|
|
|||
|
* Possibly change implementation of `-(int)compare:anObject' for
|
|||
|
Collection. How should non-Indexed collections be ordered?
|
|||
|
|
|||
|
* Fix all the subclassResponsibility comments in objects/*.h
|
|||
|
|
|||
|
* I will finish gnustep-base documentation.
|
|||
|
|
|||
|
Questions
|
|||
|
=========
|
|||
|
|
|||
|
I would greatly appreciate your feedback on the questions below.
|
|||
|
Please email your thoughts to mccallum@gnu.ai.mit.edu.
|
|||
|
|
|||
|
* 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?)
|
|||
|
|
|||
|
* HashTable.m (-initKeyDesc:valueDesc:capacity:) I tried to make it
|
|||
|
portable, but I didn't try very hard. Anyone want to send in
|
|||
|
fixes?
|
|||
|
|
|||
|
* 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.>>
|
|||
|
|
|||
|
* 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.
|
|||
|
|
|||
|
* Does anyone really need the ability to set the collection element
|
|||
|
comparison function independent of the -compare: method?
|
|||
|
|
|||
|
* 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.
|
|||
|
|
|||
|
* Something like this needed? - elementDidChange: (elt*)elementPtr;
|
|||
|
Currently you have to remove, change, add, for some classes.
|
|||
|
|
|||
|
* 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.
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Albin's To Do List
|
|||
|
==================
|
|||
|
|
|||
|
I'm sure that there're other things to do, but these are the ones I
|
|||
|
know now:
|
|||
|
|
|||
|
General
|
|||
|
-------
|
|||
|
|
|||
|
* Make thread-safe all of my code that should be.
|
|||
|
|
|||
|
* Fully annotate all of my headers.
|
|||
|
|
|||
|
* Document my work and the use of its fruit.
|
|||
|
|
|||
|
Critical
|
|||
|
--------
|
|||
|
|
|||
|
* Code:
|
|||
|
+ (`src/array.m') `objects_array_check'
|
|||
|
|
|||
|
+ (`src/array.m') `objects_array_map_elements'
|
|||
|
|
|||
|
+ (`src/cbs-char-p.m') `objects_char_p_describe'
|
|||
|
|
|||
|
+ (`src/cbs-int-p.m') `objects_int_p_describe'
|
|||
|
|
|||
|
+ (`src/cbs-int.m') `objects_int_describe'
|
|||
|
|
|||
|
+ (`src/hash.m') `_objects_hash_hash'
|
|||
|
|
|||
|
+ (`src/hash.m') `objects_hash_check'
|
|||
|
|
|||
|
+ (`src/hash.m') `objects_hash_description'
|
|||
|
|
|||
|
+ (`src/list.m') `objects_list_is_equal_to_list'
|
|||
|
|
|||
|
+ (`src/map.m') `_objects_map_hash'
|
|||
|
|
|||
|
+ (`src/map.m') `objects_map_check'
|
|||
|
|
|||
|
+ (`src/map.m') `objects_map_description'
|
|||
|
|
|||
|
* Correct:
|
|||
|
+ (`src/array.m') `objects_array_dealloc'
|
|||
|
|
|||
|
+ (`src/cbs-int.m') `_GNUSTEP_BASE_NOT_AN_INT_MARKER'
|
|||
|
|
|||
|
* Improve the error handling of:
|
|||
|
+ (`src/array.m') `_objects_array_insert_bucket'
|
|||
|
|
|||
|
+ (`src/hash.m') `objects_hash_add_element_known_absent'
|
|||
|
|
|||
|
+ (`src/list.m') `objects_list_at_index_insert_element'
|
|||
|
|
|||
|
+ (`src/map.m') `objects_map_at_key_put_value_known_absent'
|
|||
|
|
|||
|
Not So Critical
|
|||
|
---------------
|
|||
|
|
|||
|
* Strengthen my resolve on the correctness of:
|
|||
|
+ (`src/cbs-char-p.m') `_GNUSTEP_BASE_NOT_A_CHAR_P_MARKER'
|
|||
|
|
|||
|
+ (`src/cbs-id.m') `_GNUSTEP_BASE_NOT_AN_ID_MARKER'
|
|||
|
|
|||
|
+ (`src/cbs-int-p.m') `_GNUSTEP_BASE_NOT_AN_INT_P_MARKER'
|
|||
|
|
|||
|
+ (`src/cbs-int-p.m') `objects_int_p_is_equal'
|
|||
|
|
|||
|
+ (`src/cbs-void-p.m') `_GNUSTEP_BASE_NOT_A_VOID_P_MARKER'
|
|||
|
|
|||
|
+ (`src/hash.m') `objects_hash_rightsize'
|
|||
|
|
|||
|
+ (`src/hash.m') `objects_hash_all_elements'
|
|||
|
|
|||
|
+ (`src/map.m') `objects_map_rightsize'
|
|||
|
|
|||
|
+ (`src/map.m') `objects_map_all_keys'
|
|||
|
|
|||
|
+ (`src/map.m') `objects_map_all_values'
|
|||
|
|
|||
|
* Improve the effeciency of:
|
|||
|
+ (`src/array.m') `_objects_array_insert_bucket'
|
|||
|
|
|||
|
+ (`src/hash.m') `objects_hash_minus_hash'
|
|||
|
|
|||
|
+ (`src/list.m') `objects_list_at_index_insert_list'
|
|||
|
|