
This is not a comprehensive list. I'll add more items as I discover
new "features" of GNUstep and Ruby:

TODO
====

- Understand the ObjC/GNUstep memory management model and see if RIGS
has it right. I think that I'm currently over conservative and don't
free enough memory. This has to checked thoroughly.

- See what to do with Protocols. See if they map to Ruby and how.

- Write more testing code (partially done)

- Investigate how to map Ruby Hash on GNUstep dictionaries (like in
NSArray above)

- handle calls to ObjC methods with a variable number of arguments

- Write documentation

- Modify GNUmakefiles to make RIGS compilable on platforms where only
GNUstep Base library is available (e.g. Windows)

- Work on using Ruby scripting from GNUstep/Objective C. Already works
partially but...

  . When an ObjC class imported in Ruby is extended on the Ruby side
  there must be a mechanism to make them visible in the ObjC runtime
  as well

  . When a new Ruby class inherits from an ObjC class then the new
  subclass must also be made visible in the ObjC runtime


DONE
====

- Morphing Ruby numbers into NSNumber (Done! see $NUMBER_AUTOCONVERT)

- Implement _C_STRUCT_B conversion in both direction (argument and
return value) and investigate how to best map STRUCT_B on Ruby types
(class, Struct, Array ??). Problem is STRUCT_B (e.g NSPoint, NSRange,
NSRect,...) are not ObjC classes so when returned to Ruby we don't
know what type of STRUCT_B they are and we can not map them
automatically on Ruby classes or structures.... (Done !....

....Final decision was to map C structures on Ruby Arrays. Pros: no
code needed to wrap the 150+ GNUstep methods and cast the returned C
structure to the appropriate Ruby Class. Cons: The returned structures
all "belong" to the Array class )

- Implement object duplication (dup). Also map == to isEqual (Done!)

- In NSArray add a new "new" Ruby method passing a Ruby array as
argument and automatically initialize the ObjC NSArray with
it. Conversely create a objects method in NSArray which return the
objects in it into a Ruby array. (Done!)

- Revisit all NSxxx.h and declare enums and constant in Ruby NSxxx.rb
files (a good example is NSString encoding constants. (see if this can
be automated by parsing the NSxxx.h files (Done!)