Updated names from libobjects to libgnustep-base.

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1459 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
Andrew McCallum 1996-04-18 00:23:58 +00:00
parent 75de7725a0
commit 7e98d506e6
11 changed files with 206 additions and 301 deletions

View file

@ -40,7 +40,6 @@ include $(srcdir)/../Makeconf
include $(srcdir)/../Version include $(srcdir)/../Version
TEXI_FILES = \ TEXI_FILES = \
advertisement.texi \
announce.texi \ announce.texi \
install.texi \ install.texi \
gnustep-base.texi \ gnustep-base.texi \
@ -58,31 +57,31 @@ TODO INSTALL NEWS README ANNOUNCE ADVERTISEMENT
all: all:
info: $(TEXT_FILES) info: $(TEXT_FILES)
dvi: libobjects.dvi objective-c.dvi dvi: gnustep-base.dvi objective-c.dvi
version.texi: $(srcdir)/../Version version.texi: $(srcdir)/../Version
rm -f version.texi rm -f version.texi
echo '@set OBJECTS_VERSION' $(OBJECTS_VERSION) \ echo '@set GNUSTEP_BASE_VERSION' $(VERSION) \
> version.texi > version.texi
echo '@set OBJECTS_GCC_VERSION' $(OBJECTS_GCC_VERSION) \ echo '@set GNUSTEP_BASE_GCC_VERSION' $(GCC_VERSION) \
>> version.texi >> version.texi
if [ $(OBJECTS_FTP_MACHINE) ]; then \ if [ $(FTP_MACHINE) ]; then \
echo '@set OBJECTS_FTP_MACHINE' $(OBJECTS_FTP_MACHINE) \ echo '@set GNUSTEP_BASE_FTP_MACHINE' $(FTP_MACHINE) \
>> version.texi; fi >> version.texi; fi
if [ $(OBJECTS_FTP_DIRECTORY) ]; then \ if [ $(FTP_DIRECTORY) ]; then \
echo '@set OBJECTS_FTP_DIRECTORY' $(OBJECTS_FTP_DIRECTORY) \ echo '@set GNUSTEP_BASE_FTP_DIRECTORY' $(FTP_DIRECTORY) \
>> version.texi; fi >> version.texi; fi
libobjects.dvi: libobjects.texi version.texi gnustep-base.dvi: gnustep-base.texi version.texi
$(TEXI2DVI) $(srcdir)/libobjects.texi $(TEXI2DVI) $(srcdir)/gnustep-base.texi
objective-c.dvi: objective-c.texi objective-c.dvi: objective-c.texi
$(TEXI2DVI) $(srcdir)/objective-c.texi $(TEXI2DVI) $(srcdir)/objective-c.texi
MAKEINFO_FLAGS = -I $(srcdir) MAKEINFO_FLAGS = -I $(srcdir)
libobjects.info: libobjects.texi todo.texi version.texi gnustep-base.info: gnustep-base.texi todo.texi version.texi
@echo Sorry, makeinfo does not yet support Objective C documentation. @echo Sorry, makeinfo does not yet support Objective C documentation.
:$(MAKEINFO) $(MAKEINFO_FLAGS) $(srcdir)/libobjects.texi :$(MAKEINFO) $(MAKEINFO_FLAGS) $(srcdir)/gnustep-base.texi
objective-c.info: objective-c.texi objective-c.info: objective-c.texi
@echo Sorry, makeinfo does not yet support Objective C documentation. @echo Sorry, makeinfo does not yet support Objective C documentation.
:$(MAKEINFO) $(MAKEINFO_FLAGS) $(srcdir)/objective-c.texi :$(MAKEINFO) $(MAKEINFO_FLAGS) $(srcdir)/objective-c.texi
@ -107,28 +106,28 @@ ADVERTISEMENT: advertisement.texi version.texi
# Make substitutions for @email{} and @url{} before passing to makeinfo. # Make substitutions for @email{} and @url{} before passing to makeinfo.
# These substitution scripts could be cleaned up. # These substitution scripts could be cleaned up.
GNUstep-FAQ: gnustep-faq.texi version.texi Gnustep-FAQ: gnustep-faq.texi version.texi
rm -f GNUstep-FAQ.texi rm -f Gnustep-FAQ.texi
sed -e 's,@email{\([^}]*\)},<\1>,g' \ sed -e 's,@email{\([^}]*\)},<\1>,g' \
$(srcdir)/gnustep-faq.texi \ $(srcdir)/gnustep-faq.texi \
| sed -e 's,@url{\([^}]*\)},@samp{\1},g' \ | sed -e 's,@url{\([^}]*\)},@samp{\1},g' \
> GNUstep-FAQ.texi > Gnustep-FAQ.texi
$(MAKEINFO) $(MAKEINFO_FLAGS) -o $@ \ $(MAKEINFO) $(MAKEINFO_FLAGS) -o $@ \
--no-header --no-split GNUstep-FAQ.texi --no-header --no-split Gnustep-FAQ.texi
rm -f GNUstep-FAQ.texi rm -f Gnustep-FAQ.texi
# Make substitutions for @email{} and @url{}, and add @br{} before @item # Make substitutions for @email{} and @url{}, and add @br{} before @item
# before passing to texi2html. Note: I think that this `@br{}' should # before passing to texi2html. Note: I think that this `@br{}' should
# actually be a `@br', but the extra `{}' is necessary to work around a # actually be a `@br', but the extra `{}' is necessary to work around a
# bug in texi@html. # bug in texi@html.
# These substitution scripts could be cleaned up. # These substitution scripts could be cleaned up.
GNUstep-FAQ.html: gnustep-faq.texi version.texi Gnustep-FAQ.html: gnustep-faq.texi version.texi
rm -f GNUstep-FAQ.texi rm -f Gnustep-FAQ.texi
sed -e 's,@email{\([^}]*\)},<A HREF="mailto:\1">\1</A>,g' \ sed -e 's,@email{\([^}]*\)},<A HREF="mailto:\1">\1</A>,g' \
$(srcdir)/gnustep-faq.texi \ $(srcdir)/gnustep-faq.texi \
| sed -e 's,@url{\([^}]*\)},<A HREF="\1">\1</A>,g' \ | sed -e 's,@url{\([^}]*\)},<A HREF="\1">\1</A>,g' \
| sed -e 's,^ *$$,@br{},g' \ | sed -e 's,^ *$$,@br{},g' \
> GNUstep-FAQ.texi > Gnustep-FAQ.texi
texi2html -expandinfo $(MAKEINFO_FLAGS) GNUstep-FAQ.texi texi2html -expandinfo $(MAKEINFO_FLAGS) Gnustep-FAQ.texi
# | awk -- '/@item/ { print "@br{}" } /@end itemize/ { print "@br{}" } ; { print }' \ # | awk -- '/@item/ { print "@br{}" } /@end itemize/ { print "@br{}" } ; { print }' \
@ -139,7 +138,7 @@ RCS_FILES = $(TEXI_FILES) Makefile.in
DIST_FILES = $(RCS_FILES) texinfo.tex \ DIST_FILES = $(RCS_FILES) texinfo.tex \
$(TOP_DOC_FILES) ANNOUNCE ADVERTISEMENT TODO $(TOP_DOC_FILES) ANNOUNCE ADVERTISEMENT TODO
# In the future we'll want to install libobjects.info and objective-c.info. # In the future we'll want to install gnustep-base.info and objective-c.info.
install: install:
uninstall: uninstall:
@ -150,17 +149,17 @@ clean: mostlyclean
rm -f version.texi rm -f version.texi
rm -f $(TEXT_FILES) rm -f $(TEXT_FILES)
rm -f *.info rm -f *.info
rm -f libobjects.dvi libobjects.aux libobjects.log \ rm -f gnustep-base.dvi gnustep-base.aux gnustep-base.log \
libobjects.toc libobjects.cl \ gnustep-base.toc gnustep-base.cl \
libobjects.cp libobjects.cps libobjects.fn libobjects.fns \ gnustep-base.cp gnustep-base.cps gnustep-base.fn gnustep-base.fns \
libobjects.ky libobjects.pg libobjects.pr libobjects.tp \ gnustep-base.ky gnustep-base.pg gnustep-base.pr gnustep-base.tp \
libobjects.vr gnustep-base.vr
distclean: clean distclean: clean
rm -f Makefile rm -f Makefile
realclean: distclean realclean: distclean
rm -f libobjects.info version.texi \ rm -f gnustep-base.info version.texi \
README TODO INSTALL NEWS ANNOUNCE README TODO INSTALL NEWS ANNOUNCE
copy-dist: $(DIST_FILES) copy-dist: $(DIST_FILES)

View file

@ -1,11 +1,11 @@
@chapter GNU Objective-C Class Library @chapter GNU Objective-C Class Library
@c set the vars OBJECTS_VERSION and GCC_VERSION @c set the vars GNUSTEP_BASE_VERSION and GCC_VERSION
@include version.texi @include version.texi
The Gnustep Base Library (libobjects) is a library of The Gnustep Base Library (libgnustep-base) is a library of
general-purpose, non-graphical Objective C objects written by Andrew general-purpose, non-graphical Objective C objects written by Andrew
McCallum. What `libg++' is to GNU's C++, `libobjects' is to GNU's McCallum. What `libg++' is to GNU's C++, `libgnustep-base' is to GNU's
Objective C. Objective C.
The library features collection objects for maintaining groups of The library features collection objects for maintaining groups of
@ -134,7 +134,7 @@ does *not* do:
The library is available by anonymous ftp at URL: The library is available by anonymous ftp at URL:
@smallexample @smallexample
ftp://prep.ai.mit.edu/pub/gnu/libobjects-@value{OBJECTS_VERSION}.tar.gz ftp://prep.ai.mit.edu/pub/gnu/libgnustep-base-@value{GNUSTEP_BASE_VERSION}.tar.gz
@end smallexample @end smallexample
Since @samp{prep} is heavily loaded, you are encouraged to use GNU Since @samp{prep} is heavily loaded, you are encouraged to use GNU
mirror sites. mirror sites.
@ -146,7 +146,7 @@ be placed at @samp{ftp://alpha.gnu.ai.mit.edu/gnu}.
@section GNUStep @section GNUStep
The @samp{libobjects} library already contains many of the GNUStep The @samp{libgnustep-base} library already contains many of the GNUStep
common classes: List, HashTable, Storage, NXStringTable. In the future common classes: List, HashTable, Storage, NXStringTable. In the future
it will also contain the foundation kit classes for GNUStep. Progress it will also contain the foundation kit classes for GNUStep. Progress
is already being made on this front. is already being made on this front.

View file

@ -1,9 +1,9 @@
@chapter Gnustep Base Library @chapter Gnustep Base Library
@c set the vars OBJECTS_VERSION and OBJECTS_GCC_VERSION @c set the vars GNUSTEP_BASE_VERSION and GNUSTEP_BASE_GCC_VERSION
@include version.texi @include version.texi
The Gnustep Base Library, version @value{OBJECTS_VERSION}, is now The Gnustep Base Library, version @value{GNUSTEP_BASE_VERSION}, is now
available. available.
@section What is the Gnustep Base Library? @section What is the Gnustep Base Library?
@ -35,21 +35,21 @@ distribution.
@section Where can you get it? How can you compile it? @section Where can you get it? How can you compile it?
@ifset OBJECTS_FTP_MACHINE @ifset GNUSTEP_BASE_FTP_MACHINE
The libobjects-@value{OBJECTS_VERSION}.tar.gz distribution file has been The libgnustep-base-@value{GNUSTEP_BASE_VERSION}.tar.gz distribution file has been
placed on @samp{@value{OBJECTS_FTP_MACHINE}} in placed on @samp{@value{GNUSTEP_BASE_FTP_MACHINE}} in
@samp{@value{OBJECTS_FTP_DIRECTORY}}. @samp{@value{GNUSTEP_BASE_FTP_DIRECTORY}}.
@end ifset @end ifset
@ifclear OBJECTS_FTP_MACHINE @ifclear GNUSTEP_BASE_FTP_MACHINE
The libobjects-@value{OBJECTS_VERSION}.tar.gz distribution file has not The libgnustep-base-@value{GNUSTEP_BASE_VERSION}.tar.gz distribution file has not
been made available by anonymous ftp. been made available by anonymous ftp.
@end ifclear @end ifclear
More information about the library, including a list of machines on More information about the library, including a list of machines on
which it has been successfully compiled and used, can be found at which it has been successfully compiled and used, can be found at
@samp{http://www.cs.rochester.edu/u/mccallum/libobjects}. @samp{http://www.cs.rochester.edu/u/mccallum/libgnustep-base}.
The library requires gcc @value{OBJECTS_GCC_VERSION} or higher. The The library requires gcc @value{GNUSTEP_BASE_GCC_VERSION} or higher. The
library does not work with the NEXTSTEP 3.2 compiler because that library does not work with the NEXTSTEP 3.2 compiler because that
version of NeXT's cc cannot handle nested functions. Until a later version of NeXT's cc cannot handle nested functions. Until a later
release from NeXT, NEXTSTEP users will have to install gcc. See the release from NeXT, NEXTSTEP users will have to install gcc. See the

View file

@ -1,25 +1,24 @@
@ifset FAQ_ONLY @ifset FAQ_ONLY
@chapter Frequently Asked Questions with Answers @chapter Frequently Asked Questions with Answers
@c set the vars GNUSTEP_BASE_VERSION and GCC_VERSION @c set the vars GNUSTEP_BASE_VERSION and GNUSTEP_BASE_GCC_VERSION
@include version.texi @include version.texi
@end ifset @end ifset
@enumerate @enumerate
@item Why not separate the GNU classes from the NS* foundation @item Why not separate the GNU classes from the NS* foundation
classes? classes?
They are intimately intertwinned---not in a messy way, but for good They are intimately intertwinned---not in a messy way, but for good
reasons. ...explain more detail... reasons. ...explain more detail...
@item I'm trying to compile an Objective C program on Linux, and it's not @item I'm trying to compile an Objective C program on Linux, and it's not
working. working.
Link with @samp{-lieee}. Link with @samp{-lieee}.
@item What are the differences and improvements of the GNU base classes @item What are the differences and improvements of the GNU base classes
over the NS* foundation classes? over the NS* foundation classes?

View file

@ -2,7 +2,7 @@
@c %**start of header @c %**start of header
@settitle User's Guide to the GNU Objective-C Class Library @settitle User's Guide to the GNU Objective-C Class Library
@setfilename libobjects.info @setfilename libgnustep-base.info
@c %**end of header @c %**end of header
@defcodeindex cl @defcodeindex cl
@defcodeindex pr @defcodeindex pr
@ -19,7 +19,7 @@ END-INFO-DIR-ENTRY
@end format @end format
@end ifinfo @end ifinfo
@c set the vars LIBOBJECTS_VERSION and GCC_VERSION @c set the vars GNUSTEP_BASE_VERSION and GCC_VERSION
@include version.texi @include version.texi
@ifinfo @ifinfo
@ -65,7 +65,7 @@ Free Software Foundation instead of in the original English.
@title GNU Objective C Class Library @title GNU Objective C Class Library
@sp 3 @sp 3
@c @subtitle last updated Oct 26, 1993 @c @subtitle last updated Oct 26, 1993
@subtitle Version @value{OBJECTS_VERSION} @subtitle Version @value{GNUSTEP_BASE_VERSION}
@subtitle (for use with @samp{gcc} version @value{GCC_VERSION}) @subtitle (for use with @samp{gcc} version @value{GCC_VERSION})
@author Andrew Kachites McCallum (mccallum@@gnu.ai.mit.edu) @author Andrew Kachites McCallum (mccallum@@gnu.ai.mit.edu)
@page @page
@ -97,12 +97,12 @@ be performing a valuable service if you report any bugs you encounter.}
@ignore @ignore
saved copy saved copy
* Copying:: GNU Library Public License says how you can copy * Copying:: GNU Library Public License says how you can copy
and share libobjects. and share libgnustep-base.
* Contributors:: People who have contributed to libobjects. * Contributors:: People who have contributed to libgnustep-base.
* Installation:: How to configure, compile and install libobjects. * Installation:: How to configure, compile and install libgnustep-base.
* Trouble:: If you have trouble installing libobjects. * Trouble:: If you have trouble installing libgnustep-base.
* Overview:: libobjects in brief. * Overview:: libgnustep-base in brief.
* Organization:: The heirarchy of protocols and classes. * Organization:: The heirarchy of protocols and classes.
* Conventions:: Stylistic conventions and design philosophy. * Conventions:: Stylistic conventions and design philosophy.
* Content Types:: Collections can contain C types as well as objects. * Content Types:: Collections can contain C types as well as objects.
@ -133,8 +133,8 @@ saved copy
@top Libobjects @top Libobjects
This manual documents how to install and use the GNU Objective-C This manual documents how to install and use the GNU Objective-C
Class Library (or @samp{libobjects}), version Class Library (or @samp{libgnustep-base}), version
@value{LIBOBJECTS_VERSION}, for use with @samp{gcc} version @value{GNUSTEP_BASE_VERSION}, for use with @samp{gcc} version
@value{GCC_VERSION}. @value{GCC_VERSION}.
It is nothing but a skeleton now, mostly containing rough notes. It is nothing but a skeleton now, mostly containing rough notes.
@ -143,12 +143,12 @@ In the future it will be fleshed out and the text will be polished.
@end ifinfo @end ifinfo
@menu @menu
* Copying:: GNU Library Public License says how you can copy * Copying:: GNU Library Public License says how you can copy
and share libobjects. and share libgnustep-base.
* Contributors:: People who have contributed to libobjects. * Contributors:: People who have contributed to libgnustep-base.
* Installation:: How to configure, compile and install libobjects. * Installation:: How to configure, compile and install libgnustep-base.
* Trouble:: If you have trouble installing libobjects. * Trouble:: If you have trouble installing libgnustep-base.
* Overview:: libobjects in brief. * Overview:: libgnustep-base in brief.
* Organization:: The heirarchy of protocols and classes. * Organization:: The heirarchy of protocols and classes.
* Conventions:: Stylistic conventions and design philosophy. * Conventions:: Stylistic conventions and design philosophy.
* Content Types:: Collections can contain C types as well as objects. * Content Types:: Collections can contain C types as well as objects.
@ -189,7 +189,7 @@ Andrew McCallum <mccallum@@gnu.ai.mit.edu> designed the protocol and
class heirarchies, and wrote the otherwise unattributed classes. class heirarchies, and wrote the otherwise unattributed classes.
@item @item
Kresten Krab Thorup <Kresten_Thorup@@NeXT.COM> made libobjects possible by Kresten Krab Thorup <Kresten_Thorup@@NeXT.COM> made libgnustep-base possible by
writing the GNU Objective-C runtime. He also contributed the GapArray writing the GNU Objective-C runtime. He also contributed the GapArray
and Storage classes. He also wrote patches to texinfo that make and Storage classes. He also wrote patches to texinfo that make
@code{deftypemethod} possible. @code{deftypemethod} possible.
@ -1261,7 +1261,7 @@ rest of the library.
@item @item
Acceptance of contributions means that the code is accepted for adaptation Acceptance of contributions means that the code is accepted for adaptation
into libobjects. FSF must reserve the right to make various editorial changes into libgnustep-base. FSF must reserve the right to make various editorial changes
in code. Very often, this merely entails formatting, maintenance of various in code. Very often, this merely entails formatting, maintenance of various
conventions, etc. Contributors are always given authorship credit and shown conventions, etc. Contributors are always given authorship credit and shown
the final version for approval. the final version for approval.
@ -1277,7 +1277,7 @@ support is strongly encouraged.
@end itemize @end itemize
Extensions, comments, and suggested modifications of existing libobjects Extensions, comments, and suggested modifications of existing libgnustep-base
features are also very welcome. features are also very welcome.
@node Protocol Index, Class Index, Projects, Top @node Protocol Index, Class Index, Projects, Top

View file

@ -1,10 +1,10 @@
@c A FAQ for GNUstep @c A FAQ for Gnustep
@c @c
@c This file uses the special commands @url{} and @email{}. They are @c This file uses the special commands @url{} and @email{}. They are
@c handled by the libobjects/doc/Makefile. @c handled by the doc/Makefile.
@setfilename GNUstep-FAQ.info @setfilename Gnustep-FAQ.info
@settitle GNUstep Frequently Asked Questions with Answers @settitle Gnustep Frequently Asked Questions with Answers
@iftex @iftex
@global@let@email=@i @global@let@email=@i
@ -17,7 +17,7 @@
@c @end ifinfo @c @end ifinfo
@iftex @iftex
@chapter GNUstep Frequently Asked Questions with Answers @chapter Gnustep Frequently Asked Questions with Answers
@end iftex @end iftex
Maintained by Andrew McCallum @email{mccallum@@gnu.ai.mit.edu}, with Maintained by Andrew McCallum @email{mccallum@@gnu.ai.mit.edu}, with
@ -27,52 +27,52 @@ contributions by Pascal Forget @email{pascal@@wsc.com}, Scott Christley
Last updated 26 March 1996. Last updated 26 March 1996.
The most up-to-date version of this FAQ is The most up-to-date version of this FAQ is
available at @url{ftp://ftp.cs.rochester.edu/pub/u/mccallum/libobjects}. available at @url{ftp://ftp.cs.rochester.edu/pub/u/mccallum/gnustep-base}.
Please send corrections to @email{mccallum@@gnu.ai.mit.edu}. Please send corrections to @email{mccallum@@gnu.ai.mit.edu}.
The intended audience of this FAQ is future and present code developers The intended audience of this FAQ is future and present code developers
for GNUstep. This FAQ serves a purpose complementary to the GNUstep WWW for Gnustep. This FAQ serves a purpose complementary to the Gnustep WWW
pages---since it is written and maintained directly by those writing pages---since it is written and maintained directly by those writing
code for GNUstep, it emphasizes (although not exclusively): (1) code for Gnustep, it emphasizes (although not exclusively): (1)
technical details and organization, (2) the functionality is coded and technical details and organization, (2) the functionality is coded and
working now. This FAQ is intended to provide a succinct document in working now. This FAQ is intended to provide a succinct document in
which to find GNUstep information without hype. which to find Gnustep information without hype.
@section GNUstep General Information @section Gnustep General Information
@enumerate @enumerate
@item @b{What is GNUstep?} @item @b{What is Gnustep?}
GNUstep is the Free Software Foundation's effort to implement NeXT Gnustep is the Free Software Foundation's effort to implement NeXT
Software Inc.'s OpenStep Standard. The project is not finished, however Software Inc.'s OpenStep Standard. The project is not finished, however
some components are useable now. some components are useable now.
The GNUstep project consists of the following sub-projects: The Gnustep project consists of the following sub-projects:
@itemize @bullet @itemize @bullet
@item GNU Objective C Compiler and Objective C Runtime Library - @item GNU Objective C Compiler and Objective C Runtime Library -
Although not actually a sub-project the GNUstep, GCC and the GNU Although not actually a sub-project the Gnustep, GCC and the GNU
Objective C Runtime Library are integral to GNUstep, since they are used Objective C Runtime Library are integral to Gnustep, since they are used
to make every GNU Objective C program. to make every GNU Objective C program.
@item GNUstep Base Library - Code for non-graphical objects, such as @item Gnustep Base Library - Code for non-graphical objects, such as
strings, collections, archiving support and distributed objects strings, collections, archiving support and distributed objects
messaging. (Including functionality similar to OpenStep's messaging. (Including functionality similar to OpenStep's
@samp{FoundationKit}.) @samp{FoundationKit}.)
@item GNUstep GUI Library - Code for graphical objects used in making a @item Gnustep GUI Library - Code for graphical objects used in making a
Graphical User Interface (GUI). This includes buttons, sliders, text Graphical User Interface (GUI). This includes buttons, sliders, text
fields, windows, menus, etc. (Including functionality similar to fields, windows, menus, etc. (Including functionality similar to
OpenStep's @samp{AppKit}.) OpenStep's @samp{AppKit}.)
@item GNUstep DisplayGhostScript Server - A server that draws PostScript @item Gnustep DisplayGhostScript Server - A server that draws PostScript
graphics to the screen, and receives events from the keyboard and graphics to the screen, and receives events from the keyboard and
mouse. It is based on GhostScript. mouse. It is based on GhostScript.
@item GNUstep Interface Modeller Application - An application for @item Gnustep Interface Modeller Application - An application for
graphically assembling application interfaces. graphically assembling application interfaces.
@end itemize @end itemize
@ -80,8 +80,8 @@ graphically assembling application interfaces.
More detailed information about each of these sub-projects can be found More detailed information about each of these sub-projects can be found
in their own sections below. in their own sections below.
There are several projects related to GNUstep that are not officially There are several projects related to Gnustep that are not officially
part of the GNU project and GNUstep, but may become so in the future. part of the GNU project and Gnustep, but may become so in the future.
These include: the @samp{G3DKit} project, (contact Thomas Engle These include: the @samp{G3DKit} project, (contact Thomas Engle
@email{tsengel@@cip.informatik.uni-erlangen.de}); an application library @email{tsengel@@cip.informatik.uni-erlangen.de}); an application library
based on OpenGL, (contact Georg Tuparev based on OpenGL, (contact Georg Tuparev
@ -89,7 +89,7 @@ based on OpenGL, (contact Georg Tuparev
code management and development environment, (contact unknown). If you code management and development environment, (contact unknown). If you
know of others, please contact the FAQ maintainer. know of others, please contact the FAQ maintainer.
The initial target platforms for GNUstep are Linux and other UN*X's. The initial target platforms for Gnustep are Linux and other UN*X's.
There has been some OS/2 WARP work, but I have not seen any ongoing work There has been some OS/2 WARP work, but I have not seen any ongoing work
on this platform yet, (contact McCallum if you are interested). on this platform yet, (contact McCallum if you are interested).
@ -110,17 +110,17 @@ You can obtain a copy of the OpenStep standard in
@itemize @bullet @itemize @bullet
@item texinfo at @url{http://www.dartmouth.edu/~ajones/Projects}. @item texinfo at @url{http://www.dartmouth.edu/~ajones/Projects}.
@item HTML at @url{http://www.nmr.embl-heidelberg.de/GNUstep/GNUOpenStep}. @item HTML at @url{http://www.nmr.embl-heidelberg.de/Gnustep/GNUOpenStep}.
@item PostScript and RTF at @url{ftp://ftp.next.com/pub/OpenStepSpec/}. @item PostScript and RTF at @url{ftp://ftp.next.com/pub/OpenStepSpec/}.
@end itemize @end itemize
@item @b{Who is currently involved in writing GNUstep code?} @item @b{Who is currently involved in writing Gnustep code?}
For the sake of being social and getting to know each other, here is a For the sake of being social and getting to know each other, here is a
list of the folks who are currently, actively contributing GNUstep code. list of the folks who are currently, actively contributing Gnustep code.
The list includes a brief descriptions of each person's background and The list includes a brief descriptions of each person's background and
involvement in the GNUstep coding efforts. involvement in the Gnustep coding efforts.
@itemize @bullet @itemize @bullet
@ -129,17 +129,17 @@ excellent, long service as user, tester, and code contributor to both
the Base Library and the GUI Library. the Base Library and the GUI Library.
@item Andrew McCallum @email{mccallum@@gnu.ai.mit.edu} was appointed chief @item Andrew McCallum @email{mccallum@@gnu.ai.mit.edu} was appointed chief
maintainer of the GNUstep project by Richard Stallman in January 1996. maintainer of the Gnustep project by Richard Stallman in January 1996.
He has been involved and hacking in the NeXT community since NeXTSTEP He has been involved and hacking in the NeXT community since NeXTSTEP
version 0.8; he has been working on GNU Objective C and the Base Library version 0.8; he has been working on GNU Objective C and the Base Library
since 1993. since 1993.
@item Pascal Forget @email{pascal@@wsc.com} is working on the GUI @item Pascal Forget @email{pascal@@wsc.com} is working on the GUI
Library in conjunction with Scott Christley. He has worked with Randy Library in conjunction with Scott Christley. He has worked with Randy
Chapman's DisplayGhostScript and X Windows as a GNUstep GUI backend. Chapman's DisplayGhostScript and X Windows as a Gnustep GUI backend.
@item Randy Chapman @email{chapman@@u.washington.edu} has been working @item Randy Chapman @email{chapman@@u.washington.edu} has been working
on the GNUstep DisplayGhostScript Server, adding DPS extensions to on the Gnustep DisplayGhostScript Server, adding DPS extensions to
GhostScript, including pswrap work. GhostScript, including pswrap work.
@item Scott Christley @email{scottc@@net-community.com} is in charge of @item Scott Christley @email{scottc@@net-community.com} is in charge of
@ -150,58 +150,58 @@ has already written much of the GUI Library frontend.
@end itemize @end itemize
There are many others who have made significant contributions to There are many others who have made significant contributions to
GNUstep, but who are not currently contributing code, (such as Kresten Gnustep, but who are not currently contributing code, (such as Kresten
Thorup @email{krab@@next.com} and Paul Kunz Thorup @email{krab@@next.com} and Paul Kunz
@email{paul_kunz@@slac.stanford.edu}). For more information about @email{paul_kunz@@slac.stanford.edu}). For more information about
GNUstep history, see the GNUstep WWW pages. Gnustep history, see the Gnustep WWW pages.
There are also several others who have contributed individual classes to There are also several others who have contributed individual classes to
GNUstep, but who are not actively contributing to general GNUstep work. Gnustep, but who are not actively contributing to general Gnustep work.
This list is not intended to be a complete list of GNUstep code This list is not intended to be a complete list of Gnustep code
contributors; that information is available in each of the GNUstep code contributors; that information is available in each of the Gnustep code
packages. packages.
There are also other code developers who are writing Objective C code There are also other code developers who are writing Objective C code
related to GNUstep, but for projects that are not officially part of the related to Gnustep, but for projects that are not officially part of the
GNU project and GNUstep. We hope that some of these projects will join GNU project and Gnustep. We hope that some of these projects will join
the GNU project and GNUstep in the future. the GNU project and Gnustep in the future.
Please send corrections to the FAQ maintainer. Please send corrections to the FAQ maintainer.
@item @b{Is there a WWW site for GNUstep? Are there mailing lists for GNUstep?} @item @b{Is there a WWW site for Gnustep? Are there mailing lists for Gnustep?}
There is a WWW site at @url{http://www.gnustep.org}, (and its mirror There is a WWW site at @url{http://www.Gnustep.org}, (and its mirror
@url{http://www.NMR.EMBL-Heidelberg.DE/GNUstep}, that contains many @url{http://www.NMR.EMBL-Heidelberg.DE/Gnustep}, that contains many
useful pointers. The technical information in this FAQ may be more up useful pointers. The technical information in this FAQ may be more up
to date than the WWW pages since this FAQ is maintained directly by the to date than the WWW pages since this FAQ is maintained directly by the
people who are developing GNUstep code. people who are developing Gnustep code.
There are several mailing lists: There are several mailing lists:
@itemize @bullet @itemize @bullet
@item @email{discussion@@gnustep.org} is a mailing list for general @item @email{discussion@@Gnustep.org} is a mailing list for general
discussion of GNUstep developments. Announcements about GNUstep discussion of Gnustep developments. Announcements about Gnustep
progress are also made there. The list is maintained by Georg Tuparev progress are also made there. The list is maintained by Georg Tuparev
@email{Tuparev@@EMBL-Heidelberg.de}. @email{Tuparev@@EMBL-Heidelberg.de}.
To join, send mail to @email{discussion-request@@gnustep.org}. To join, send mail to @email{discussion-request@@Gnustep.org}.
@item @email{webmasters@@gnustep.org} is a mailing list for discussion of @item @email{webmasters@@Gnustep.org} is a mailing list for discussion of
the GNUstep WWW site. the Gnustep WWW site.
To join, send mail to @email{webmasters-request@@gnustep.org}. To join, send mail to @email{webmasters-request@@Gnustep.org}.
@item @email{g3dkit@@gnustep.org} is a mailing list for discussion of a @item @email{g3dkit@@Gnustep.org} is a mailing list for discussion of a
library for drawing 3D graphics; it is based on OpenGL and RenderMan. library for drawing 3D graphics; it is based on OpenGL and RenderMan.
The Free Software Foundation is hoping that this work can become an The Free Software Foundation is hoping that this work can become an
official part of the GNU project and the GNUstep project. official part of the GNU project and the Gnustep project.
To join, send mail to @email{g3dkit@@gnustep.org}. To join, send mail to @email{g3dkit@@Gnustep.org}.
@item There is also a private mailing list for the core active @item There is also a private mailing list for the core active
developers of GNUstep. Those people who contribute large sections of developers of Gnustep. Those people who contribute large sections of
code and who are interested in making and planning further contributions code and who are interested in making and planning further contributions
may be invited to join. We apologize in advance, but, for the sake of may be invited to join. We apologize in advance, but, for the sake of
efficient communication, the list is not open to people who are not efficient communication, the list is not open to people who are not
@ -229,20 +229,20 @@ can be found below.
With free software, you should never, ever, believe promises about when With free software, you should never, ever, believe promises about when
a project will be finished. ...However, that said: there are certain a project will be finished. ...However, that said: there are certain
GNUstep developers that are counting on having useful Base and GUI Gnustep developers that are counting on having useful Base and GUI
libraries working by the end of Summer 1996. libraries working by the end of Summer 1996.
@item @b{How can I help?} @item @b{How can I help?}
If you have a specific piece of functionality that you would like to If you have a specific piece of functionality that you would like to
contribute, or if you would like to ask for suggestions about what contribute, or if you would like to ask for suggestions about what
coding work you can do to help, contact the GNUstep Chief Maintainer, coding work you can do to help, contact the Gnustep Chief Maintainer,
Andrew McCallum @email{mccallum@@gnu.ai.mit.edu}. Andrew McCallum @email{mccallum@@gnu.ai.mit.edu}.
@end enumerate @end enumerate
@c GNUstep General @c Gnustep General
More detailed inforation about each of the GNUstep sub-projects can be More detailed inforation about each of the Gnustep sub-projects can be
found below. found below.
@section GNU Objective C Compiler and Objective C Runtime Library @section GNU Objective C Compiler and Objective C Runtime Library
@ -289,7 +289,7 @@ initialization and when @samp{+poseAs:} is called.
selector; NeXT's does not. A selector-type is a string that describes selector; NeXT's does not. A selector-type is a string that describes
the C variable types for the method's return and argument values. Among the C variable types for the method's return and argument values. Among
other uses, selector-types is extrememly helpful for fast distributed other uses, selector-types is extrememly helpful for fast distributed
objects implementations, (see GNUstep Base Library Section, below). objects implementations, (see Gnustep Base Library Section, below).
@item Many of the GNU functions have different names than their @item Many of the GNU functions have different names than their
corresponding NeXT functions; the GNU names conform to the GNU coding corresponding NeXT functions; the GNU names conform to the GNU coding
@ -318,7 +318,7 @@ Objective C Runtime runs on all, platforms on which GCC runs.
GCC version 2.7.2 does not contain the thread-safe features, but the GCC version 2.7.2 does not contain the thread-safe features, but the
next version of GCC will. A patch for thread-safe features is provided next version of GCC will. A patch for thread-safe features is provided
with the latest developer snaphots of the GNUstep Base Library. There with the latest developer snaphots of the Gnustep Base Library. There
are currently thread-safe backends for DEC OSF/1, Solaris, IRIX, and are currently thread-safe backends for DEC OSF/1, Solaris, IRIX, and
WindowsNT. Volunteers are solicited for writing additional back-ends, WindowsNT. Volunteers are solicited for writing additional back-ends,
especially one for Linux. especially one for Linux.
@ -327,13 +327,13 @@ especially one for Linux.
@c GNU Compiler and Objective C Runtime Library @c GNU Compiler and Objective C Runtime Library
@section GNUstep Base Library @section Gnustep Base Library
@enumerate @enumerate
@item @b{What is the GNUstep Base Library?} @item @b{What is the Gnustep Base Library?}
The GNUstep Base Library is a library of general-purpose, non-graphical The Gnustep Base Library is a library of general-purpose, non-graphical
Objective C objects. For example, it includes classes for strings, Objective C objects. For example, it includes classes for strings,
collections, byte streams, typed coders, invocations, notifications, collections, byte streams, typed coders, invocations, notifications,
notification dispatchers, times, network ports, remote object messaging notification dispatchers, times, network ports, remote object messaging
@ -345,8 +345,8 @@ the @samp{NS*} classes are implemented as wrappers around more
featureful GNU classes. featureful GNU classes.
There is more (although perhaps out-of-date) information available at There is more (although perhaps out-of-date) information available at
the libobjects homepage at the Gnustep Base Library homepage at
@url{http://www.cs.rochester.edu/u/mccallum/libobjects}. @url{http://www.cs.rochester.edu/u/mccallum/gnustep-base}.
@item @b{What is its current state of development?} @item @b{What is its current state of development?}
@ -383,7 +383,7 @@ It contains several enhancements:
@enumerate @enumerate
@item OpenStep has a single NSInvocation class, which is based on @item OpenStep has a single NSInvocation class, which is based on
sending a message to an object. The GNUstep Base Library has a sending a message to an object. The Gnustep Base Library has a
heirarchy of Invocation classes with various capabilities. Two of the heirarchy of Invocation classes with various capabilities. Two of the
Invocation subclasses can cause C functions to be called, instead of Invocation subclasses can cause C functions to be called, instead of
sending messages to objects; these subclasses are useful when one would sending messages to objects; these subclasses are useful when one would
@ -396,17 +396,17 @@ All of them respond to a new method called @samp{-invokeWithObject:}
that is useful for enumerations. that is useful for enumerations.
@item I have been told that OpenStep's NSNotificationCenter is slow. @item I have been told that OpenStep's NSNotificationCenter is slow.
GNUstep's NotificationDispatcher class is based on interesting use of Gnustep's NotificationDispatcher class is based on interesting use of
linked lists and hash tables in such a way that it should be linked lists and hash tables in such a way that it should be
comparatively very fast. comparatively very fast.
OpenStep notifications must be method selectors sent to objects. OpenStep notifications must be method selectors sent to objects.
GNUstep notifications can invoke an Invocation instead, thus taking Gnustep notifications can invoke an Invocation instead, thus taking
advantage of the flexbility and context-holding capability of Invocation advantage of the flexbility and context-holding capability of Invocation
objects. objects.
@item OpenStep takes a disconnected ``class forest'' approach to @item OpenStep takes a disconnected ``class forest'' approach to
collection classes. GNUstep has all the OpenStep collection classes, collection classes. Gnustep has all the OpenStep collection classes,
however they are build from underlying GNU collection classes that are however they are build from underlying GNU collection classes that are
organized as a deep class heirarchy. Because of the deep heirarchy, organized as a deep class heirarchy. Because of the deep heirarchy,
there is a built-in uniformity of method names, and there are common there is a built-in uniformity of method names, and there are common
@ -418,7 +418,7 @@ variety of enumeration methods based on invocations.
@item OpenStep's archiving mechanism provides only one choice of backend @item OpenStep's archiving mechanism provides only one choice of backend
format. By backend format, I mean a format for writing C types, such as format. By backend format, I mean a format for writing C types, such as
ints, floats and C strings. The GNUstep archiving mechanism has a clear ints, floats and C strings. The Gnustep archiving mechanism has a clear
separation between frontend and backend. Different backends are separation between frontend and backend. Different backends are
provided. One backend writes in human-readable and human-editable ASCII provided. One backend writes in human-readable and human-editable ASCII
text, (including programmer-provided text name labels for each of the text, (including programmer-provided text name labels for each of the
@ -444,7 +444,7 @@ are found in the coded stream.
``hops'' when sending and responding to each new method---one to send ``hops'' when sending and responding to each new method---one to send
the request, one for the server to request the method type from the the request, one for the server to request the method type from the
client, one for the client to respond with the method type, and one to client, one for the client to respond with the method type, and one to
respond with the return value of the method call. GNUstep distributed respond with the return value of the method call. Gnustep distributed
objects takes advantage of the superior GNU Objective C runtime, which objects takes advantage of the superior GNU Objective C runtime, which
includes the method type locally with the selector. Since the method includes the method type locally with the selector. Since the method
type can already be found on the server, there is no need to ask the type can already be found on the server, there is no need to ask the
@ -453,7 +453,7 @@ hops.
@item NeXT's Objective C runtime becomes very slow when thread-safety is @item NeXT's Objective C runtime becomes very slow when thread-safety is
turned on since the runtime must acquire a global mutual-exclusion lock turned on since the runtime must acquire a global mutual-exclusion lock
each time an Objective C message is sent. GNUstep takes advantage of each time an Objective C message is sent. Gnustep takes advantage of
the superior GNU Objective C runtime, which is requires zero extra time the superior GNU Objective C runtime, which is requires zero extra time
to send a message when thread safe---not even one instruction more is to send a message when thread safe---not even one instruction more is
required for a thread-safe message send. Mutual exclusion locks are required for a thread-safe message send. Mutual exclusion locks are
@ -556,25 +556,25 @@ The most recently released alpha version can be obtained from
@url{ftp://alpha.gnu.ai.mit.edu}. @url{ftp://alpha.gnu.ai.mit.edu}.
The most recent developer's snapshot can be obtained from The most recent developer's snapshot can be obtained from
@url{ftp://ftp.cs.rochester.edu/pub/u/mccallum/libobjects}. These @url{ftp://ftp.cs.rochester.edu/pub/u/mccallum/gnustep-base}. These
releases are there for exchange between active GNUstep coders, and for releases are there for exchange between active Gnustep coders, and for
curious code-readers, not for naive users; read the README.first file in curious code-readers, not for naive users; read the README.first file in
the FTP directory. the FTP directory.
@end enumerate @end enumerate
@c GNUstep Base Library @c Gnustep Base Library
@section GNUstep GUI Library @section Gnustep GUI Library
@enumerate @enumerate
@item @b{What is the GUI Library?} @item @b{What is the GUI Library?}
The GNUstep GUI Library is a library of objects useful for writing The Gnustep GUI Library is a library of objects useful for writing
graphical applications. For example, it includes classes for drawing graphical applications. For example, it includes classes for drawing
and manipulating graphics objects on the screen: windows, menus, and manipulating graphics objects on the screen: windows, menus,
buttons, sliders, text fields, and events. There are also many buttons, sliders, text fields, and events. There are also many
@ -585,18 +585,18 @@ context-dependent help, spell checking.
It provides functionality that aims to implement the @samp{AppKit} It provides functionality that aims to implement the @samp{AppKit}
portion of the OpenStep standard. However the implementation has portion of the OpenStep standard. However the implementation has
been written to take advantage of GNUstep enhancements wherever possible. been written to take advantage of Gnustep enhancements wherever possible.
@item @b{Explain the organization of the front- and back-ends.} @item @b{Explain the organization of the front- and back-ends.}
The GNUstep GUI Library is divided into a front- and back-end. The The Gnustep GUI Library is divided into a front- and back-end. The
front-end contains the majority of implementation, but leaves out the front-end contains the majority of implementation, but leaves out the
low-level drawing and event code. A back-end can override whatever low-level drawing and event code. A back-end can override whatever
methods necessary in order to implement low-level drawing event methods necessary in order to implement low-level drawing event
receiving. Different back-ends will make GNUstep available on various receiving. Different back-ends will make Gnustep available on various
platforms. The default GNU back-end will run on top of X Windows and platforms. The default GNU back-end will run on top of X Windows and
the DisplayGhostScript Server. Other back-ends could allow GNUstep to the DisplayGhostScript Server. Other back-ends could allow Gnustep to
run on OpenGL, OS/2, and WIN32 graphics/event platforms. Much work run on OpenGL, OS/2, and WIN32 graphics/event platforms. Much work
will be saved by this clean separation between front- and back-end, will be saved by this clean separation between front- and back-end,
because it allows different platforms to share the large amount of because it allows different platforms to share the large amount of
@ -634,11 +634,11 @@ It is not yet publically available. When it is available you will be
able to find it in @url{ftp://alpha.gnu.ai.mit.edu/gnu}. able to find it in @url{ftp://alpha.gnu.ai.mit.edu/gnu}.
@end enumerate @end enumerate
@c GNUstep GUI Library @c Gnustep GUI Library
@section GNUstep DisplayGhostScript Server @section Gnustep DisplayGhostScript Server
@enumerate @enumerate
@ -652,11 +652,11 @@ able to find it in @url{ftp://alpha.gnu.ai.mit.edu/gnu}.
@end enumerate @end enumerate
@c GNUstep DisplayGhostScript Server @c Gnustep DisplayGhostScript Server
@section GNUstep Interface Modeller Application @section Gnustep Interface Modeller Application
@enumerate @enumerate
@ -673,17 +673,17 @@ loaded and executed later outside of Interface Modeller.
@item @b{What is its current state of development?} @item @b{What is its current state of development?}
It is in the specification stage; no code has been written yet. The It is in the specification stage; no code has been written yet. The
current specifications are available through the GNUstep WWW pages. current specifications are available through the Gnustep WWW pages.
@end enumerate @end enumerate
@c GNUstep IM @c Gnustep IM
@ignore @ignore
[Notes to FAQ contributors: Be succinct. Stick to the facts. Emphasize [Notes to FAQ contributors: Be succinct. Stick to the facts. Emphasize
technical features that are already implemented; avoid writing about technical features that are already implemented; avoid writing about
vague features without concrete ideas about their implementation. Your vague features without concrete ideas about their implementation. Your
audience is future and present code contributors to GNUstep, not audience is future and present code contributors to Gnustep, not
managers or publicity people.] managers or publicity people.]
@end ignore @end ignore

View file

@ -2,27 +2,27 @@
@c If this package does not come with, e.g., installable documentation or @c If this package does not come with, e.g., installable documentation or
@c data files, please ignore the references to them below. @c data files, please ignore the references to them below.
@c set the vars OBJECTS_VERSION and OBJECTS_GCC_VERSION @c set the vars GNUSTEP_BASE_VERSION and GNUSTEP_BASE_GCC_VERSION
@include version.texi @include version.texi
@ifset INSTALL_ONLY @ifset INSTALL_ONLY
This file documents the installation of the GNU Objective C This file documents the installation of the GNU Objective C
Class Library, @samp{libobjects}. Copyright (C) 1993, 1994, 1996 Free Software Class Library, @samp{libgnustep-base}. Copyright (C) 1993, 1994, 1996 Free Software
Foundation, Inc. You may copy, distribute, and modify it freely as long Foundation, Inc. You may copy, distribute, and modify it freely as long
as you preserve this copyright notice and permission notice. as you preserve this copyright notice and permission notice.
@chapter Installing @samp{libobjects} @chapter Installing @samp{libgnustep-base}
@end ifset @end ifset
To compile and install @samp{libobjects}: To compile and install @samp{libgnustep-base}:
Here is a quick-and-dirty example of installation commands: Here is a quick-and-dirty example of installation commands:
First install the GNU Objective C runtime patch, objc.patch; possibly First install the GNU Objective C runtime patch, objc.patch, possibly
like this: like this:
@example @example
cd gcc-2.7.2 cd gcc-2.7.2
patch -p0 <../libobjects/objc.patch patch -p0 <../gnustep-base/objc.patch
@end example @end example
then then
@ -55,7 +55,7 @@ Patch the @samp{gcc} Objective C runtime with objc.patch.
@item @item
Install @samp{gcc}. The library requires gcc version Install @samp{gcc}. The library requires gcc version
@value{OBJECTS_GCC_VERSION} or later. @value{GNUSTEP_BASE_GCC_VERSION} or later.
@item @item
Configure the package for your system. In the directory that this file Configure the package for your system. In the directory that this file

View file

@ -1,7 +1,7 @@
@c set the vars OBJECTS_VERSION and OBJECTS_GCC_VERSION @c set the vars GNUSTEP_BASE_VERSION and GNUSTEP_BASE_GCC_VERSION
@include version.texi @include version.texi
The library requires gcc @value{OBJECTS_GCC_VERSION} or higher. The The library requires gcc @value{GNUSTEP_BASE_GCC_VERSION} or higher. The
library does not work with the NEXTSTEP 3.2 compiler because that library does not work with the NEXTSTEP 3.2 compiler because that
version of NeXT's cc cannot handle nested functions. Until a later version of NeXT's cc cannot handle nested functions. Until a later
release from NeXT, NEXTSTEP users will have to install gcc. See the release from NeXT, NEXTSTEP users will have to install gcc. See the

View file

@ -3,16 +3,27 @@
@chapter News about Gnustep Base Library @chapter News about Gnustep Base Library
The currently released version of the library is The currently released version of the library is
@samp{@value{OBJECTS_VERSION}}. @samp{@value{GNUSTEP_BASE_VERSION}}.
@end ifset @end ifset
@section Noteworthy changes since version @samp{0.1.19} @section Noteworthy changes since version @samp{0.1.19}
@itemize @bullet @itemize @bullet
@item The library has changed its name from @samp{libgnustep-base} to
@samp{libgnustep-base}. The Apr 17 ChangeLog entry contains a list of
the way various other names were changed.
@item The library now requires a patch to gcc-2.7.2. The patch adds @item The library now requires a patch to gcc-2.7.2. The patch adds
thread-safe features to the GNU Objective C runtime. thread-safe features to the GNU Objective C runtime.
@item Distributed Objects is much improved. Exceptions in the server
are sent back to the client. Ungracefully closed connections are
gracefully handled.
@item The mframe and behavior functions have been overhauled and
better commented.
@item The NSHashTable and NSMapTable functions have been implemented, @item The NSHashTable and NSMapTable functions have been implemented,
thanks to Albin Jones <albin.jones@@dartmouth.edu>. Albin has also thanks to Albin Jones <albin.jones@@dartmouth.edu>. Albin has also
implemented underlying GNU functions that provide functions for arrays implemented underlying GNU functions that provide functions for arrays
@ -22,8 +33,8 @@ and linked lists of C-type variables.
Christley <scottc@@net-community.com>. Christley <scottc@@net-community.com>.
@item A RunLoop class has been implemented, and is used for listening to @item A RunLoop class has been implemented, and is used for listening to
Port objects. It is used for Distributed Objects. The class is not Port objects. It is used for Distributed Objects. There is also an
finished, and its interfaces may be changed in the near future. NSRunLoop class based on RunLoop.
@item The NSTimer class has been implemented, although its use with @item The NSTimer class has been implemented, although its use with
RunLoops is currently disabled. RunLoops is currently disabled.
@ -49,10 +60,11 @@ There is a new set of rich enumeration methods based on Invocations.
@item Port class heirarchy has been overhauled. There are now classes @item Port class heirarchy has been overhauled. There are now classes
for TCP ports, UDP ports, and Mach ports. Only the TCP ports are for TCP ports, UDP ports, and Mach ports. Only the TCP ports are
currently working. currently functional.
@item GNU-style archiving has had an overhaul, and the GNUstep @item GNU-style archiving has had an overhaul, and the GNUstep
NSArchiver class is functional, but not strongly tested. NSArchiver class is functional, but not strongly tested. It does not
yet call -awakeUsingCoder:.
I have separated the high-level archiving of groups of objects from the I have separated the high-level archiving of groups of objects from the
low-level format of how C-types are written. There are several new low-level format of how C-types are written. There are several new
@ -62,11 +74,15 @@ concrete subclasses: BinaryCStream, and TextCStream. Plug these
backends into Coder to get different style low-level formats for backends into Coder to get different style low-level formats for
archiving. archiving.
Floats and doubles are now encoded more efficiently.
NSArchiver is built on top of Coder. You can actually send all the NSArchiver is built on top of Coder. You can actually send all the
Coder methods to NSArchiver and vice-versa. Coder methods to NSArchiver and vice-versa.
GNU classes BinaryCoder and TextCoder are gone. GNU classes BinaryCoder and TextCoder are gone.
@item ...and many bug fixes.
@end itemize @end itemize
@c ==================================================================== @c ====================================================================
@ -238,7 +254,7 @@ heirarchy. Next I'll do NSDictionary in a similar style.
@item @item
From Adam Fedor, there is a new patch to the gcc Objective C runtime From Adam Fedor, there is a new patch to the gcc Objective C runtime
that aids dynamic linking. You'll have to apply this patch and that aids dynamic linking. You'll have to apply this patch and
reinstall the runtime before you can compile this version of libobjects. reinstall the runtime before you can compile this version of libgnustep-base.
@item @item
Several bug fixes, including two serious ones in Collection deallocation Several bug fixes, including two serious ones in Collection deallocation
@ -335,7 +351,7 @@ README.ULTRIX. Time.m patched for Solaris 2.4. test12.m free fix.
@itemize @bullet @itemize @bullet
@item Renamed the library from @samp{libcoll} to @samp{libobjects}. @item Renamed the library from @samp{libcoll} to @samp{libgnustep-base}.
(See the end of the file @samp{DISCUSSION} for the background on this (See the end of the file @samp{DISCUSSION} for the background on this
name choice.) Several file names changed to reflect this. GNU class name choice.) Several file names changed to reflect this. GNU class
interfaces are now included with @samp{objects} prefix, interfaces are now included with @samp{objects} prefix,

View file

@ -1,6 +1,6 @@
@chapter GNU Objective-C Class Library README @chapter GNU Objective-C Class Library README
@c set the vars OBJECTS_VERSION and GCC_VERSION @c set the vars GNUSTEP_BASE_VERSION and GCC_VERSION
@include version.texi @include version.texi
Here is some introductory info to get you started: Here is some introductory info to get you started:
@ -17,77 +17,24 @@ The file @samp{INSTALL} gives instructions for installing the library.
@section Preparing to write code @section Preparing to write code
Preliminary documentation is available via @samp{texinfo} in the files Preliminary documentation is available via @samp{texinfo} in the files
@samp{libobjects.info} and @samp{libobjects.texi}. The info file was @samp{gnustep-base.info} and @samp{gnustep-base.texi}. Because texinfo
created from the texi file using an modified version of @samp{makeinfo} doesn't yet handle @code{@@deftypemethod}, this documentation cannot yet
available by anonymous ftp from @samp{iesd.auc.dk:pub/ObjC}. be compiled into more readable forms.
The documentation isn't much to speak of so far. Better documentation The documentation isn't much to speak of so far. Better documentation
will be forthcoming, but the library needs to settle first. For now I will be forthcoming, but the library needs to settle first. For now I
recommend skipping libobjects.info and reading the header files instead. recommend skipping @file{gnustep-base.info} and reading the header files
The headers for the GNU classes are in @file{./objects}; the headers for instead. The headers for the classes are in @file{./src/include} and
the NeXT-compatible classes are in @file{./objc} and @file{./src/objc}.
@file{./Foundation}.
The overview of classes below should help you see the big picture as you
read the source.
@section The Class Heirarchy
Here is the class inheritance heirarchy. All protocols end with
"ing"; all collection protocols end with "Collecting". All collection
abtract superclasses (classes which are not usable without
subclassing) end with "Collection";
@example
NSObject
Collection <Collecting>
Set
Bag
KeyedCollection <KeyedCollecting>
Dictionary
MappedCollector
IndexedCollection <IndexedCollecting>
Array
Stack
GapArray
CircularArray
Queue
Heap
LinkedList
BinaryTree
RBTree
EltNodeCollector
String
LinkedListNode
LinkedListEltNode
BinaryTreeNode
BinaryTreeEltNode
RBTreeNode
RBTreeEltNode
Stream
StdioStream
MemoryStream
Coder
TextCoder
BinaryCoder
ConnectedCoder
RetainingNotifier
Port
SocketPort
Connection
Magnitude
Time
Random
RNGBerkeley <RandomGenerating>
RNGAdditiveCongruential <RandomGenerating>
DelegatePool
Proxy
@end example
The Gnustep FAQ also contains much useful information, including an
outline of the class heirarchy. The FAQ can be found in
@file{./doc/Gnustep-FAQ}.
@section Overview of the classes @section Overview of the classes
[This section needs updating -mccallum Apr 17 1996.]
The GNU classes included in this version of the library fall into six The GNU classes included in this version of the library fall into six
categories: collections, strings, magnitudes, streams, coders and categories: collections, strings, magnitudes, streams, coders and
distributed object support. distributed object support.
@ -170,7 +117,7 @@ To begin using distributed objects, you only need to know about
daunting, but actually, a lot can be done with just a few key methods: daunting, but actually, a lot can be done with just a few key methods:
@smallexample @smallexample
- (Connection*) newRegisteringAtName: (const char*)name - (Connection*) newRegisteringAtName: name
withRootObject: anObj; withRootObject: anObj;
For registering your server object with the network. For registering your server object with the network.
@ -179,68 +126,13 @@ daunting, but actually, a lot can be done with just a few key methods:
method, so that your server can start handling requests from method, so that your server can start handling requests from
clients. clients.
- (Proxy*) rootProxyAtName: (const char*)name - (Proxy*) rootProxyAtName: name
onHost: (const char*)host; onHost: host;
For connecting to a remote server. You get a proxy object for For connecting to a remote server. You get a proxy object for
the remote server object, which, for messaging purposes, you the remote server object, which, for messaging purposes, you
can treat as if it were local. can treat as if it were local.
@end smallexample @end smallexample
Here is a partial list of what the current distributed objects system
can do:
@smallexample
- It can pass and return all simple C types, including char*, float
and double, both by value and by reference.
- It can pass structures by value and by reference, return
structures by reference. The structures can contain arrays.
- It obeys all the type qualifiers: oneway, in, out, inout, const.
- It can pass and return objects, either bycopy or with proxies.
An object encoded multiple times in a single message is properly
decoded on the other side.
- Proxies to remote objects are automatically created as they are
returned. Proxies passed back where they came from are decoded
as the correct local object.
- It can wait for an incoming message and timeout after a
specified period.
- A server can handle multiple clients.
- The server will ask its delegate before making new connections.
- The server can make call-back requests of the client, and keep
it all straight even when the server has multiple clients.
- A client will automatically form a connection to another client
if an object from the other client is vended to it. (i.e. Always
make a direct connection rather than forwarding messages twice,
once into the server, from there out to the other client.)
- The server will clean up its connection to a client if the client
says goodbye (i.e. if the client connection is freed).
- When the connection is being freed it will send a invalidation
notification message to those objects that have registered for
such notification.
- Servers and clients can be on different machines of different
architectures; byte-order and all other architecture-dependent
nits are taken care of for you. You can have SPARC, i386, m68k,
and MIPS machines all distributed-object'ing away together in
one big web of client-server connections!
@end smallexample
Here is a partial list of what the current distributed objects system
does *not* do:
@smallexample
- Run multi-threaded.
- Detect port deaths (due to remote application crash, for example)
and do something graceful.
- Send exceptions in the server back to the client.
- Send messages with vararg arguments.
- Return structures by value.
- Use Mach ports, pass Mach ports, pass Mach virtual memory.
- Send messages more reliably than UDP. It does detect reply
timeouts and message-out-of-order conditions, but it's reaction
is simply to abort.
- Claim to be thoroughly tested.
@end smallexample
@end itemize
@section Where else to look @section Where else to look
@subsection Examples @subsection Examples
@ -270,9 +162,8 @@ distributed object version of ``Hello, world''.
complex demonstration of distributed objects, with multiple clients, complex demonstration of distributed objects, with multiple clients,
connection delegates, and invalidation notification. connection delegates, and invalidation notification.
@item @samp{port-server.m} and @samp{port-client.m} show a simple use of @item @samp{tcpport-server.m} and @samp{tcpport-client.m} show a simple
Port objects. Be warned, however, the interface to Port objects will use of TcpPort objects.
likely change in the near future.
@end itemize @end itemize
@ -298,7 +189,7 @@ Give me feedback! Tell me what you like; tell me what you think
could be better. Send me bug reports. could be better. Send me bug reports.
@item @item
Donate classes. If you write classes that fit in the libobjects Donate classes. If you write classes that fit in the libgnustep-base
framework, I'd be happy to include them. framework, I'd be happy to include them.
@end itemize @end itemize

View file

@ -42,7 +42,7 @@ Library can just use @samp{register_printf_function}.
sort of way that Smalltalk does. Talk to me. mccallum@@gnu.ai.mit.edu. sort of way that Smalltalk does. Talk to me. mccallum@@gnu.ai.mit.edu.
@item See @item See
http://www.cs.rochester.edu/u/mccallum/libobjects/volunteers.html for http://www.cs.rochester.edu/u/mccallum/libgnustep-base/volunteers.html for
a list of the claimed and unclaimed GNUStep Foundation classes. a list of the claimed and unclaimed GNUStep Foundation classes.
@end itemize @end itemize
@ -115,7 +115,7 @@ completely reimplemented. ...and a lot more...
Fix all the subclassResponsibility comments in objects/*.h Fix all the subclassResponsibility comments in objects/*.h
@item @item
I will finish libobjects documentation. I will finish gnustep-base documentation.
@end itemize @end itemize
@ -145,7 +145,7 @@ even get called. <<ObjC insiders: This is a less well-expressed
version of what we've just been discussing in email.>> version of what we've just been discussing in email.>>
@item @item
I created libobjects.texi by copying libg++.texi. Some of the text I created libgnustep-base.texi by copying libg++.texi. Some of the text
is taken verbatim. Is this a problem? is taken verbatim. Is this a problem?
@item @item
@ -216,7 +216,7 @@ I'm sure that there're other things to do, but these are the ones I know now:
@item Correct: @item Correct:
@itemize + @itemize +
@item (@file{src/array.m}) @samp{objects_array_dealloc} @item (@file{src/array.m}) @samp{objects_array_dealloc}
@item (@file{src/cbs-int.m}) @samp{_OBJECTS_NOT_AN_INT_MARKER} @item (@file{src/cbs-int.m}) @samp{_GNUSTEP_BASE_NOT_AN_INT_MARKER}
@end itemize @end itemize
@item Improve the error handling of: @item Improve the error handling of:
@ -233,11 +233,11 @@ I'm sure that there're other things to do, but these are the ones I know now:
@itemize @bullet @itemize @bullet
@item Strengthen my resolve on the correctness of: @item Strengthen my resolve on the correctness of:
@itemize + @itemize +
@item (@file{src/cbs-char-p.m}) @samp{_OBJECTS_NOT_A_CHAR_P_MARKER} @item (@file{src/cbs-char-p.m}) @samp{_GNUSTEP_BASE_NOT_A_CHAR_P_MARKER}
@item (@file{src/cbs-id.m}) @samp{_OBJECTS_NOT_AN_ID_MARKER} @item (@file{src/cbs-id.m}) @samp{_GNUSTEP_BASE_NOT_AN_ID_MARKER}
@item (@file{src/cbs-int-p.m}) @samp{_OBJECTS_NOT_AN_INT_P_MARKER} @item (@file{src/cbs-int-p.m}) @samp{_GNUSTEP_BASE_NOT_AN_INT_P_MARKER}
@item (@file{src/cbs-int-p.m}) @samp{objects_int_p_is_equal} @item (@file{src/cbs-int-p.m}) @samp{objects_int_p_is_equal}
@item (@file{src/cbs-void-p.m}) @samp{_OBJECTS_NOT_A_VOID_P_MARKER} @item (@file{src/cbs-void-p.m}) @samp{_GNUSTEP_BASE_NOT_A_VOID_P_MARKER}
@item (@file{src/hash.m}) @samp{objects_hash_rightsize} @item (@file{src/hash.m}) @samp{objects_hash_rightsize}
@item (@file{src/hash.m}) @samp{objects_hash_all_elements} @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_rightsize}