Nib translator program

The syntax for using the program is:

./trnib <.nib directory> [<outputfile>]

If outputfile is not given, the n input file name with suffix 
changed to .xmib is used.


e.g,

./test /u/ec/qureshi/Projects/WhatNib/MatrixTest.nib ./output


   This program has no documentation apart from this file.

   The purpose of this program is to translate an object archive file
created by the InterfaceBuilder into an object archive file that can
be read with the objcX class library for X/Motif with GNU Objective-C
archiving format.  The way it works is the following...

- For each class we wish to capture, a category extension has been
written.   These are the Xmxxxx.m files.   These categories overwrite
some methods in the NeXT classes so we can capture information.   These
will include objc/typedstream.h from /usr/local/include AND 
objc/typedstream.h from GNU runtime.  The former will come from NeXT's
Object.h, while the later is needed for the category.

- NXApp reads the .nib file.   The -awake method is sent to each
object so we can capture the list of Windows, Panels, and
CustomObjects in one list and the IBConnectors in another.  The idea
to do this came from someone on usenet after we posted a question on
how to do it.   Regretfully, we've forgotten his name.

- We then send to the list of objects, a message -convertCoordToMotif
if the object implements it.  This method is in the category.  This
method converts the y coordinate to one that works with Motif
coordinate system where x,y =0,0 is upper left.  Also, any minor
adjustments in size is taken care of.

- We then write out with GNU archiving the list of objects and the list
of IBConnenctors using the -write: method implemented in the Category
extension. 

- flush the output stream, close the file and it's done.

   The created GNU object archive file can be read by the
-loadNibFile: method of the Application class in the objcX class
library using the -read: method of each of the classes of that
library.   Obviously, changes to the -write: methods here need to have
corresponding changes to the -read: methods in objcX.

   One compiles this program with gcc.   Check the make file for appropriate includes for your environment.   gcc detects issues a warning on any file that includes /usr/include/objc/error.h.  Also, the -Wall flag is used and
we get warning from hash.h   No need to worry about either of these.   They look like...

---
/usr/include/objc/error.h:81: warning: `extern' is not at beginning of declaration
./objc/hash.h:161: warning: `hash_ptr' defined but not used
./objc/hash.h:170: warning: `hash_string' defined but not used
./objc/hash.h:187: warning: `compare_ptrs' defined but not used
./objc/hash.h:195: warning: `compare_strings' defined but not used
---

   Some files in this directory are from the GNU Objective-C runtime.   They may have slight differences from the original in order to avoid clashes with the NeXT runtime.   We have not yet documented therse differences or made a proper patch file like we ought to do.   So with a future releaes of the
GNU runtime, these files will have to be checked for bug fixes.

   
   Questions and comments on this program can be directed to me:

	Paul Kunz
	Paul_Kunz@slac.stanford.edu
	Stanford Linear Accelerator Center
	Stanford University



