mirror of
https://github.com/gnustep/libs-base.git
synced 2025-04-22 16:33:29 +00:00
Use cvs export to make snapshots/dists. Minor patches.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@2742 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
e2a0cb1b97
commit
49a609f53b
40 changed files with 5025 additions and 632 deletions
32
+cronscript
32
+cronscript
|
@ -1,32 +0,0 @@
|
|||
#!/usr/grads/bin/bash
|
||||
|
||||
PATH=/u/mccallum/sparc/bin:/usr/grads/bin:/usr/staff/bin:$PATH
|
||||
snapdate=`date +%y%m%d`
|
||||
|
||||
# Make the snapshot
|
||||
cd /u/mccallum/collection/libobjects
|
||||
rm -f .snapshot.errs
|
||||
make snapshot &> .snapshot.errs
|
||||
|
||||
# Move it to ftp location
|
||||
if [ -e libobjects-${snapdate}.tar.gz ]; then
|
||||
rm -f /home/cayuga/ftp/pub/u/mccallum/libobjects/libobjects-9*
|
||||
rm -f /home/cayuga/ftp/pub/u/mccallum/libobjects/ChangeLog-9*
|
||||
mv libobjects-${snapdate}.tar.gz \
|
||||
/home/cayuga/ftp/pub/u/mccallum/libobjects
|
||||
cp ChangeLog \
|
||||
/home/cayuga/ftp/pub/u/mccallum/libobjects/ChangeLog-${snapdate}
|
||||
gzip -9 /home/cayuga/ftp/pub/u/mccallum/libobjects/ChangeLog-${snapdate}
|
||||
cp ChangeLog \
|
||||
/home/cayuga/ftp/pub/u/mccallum/libobjects/ChangeLog-${snapdate}
|
||||
chmod a+r /home/cayuga/ftp/pub/u/mccallum/libobjects/*
|
||||
fi
|
||||
|
||||
# Send me mail about it
|
||||
rm -f .snapshot.mail
|
||||
echo "This automatically generated by libobjects/cronscript" >.snapshot.mail
|
||||
echo >>.snapshot.mail
|
||||
ls -l /home/cayuga/ftp/pub/u/mccallum/libobjects/* >>.snapshot.mail
|
||||
echo >>.snapshot.mail
|
||||
cat .snapshot.errs >>.snapshot.mail
|
||||
mail -s "libobjects-${snapdate} snapshot" mccallum < .snapshot.mail
|
1
+crontab
1
+crontab
|
@ -1 +0,0 @@
|
|||
0 1 * * 3 /u/mccallum/collection/libobjects/cronscript
|
27
+patch.sh
27
+patch.sh
|
@ -1,27 +0,0 @@
|
|||
#!/usr/grads/bin/bash
|
||||
|
||||
# Apply a patch and automatically RCS check-in the changed files if
|
||||
# the patch succeeds.
|
||||
|
||||
# Usage: patch.sh -p1 < ~/Mail/inbox/120
|
||||
|
||||
cd /u/mccallum/collection/libobjects
|
||||
touch .patch.timestamp
|
||||
if patch --batch $*; then
|
||||
find . -name '*.orig' -exec mv -f {} ../origs \;
|
||||
rm -f .patched.files
|
||||
find . -name RCS -prune -o \
|
||||
\( -newer .patch.timestamp -type f -print \) \
|
||||
| grep -v .patched.files > .patched.files
|
||||
echo PATCH SUCCEEDED!
|
||||
echo Patched files:
|
||||
cat .patched.files
|
||||
ci -u -m"Patched from mail. See ChangeLog" \
|
||||
-t-"Patched from mail. See ChangeLog" \
|
||||
`cat .patched.files`
|
||||
else
|
||||
echo PATCH FAILED!
|
||||
echo patch.sh: patch failed - reject files are:
|
||||
find . -newer .patch.timestamp -name '*.rej' -print
|
||||
exit 1
|
||||
fi
|
|
@ -1,9 +1,5 @@
|
|||
=* *errs *.tar.gz *.patch *-patch
|
||||
|
||||
COPYING COPYING.LIB INSTALL NEWS README TAGS TODO
|
||||
RELEASE-NOTES
|
||||
|
||||
Makefile configure
|
||||
config.cache config.guess config.log config.status
|
||||
|
||||
.date .name .patch* .snap*
|
||||
|
|
84
ANNOUNCE
Normal file
84
ANNOUNCE
Normal file
|
@ -0,0 +1,84 @@
|
|||
Announcement
|
||||
************
|
||||
|
||||
The GNUstep Base Library, version 0.4.0, is now available.
|
||||
|
||||
What is the GNUstep Base Library?
|
||||
=================================
|
||||
|
||||
The GNUstep Base Library is a library of general-purpose,
|
||||
non-graphical Objective C objects. For example, it includes classes
|
||||
for strings, object collections, byte streams, typed coders,
|
||||
invocations, notifications, notification dispatchers, moments in time,
|
||||
network ports, remote object messaging support (distributed objects),
|
||||
event loops, and random number generators.
|
||||
|
||||
It provides functionality that aims to implement the non-graphical
|
||||
portion of the OpenStep standard. In many cases, the `NS*' classes are
|
||||
implemented as wrappers around more featureful GNU classes.
|
||||
|
||||
There is more information available at the GNUstep homepage at
|
||||
`http://www.gnustep.org'.
|
||||
|
||||
Where can you get it? How can you compile it?
|
||||
==============================================
|
||||
|
||||
The gstepbase-0.4.0.tar.gz distribution file has been placed on
|
||||
`ftp.gnu.org' in `pub/gnu'.
|
||||
|
||||
The library requires gcc 2.8.0 or higher. Significant sections of
|
||||
the library do not work with the NeXT runtime, so we recommend using
|
||||
gcc instead of NeXT's cc. See the `GNUstep-HOWTO' file for more
|
||||
instructions about compiling and installing the library.
|
||||
|
||||
The `.tar' file is compressed with GNU gzip. Gzip can be obtained by
|
||||
anonymous ftp at any of the GNU archive sites.
|
||||
|
||||
For info about FTP via email, send email to `ftpmail@decwrl.dec.com'
|
||||
with no subject line, and two-line body with line one `help' and line
|
||||
two `quit'.
|
||||
|
||||
The most recent (not necessarily tested) snapshots of the library
|
||||
will be placed on `alpha.gnu.org'.
|
||||
|
||||
|
||||
|
||||
[ Most GNU software is packed using the GNU `gzip' compression program.
|
||||
Source code is available on most sites distributing GNU software.
|
||||
|
||||
For information on how to order GNU software on tape, floppy or cd-rom, or
|
||||
printed GNU manuals, check the file etc/ORDERS in the GNU Emacs distribution
|
||||
or in GNUinfo/ORDERS on prep, or e-mail a request to: gnu@prep.ai.mit.edu
|
||||
|
||||
By ordering your GNU software from the FSF, you help us continue to
|
||||
develop more free software. Media revenues are our primary source of
|
||||
support. Donations to FSF are deductible on US tax returns.
|
||||
|
||||
The above software will soon be at these ftp sites as well.
|
||||
Please try them before prep.ai.mit.edu as prep is very busy!
|
||||
|
||||
thanx -gnu@prep.ai.mit.edu
|
||||
|
||||
ASIA: ftp.cs.titech.ac.jp, utsun.s.u-tokyo.ac.jp:/ftpsync/prep,
|
||||
cair.kaist.ac.kr:/pub/gnu, ftp.nectec.or.th:/pub/mirrors/gnu
|
||||
AUSTRALIA: archie.au:/gnu (archie.oz or archie.oz.au for ACSnet)
|
||||
AFRICA: ftp.sun.ac.za:/pub/gnu
|
||||
MIDDLE-EAST: ftp.technion.ac.il:/pub/unsupported/gnu
|
||||
EUROPE: irisa.irisa.fr:/pub/gnu, ftp.univ-lyon1.fr:pub/gnu,
|
||||
ftp.mcc.ac.uk, unix.hensa.ac.uk:/pub/uunet/systems/gnu,
|
||||
src.doc.ic.ac.uk:/gnu, ftp.ieunet.ie:pub/gnu, ftp.eunet.ch,
|
||||
nic.switch.ch:/mirror/gnu, ftp.informatik.rwth-aachen.de:/pub/gnu,
|
||||
ftp.informatik.tu-muenchen.de, ftp.win.tue.nl:/pub/gnu,
|
||||
ftp.funet.fi:/pub/gnu, ftp.denet.dk, ftp.stacken.kth.se, isy.liu.se,
|
||||
ftp.luth.se:/pub/unix/gnu, ftp.sunet.se:/pub/gnu, archive.eu.net
|
||||
SOUTH AMERICA: ftp.unicamp.br:/pub/gnu
|
||||
WESTERN CANADA: ftp.cs.ubc.ca:/mirror2/gnu
|
||||
USA: wuarchive.wustl.edu:/systems/gnu, labrea.stanford.edu,
|
||||
ftp.digex.net:/pub/gnu, ftp.kpc.com:/pub/mirror/gnu, f.ms.uky.edu:/pub3/gnu,
|
||||
jaguar.utah.edu:/gnustuff, ftp.hawaii.edu:/mirrors/gnu,
|
||||
vixen.cso.uiuc.edu:/gnu, mrcnext.cso.uiuc.edu:/pub/gnu,
|
||||
ftp.cs.columbia.edu:/archives/gnu/prep, col.hp.com:/mirrors/gnu,
|
||||
gatekeeper.dec.com:/pub/GNU, ftp.uu.net:/systems/gnu
|
||||
|
||||
]
|
||||
|
207
AUTHORS
Normal file
207
AUTHORS
Normal file
|
@ -0,0 +1,207 @@
|
|||
For the legal record, here is a list of who wrote what:
|
||||
|
||||
|
||||
Andrew Kachites McCallum:
|
||||
include/preface.h.in
|
||||
Archiver.m
|
||||
Array.m
|
||||
Bag.m
|
||||
BinaryCStream.m
|
||||
BinaryTree.m
|
||||
BinaryTreeNode.m
|
||||
CircularArray.m
|
||||
Collection.m
|
||||
ConnectedCoder.m
|
||||
Connection.m
|
||||
Coder.m
|
||||
CStream.m
|
||||
Decoder.m
|
||||
DelegatePool.m
|
||||
Dictionary.m
|
||||
Encoder.m
|
||||
Heap.m
|
||||
IndexedCollection.m
|
||||
Invocation.m
|
||||
KeyedCollection.m
|
||||
LinkedList.m
|
||||
LinkedListNode.m
|
||||
Lock.m
|
||||
MachPort.m
|
||||
Magnitude.m
|
||||
MallocAddress.m
|
||||
MappedCollector.m
|
||||
MemoryStream.m
|
||||
Notification.m
|
||||
NotificationDispatcher.m
|
||||
OrderedCollection.m
|
||||
Port.m
|
||||
Proxy.m
|
||||
Queue.m
|
||||
Random.m
|
||||
RawCStream.m
|
||||
RBTree.m
|
||||
RBTreeNode.m
|
||||
RNGAdditiveCongruential.m
|
||||
Set.m
|
||||
SplayTree.m
|
||||
Stack.m
|
||||
StdioStream.m
|
||||
Stream.m
|
||||
TcpPort.m
|
||||
TextCStream.m
|
||||
Time.m
|
||||
UdpPort.m
|
||||
behavior.m
|
||||
preface.m
|
||||
mframe.m
|
||||
HashTable.m
|
||||
List.m
|
||||
objc/HashTable.h
|
||||
objc/List.h
|
||||
NSAllocateObject.m
|
||||
NSArchiver.m
|
||||
NSArray.m
|
||||
NSAutoreleasePool.m
|
||||
NSCoder.m
|
||||
NSCopyObject.m
|
||||
NSCountedSet.m
|
||||
NSData.m
|
||||
NSDeallocateObject.m
|
||||
NSDictionary.m
|
||||
NSEnumerator.m
|
||||
NSGArchiver.m
|
||||
NSGArray.m
|
||||
NSGCountedSet.m
|
||||
NSGCString.m
|
||||
NSGDictionary.m
|
||||
NSGSet.m
|
||||
NSGString.m
|
||||
NSInvocation.m
|
||||
NSMethodSignature.m
|
||||
NSNotification.m
|
||||
NSNotificationCenter.m
|
||||
NSObjCRuntime.m
|
||||
NSObject.m
|
||||
NSPage.m
|
||||
NSPortCoder.m
|
||||
NSSet.m
|
||||
NSString.m
|
||||
NSThread.m
|
||||
NSTimer.m
|
||||
NSUser.m
|
||||
|
||||
|
||||
Kresten Krab Thorup:
|
||||
GapArray.m
|
||||
objc-gnu2next.m
|
||||
Storage.m
|
||||
objc/Storage.h
|
||||
|
||||
|
||||
Adam Fedor:
|
||||
ostream.m
|
||||
NXStringTable.m
|
||||
NXStringTable_scan.c
|
||||
objc/NXStringTable.h
|
||||
NXStringTable_scan.l
|
||||
NSAssertionHandler.m
|
||||
NSBitmapCharSet.m
|
||||
NSBundle.m
|
||||
NSCharacterSet.m
|
||||
NSConcreteValue.m
|
||||
NSException.m
|
||||
NSGeometry.m
|
||||
NSLog.m
|
||||
NSNumber.m
|
||||
NSValue.m
|
||||
objc-load.c
|
||||
NSConcreteNumber.m
|
||||
NSCTemplateValue.m
|
||||
|
||||
|
||||
Mark Lakata:
|
||||
|
||||
|
||||
Jeremy Bettis:
|
||||
NSDate.m
|
||||
|
||||
|
||||
Georg Tuparev:
|
||||
NSProcessInfo.m
|
||||
NSUserDefaults.m
|
||||
|
||||
|
||||
Peter Burka:
|
||||
|
||||
|
||||
Albin L. Jones:
|
||||
o_array.m
|
||||
o_array_bas.m
|
||||
o_array_cbs.m
|
||||
o_cbs.m
|
||||
o_cbs_char_p.m
|
||||
o_cbs_id.m
|
||||
o_cbs_int.m
|
||||
o_cbs_int_p.m
|
||||
o_cbs_void_p.m
|
||||
o_hash.m
|
||||
o_hash_bas.m
|
||||
o_hash_cbs.m
|
||||
o_list.m
|
||||
o_list_bas.m
|
||||
o_list_cbs.m
|
||||
o_map.m
|
||||
o_map_bas.m
|
||||
o_map_cbs.m
|
||||
numbers.c
|
||||
o_x_bas.m.in
|
||||
o_x_cbs.m.in
|
||||
include/o_x_bas.h.in
|
||||
include/o_x_cbs.h.in
|
||||
NSCallBacks.m
|
||||
NSHashTable.m
|
||||
NSMapTable.m
|
||||
NSCallBacks.h
|
||||
|
||||
|
||||
Scott Christley:
|
||||
GNUmakefile
|
||||
Makefile.preamble
|
||||
Makefile.postamble
|
||||
win32-entry.m
|
||||
win32-def.top
|
||||
libgnustep-base.def
|
||||
NSCalendarDate.m
|
||||
NSDate.m
|
||||
NSLock.m
|
||||
NSThread.m
|
||||
externs.m
|
||||
|
||||
|
||||
Luke Howard:
|
||||
NSHost.m
|
||||
|
||||
|
||||
Yoo C. Chung:
|
||||
NSTimeZone.m
|
||||
NSZone.m
|
||||
|
||||
|
||||
Richard Frith-Macdonald:
|
||||
UnixFileHandle.m
|
||||
NSData.m
|
||||
NSDebug.m
|
||||
NSDistantObject.m
|
||||
NSDistributedLock.m
|
||||
NSFileHandle.m
|
||||
NSPipe.m
|
||||
NSPort.m
|
||||
NSProxy.m
|
||||
NSTask.m
|
||||
|
||||
|
||||
Stevo Crvenkovski:
|
||||
GetDefEncoding.m
|
||||
Unicode.m
|
||||
NSGSequence.m
|
||||
NSGString.m
|
|
@ -76,6 +76,8 @@ tasks: ../doc/todo.texi
|
|||
(cd ../doc; $(MAKE) -$(MAKEFLAGS) $(MAKEDEFINES) TODO)
|
||||
cp ../doc/TODO ./tasks
|
||||
|
||||
regenerate:
|
||||
|
||||
copy-dist: $(DIST_FILES)
|
||||
mkdir ../snap/admin
|
||||
for f in $(DIST_FILES); do \
|
||||
|
|
138
BULLETIN
138
BULLETIN
|
@ -1,138 +0,0 @@
|
|||
* Gnustep Base Library
|
||||
|
||||
The Gnustep Base Library (libobjects) is a library of
|
||||
general-purpose, non-graphical Objective C objects written by
|
||||
Andrew Kachites McCallum and designed in the Smalltalk tradition. It
|
||||
includes collection objects for maintaining groups of objects and C
|
||||
types, byte streams for I/O to various destinations, coders for
|
||||
formating objects and C types to byte streams, ports for network
|
||||
packet transmission, remote object messaging support, pseudo-random
|
||||
number generators, and time handling facilities.
|
||||
|
||||
|
||||
* Gnustep Base Library
|
||||
|
||||
The Gnustep Base Library (libobjects) is a library of
|
||||
general-purpose, non-graphical Objective C objects designed in the
|
||||
Smalltalk tradition. It includes collection objects for maintaining
|
||||
groups of objects and C types, byte streams for I/O to various
|
||||
destinations, coders for formating objects and C types to byte
|
||||
streams, ports for network packet transmission, remote object
|
||||
messaging support, pseudo-random number generators, and time handling
|
||||
facilities. It is being written by Andrew Kachites McCallum.
|
||||
|
||||
|
||||
* Gnustep Base Library (libobjects)
|
||||
|
||||
Andrew Kachites McCallum is writing the Gnustep Base Library, a
|
||||
library of general-purpose, non-graphical Objective C objects designed
|
||||
in the Smalltalk tradition. It includes collection objects for
|
||||
maintaining groups of objects and C types, byte streams for I/O to
|
||||
various destinations, coders for formating objects and C types to byte
|
||||
streams, ports for network packet transmission, remote object
|
||||
messaging support, pseudo-random number generators, and time handling
|
||||
facilities. It is being written by Andrew Kachites McCallum.
|
||||
|
||||
|
||||
* Gnustep Base Library
|
||||
|
||||
The Gnustep Base Library (@code{libobjects}) is a library of
|
||||
general-purpose, non-graphical Objective C objects written by
|
||||
Andrew Kachites McCallum. It includes collection objects for maintaining
|
||||
groups of objects and C types, streams for I/O to various
|
||||
destinations, coders for formating objects and C types to streams,
|
||||
ports for network packet transmission, distributed objects (remote
|
||||
object messaging), pseudo-random number generators, and time handling
|
||||
facilities. Contact @samp{mccallum@gnu.ai.mit.edu}.
|
||||
|
||||
|
||||
|
||||
* Gnustep Base Library
|
||||
|
||||
The Gnustep Base Library (libobjects) is a library of
|
||||
general-purpose, non-graphical Objective C objects written by
|
||||
Andrew Kachites McCallum. What `libg++' is to GNU's C++, `libobjects' is to
|
||||
GNU's Objective C.
|
||||
|
||||
The library features collection objects for maintaining groups of
|
||||
objects and C types, byte streams for I/O to various destinations,
|
||||
coders for formating objects and C types to byte streams, ports for
|
||||
network packet transmission, remote object messaging support,
|
||||
pseudo-random number generators, and time handling facilities.
|
||||
|
||||
The heirarchy of collection objects are similar in spirit to
|
||||
Smalltalk's collections. A deep inheritance heirarchy provides good
|
||||
uniformity of access to members across different collection classes.
|
||||
All collections can hold simple C types such as int's and floats, as
|
||||
well as Objects. The collection classes include simple collections
|
||||
(Set, Bag), collections with contents accessible by unordered keys
|
||||
(Dictionary, MappedCollector), collections with ordered contents
|
||||
(Array, LinkedList, BinaryTree, RBTree, SplayTree). There is also a
|
||||
DelegatePool object that can forward messages it receives to an
|
||||
arbitrary number of Delegates.
|
||||
|
||||
Stream objects provide a consistent interface for reading and writing
|
||||
bytes. `StdioStream' objects work with files, file descriptors, FILE
|
||||
pointers and pipes to/from executables. `MemoryStream' objects work
|
||||
with memory buffers. There are methods for writing arbitrary n-length
|
||||
buffers, newline-terminated lines, and printf-style formated strings.
|
||||
|
||||
Coders provide a formatted way of writing to Streams. After a coder
|
||||
is initialized with a stream, the coder can encode/decode Objective C
|
||||
objects and C types in an architecture-independent way. The currently
|
||||
available concrete coder classes are `BinaryCoder', for reading and
|
||||
writing a compact stream of illegible bytes, and `TextCoder', for
|
||||
reading and writing human-readable text (which you can also process
|
||||
with `perl', `awk', or whatever scripting language you like).
|
||||
|
||||
Coders and streams can be mixed and matched so that programmers can
|
||||
choose the destination and the format separately.
|
||||
|
||||
|
||||
|
||||
|
||||
The current version is 0.1, the low number indicating that the library
|
||||
is still in flux. Future version will include String objects and
|
||||
before allocation/dealocation conventions.
|
||||
|
||||
|
||||
|
||||
see ~rms/gnuorg/status
|
||||
|
||||
|
||||
|
||||
|
||||
Here is the simple description:
|
||||
|
||||
* Gnustep Base Library
|
||||
|
||||
The Gnustep Base Library (@code{libobjects}) is a library of
|
||||
general-purpose, non-graphical Objective C objects written by
|
||||
Andrew Kachites McCallum. It includes collection objects for maintaining
|
||||
groups of objects and C types, streams for I/O to various
|
||||
destinations, coders for formating objects and C types to streams,
|
||||
ports for network packet transmission, distributed objects (remote
|
||||
object messaging), pseudo-random number generators, and time handling
|
||||
facilities. It is known to work on i386, m68k, SPARC, MIPS, and
|
||||
RS6000. Contact the author at @samp{mccallum@gnu.ai.mit.edu}.
|
||||
|
||||
|
||||
(GNU's Flashes)
|
||||
|
||||
* New Library (on the Languages Tape?)
|
||||
|
||||
The Gnustep Base Library (@code{libobjects}) has been added.
|
||||
See ``GNU Software'' and ``Forthcoming GNUs'' for more information.
|
||||
|
||||
|
||||
(Forthcoming GNUs)
|
||||
|
||||
* Gnustep Base Library
|
||||
|
||||
Future versions will have String objects that are integrated into the
|
||||
Collection object hierarchy, a better allocation/deallocation
|
||||
mechanism, improved features for distributed objects (including a
|
||||
back-end that uses Mach ports instead of sockets), more extensive
|
||||
random number generator facilities, and ports to more machines.
|
||||
Volunteers are needed for additional projects; contact
|
||||
@code{mccallum@gnu.ai.mit.edu}.
|
23
CREDITS
23
CREDITS
|
@ -1,23 +0,0 @@
|
|||
*** Thanks to ****
|
||||
|
||||
Paul Kunz, Paul Burchard, Kresten Krab Thorup, Matthias Klose, Stefan
|
||||
Reich, Seth Tisue, Allan Clearwaters, Niels Mvller for bug reports and
|
||||
suggestions.
|
||||
|
||||
James Gledhill, Allan Clearwaters, Galen Hunt and Jonas Karlsson for
|
||||
help with testing on different architectures.
|
||||
|
||||
Adam Fedor for contributing the NXStringTable class. Kresten Thorup
|
||||
for contributing the GapArray class.
|
||||
|
||||
Geoffrey Knauth, the GNU Objective C project coordinator.
|
||||
|
||||
Kresten Krab Thorup for writing the GNU Objective C runtime.
|
||||
|
||||
Richard Stallman for his advice, for emacs, for GNU, and for the FSF.
|
||||
|
||||
Jim Wilson at Cygnus Support for help with IRIX4 nested function
|
||||
problems.
|
||||
|
||||
-- Andrew
|
||||
mccallum@gnu.ai.mit.edu
|
31
ChangeLog
31
ChangeLog
|
@ -1,3 +1,34 @@
|
|||
Mon Feb 9 13:08:27 1998 Adam Fedor <fedor@doc.com>
|
||||
|
||||
* AUTHORS, ANNOUNCE, README, INSTALL, STATUS, TODO: New files.
|
||||
* configure: Likewise.
|
||||
* +cronscript, +crontab, +patch.sh, Makefile.local, make-*,
|
||||
upload-dist: Removed non-dist files.
|
||||
* src/Makefile.local, src/Makefile.set.nt: Likewise.
|
||||
* GNUmakefile (DIST_FILES): Remove gcc diffs.
|
||||
* Makefile.postamble (regenerate): New target.
|
||||
(snapshot, dist): Update for cvs export.
|
||||
* NSCharacterSets/Makefile.postamble (regenerate): New target.
|
||||
* NSTimeZones/Makefile.postamble: Likewise
|
||||
* Tools/Makefile.postamble: Likewise.
|
||||
* admin/Makefile.postamble: Likewise
|
||||
* checks/Makefile.postamble: Likewise
|
||||
* doc/Makefile.postamble: Likewise
|
||||
* examples/Makefile.postamble: Likewise
|
||||
* src/Makefile.postamble: Likewise
|
||||
|
||||
* src/NSUserDefaults ([-synchronize]): Check for defaultDatabase
|
||||
and create it it doesn't exist.
|
||||
* src/NSThread.m ([-currentThread]): Set thread data for new
|
||||
thread.
|
||||
* src/NSString.m ([-initWithContentsOfFile:]): Check for NULL
|
||||
data. Patches suggested by Ulrich Steinmetz <ulrich@mis.mpg.de>
|
||||
|
||||
* src/NSHost.m: Remove arpa/inet.h
|
||||
* src/TcpPort.m: Likewise.
|
||||
* src/UnixFileHandle.m: Likewise.
|
||||
patches from Paul Kunz <Paul_Kunz@slac.stanford.edu>
|
||||
|
||||
Thu Feb 5 10:12:00 1998 Richard Frith-Macdonald <richard@brainstorm.co.uk>
|
||||
|
||||
* src/NSConcreteNumber.m: Defined preprocessor values to handle
|
||||
|
|
|
@ -234,6 +234,9 @@ GNUstep-HOWTO: version.tmpl.texi gnustep-howto.tmpl.texi
|
|||
# texi2html -expandinfo $(MAKEINFO_FLAGS) $<.html.texi
|
||||
# mv -f $<.html.html $*.html
|
||||
|
||||
regenerate: $(DIST_FILES)
|
||||
mv $(TOP_DOC_FILES) ..
|
||||
|
||||
copy-dist: $(DIST_FILES)
|
||||
mkdir ../snap/doc
|
||||
ln $(DIST_FILES) ../snap/doc
|
||||
|
|
|
@ -73,14 +73,14 @@ gstep-make
|
|||
gstep-base or libFoundation
|
||||
gstep-gui
|
||||
gstep-xpds
|
||||
FoundationExt (optional).
|
||||
FoundationExt.
|
||||
@end display
|
||||
|
||||
@section Getting the files
|
||||
|
||||
Most of the files needed by GNUstep are available from the following ftp
|
||||
sites. Except for gcc, gdb, make and libtiff, alpha.gnu.org and
|
||||
zarquon should contain the latest versions of all the required
|
||||
sites. Except for gcc, gdb, make and libtiff, alpha.gnu.org
|
||||
should contain the latest versions of all the required
|
||||
packages.
|
||||
|
||||
@table @samp
|
||||
|
@ -91,8 +91,10 @@ GNUstep public releases
|
|||
TIFF library
|
||||
@item ftp://alpha.gnu.org/gnu/gnustep
|
||||
GNUstep developer releases
|
||||
@ignore
|
||||
@item ftp://ftp.gnustep.org/pub/gnustep
|
||||
All GNUstep releases
|
||||
@end ignore
|
||||
@item ftp://zarquon.mathi.uni-heidelberg.de/pub/GNUstep
|
||||
All GNUstep releases
|
||||
@end table
|
||||
|
@ -103,7 +105,7 @@ version, in order to compile GNUstep.
|
|||
@example
|
||||
gcc-2.8.0.tar.gz (The GCC compiler)
|
||||
ftp://ftp.gnu.org/pub/gnu or from other GNU mirror sites.
|
||||
You may also use egcs-1.0.1.tar.gz, from ftp://ftp.cygnus.com/pub/egcs
|
||||
You can also use egcs-1.0.1.tar.gz, from ftp://ftp.cygnus.com/pub/egcs
|
||||
|
||||
gdb-4.16.tar.gz (The gdb debugger)
|
||||
make-3.75.tar.gz (You need GNU make to compile GNUstep).
|
||||
|
@ -120,7 +122,7 @@ tiff-970711.tar.gz
|
|||
|
||||
pcthreads-1.1.0.tar.gz (PCThreads for Linux/GNU Inel x86 systems)
|
||||
ftp://alpha.gnu.org/gnu/gnustep
|
||||
|
||||
|
||||
gstep-make-0.4.0.tar.gz (Makefile package)
|
||||
dgs-970711.tar.gz (The Display Ghostscript distribution)
|
||||
gstep-base-0.4.0.tar.gz (Foundation)
|
||||
|
@ -235,7 +237,7 @@ GNUstep system root as the prefix when you configure the package.
|
|||
./configure --prefix=$GNUSTEP_SYSTEM_ROOT
|
||||
@end example
|
||||
|
||||
@subsection Patching and Compiling GCC
|
||||
@subsection Compiling GCC
|
||||
|
||||
The following commands assume that all the aforementioned files have been
|
||||
copied to the /usr/src directory on your machine.
|
||||
|
@ -269,10 +271,6 @@ copied to the /usr/src directory on your machine.
|
|||
|
||||
@item 4. Compile gcc
|
||||
|
||||
make
|
||||
|
||||
or
|
||||
|
||||
make bootstrap
|
||||
|
||||
@item 5. Wait
|
||||
|
|
|
@ -71,6 +71,8 @@
|
|||
# Things to do after checking
|
||||
# after-check::
|
||||
|
||||
regenerate:
|
||||
|
||||
copy-dist: $(DIST_FILES)
|
||||
mkdir ../snap/examples
|
||||
for f in $(DIST_FILES); do \
|
||||
|
|
|
@ -42,9 +42,7 @@ DIST_FILES = \
|
|||
README.ULTRIX README.ucblib \
|
||||
COPYING COPYING.LIB ChangeLog \
|
||||
configure Version \
|
||||
config.guess mkinstalldirs install-sh config.sub \
|
||||
gcc-2.7.2-objc.diff \
|
||||
gcc-2.7.2.1-objc.diff
|
||||
config.guess mkinstalldirs install-sh config.sub
|
||||
|
||||
#
|
||||
# The list of subproject directories
|
||||
|
|
5
INSTALL
Normal file
5
INSTALL
Normal file
|
@ -0,0 +1,5 @@
|
|||
Read the file GNUstep-HOWTO for instructions on how to install the
|
||||
entire GNUstep package (including the base library). GNUstep-HOWTO
|
||||
comes with this distribution and also is located at the same ftp sites
|
||||
as this library.
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
install-lib: libobjects.a
|
||||
$(INSTALL_DATA) libobjects.a $(libdir)/libobjects.a
|
||||
$(RANLIB) $(libdir)/libobjects.a
|
|
@ -74,31 +74,33 @@ after-distclean::
|
|||
|
||||
configure: configure.in
|
||||
autoconf
|
||||
autoheader
|
||||
|
||||
snap: $(DIST_FILES)
|
||||
rm -rf snap
|
||||
mkdir snap
|
||||
# Regenerate automatically generated files
|
||||
regenerate: stamp-regenerate
|
||||
|
||||
stamp-regenerate: ChangeLog configure
|
||||
for i in $(SUBPROJECTS); do \
|
||||
(cd $$i; $(MAKE) $(MAKEDEFINES) copy-dist); \
|
||||
done
|
||||
mkdir snap/config
|
||||
for file in $(DIST_FILES); do \
|
||||
ln $$file snap/$$file ; \
|
||||
(cd $$i; $(MAKE) $(MAKEDEFINES) regenerate); \
|
||||
done
|
||||
touch stamp-regenerate
|
||||
|
||||
snapshot: snap
|
||||
ln README.first snap
|
||||
snapshot:
|
||||
@echo Making $(PACKAGE_NAME) snapshot
|
||||
cvs export -r snapshot-`date +%y%m%d` $(PACKAGE_NAME)
|
||||
rm -f .name
|
||||
echo $(PACKAGE_NAME)-`date +%y%m%d` >.name
|
||||
rm -rf `cat .name`
|
||||
mv snap `cat .name`
|
||||
mv $(PACKAGE_NAME) `cat .name`
|
||||
tar -chvf `cat .name`.tar `cat .name`
|
||||
rm -f `cat .name`.tar.gz
|
||||
gzip -9 `cat .name`.tar
|
||||
rm -rf `cat .name`
|
||||
|
||||
dist: snap
|
||||
mv snap $(PACKAGE_NAME)-$(VERSION)
|
||||
dist:
|
||||
@echo Making $(PACKAGE_NAME) release $(VERSION)
|
||||
cvs export -r release-`echo $(VERSION) | tr . -` $(PACKAGE_NAME)
|
||||
mv $(PACKAGE_NAME) $(PACKAGE_NAME)-$(VERSION)
|
||||
tar -chvf $(PACKAGE_NAME)-$(VERSION).tar \
|
||||
$(PACKAGE_NAME)-$(VERSION)
|
||||
rm -f $(PACKAGE_NAME)-$(VERSION).tar.gz
|
||||
|
@ -106,9 +108,11 @@ dist: snap
|
|||
rm -rf $(PACKAGE_NAME)-$(VERSION)
|
||||
|
||||
snapshot-rtag:
|
||||
@echo Tagging current base HEAD for snapshot `date +%y%m%d`
|
||||
cvs rtag snapshot-`date +%y%m%d` $(PACKAGE_NAME)
|
||||
|
||||
dist-rtag:
|
||||
@echo Tagging current base HEAD for release $(VERSION)
|
||||
cvs rtag release-`echo $(VERSION) | tr . -` $(PACKAGE_NAME)
|
||||
|
||||
rdiff:
|
||||
|
|
451
NEWS
Normal file
451
NEWS
Normal file
|
@ -0,0 +1,451 @@
|
|||
News
|
||||
****
|
||||
|
||||
The currently released version of the library is `0.4.0'.
|
||||
|
||||
Noteworthy changes in version `0.5.0'
|
||||
=====================================
|
||||
|
||||
* Improvements to the NSInvocation class, from Masatake Yamato
|
||||
<masata-y
|
||||
|
||||
* Implemented several new OpenStep methods and classes (e.g. NSTask)
|
||||
and speed improvements for others (NSArray, NSData, NSString),
|
||||
from Richard Frith-Macdonald <richard
|
||||
|
||||
Noteworthy changes in version `0.4.0'
|
||||
=====================================
|
||||
|
||||
* New tools for maintaining the defaults database.
|
||||
|
||||
* Use the new GNUstep Makefile Package to compile the library, tools
|
||||
checks, and everything else.
|
||||
|
||||
* An implementation of NSDistributedLock
|
||||
|
||||
* NSData implemented as a class cluster including a class to
|
||||
allocate shared VM memory.
|
||||
|
||||
* Big NSTimeZone improvements, as well as inclusion of time zone
|
||||
files, from Yoo C. Chung <wacko@laplace.snu.ac.kr>.
|
||||
|
||||
* Major improvements to distributed objects and many related clases
|
||||
from Richard Frith-Macdonald <richard@brainstorm.co.uk>. Also
|
||||
added a nameserver.
|
||||
|
||||
* Major rewrite of NSString, include Unicode strings from Stevo
|
||||
Crvenkovski <stevo@btinternet.com>
|
||||
|
||||
* A rewrite of the NSBundle class from Adam Fedor <fedor@gnu.org>
|
||||
|
||||
* Addition of a C-language style stream package.
|
||||
|
||||
* Better support for threads and locking.
|
||||
|
||||
* Support for running on Windows from Scott Christley
|
||||
<scottc@net-community.com>
|
||||
|
||||
* Many, many, many, many bug fixes and new classes.
|
||||
|
||||
Noteworthy changes since version `0.1.19'
|
||||
=========================================
|
||||
|
||||
* The library has changed its name from `libobjects' to
|
||||
`libgnustep-base'. The Apr 17 ChangeLog entry contains a list of
|
||||
the way various other names were changed.
|
||||
|
||||
* The library now requires a patch to gcc-2.7.2. The patch adds
|
||||
thread-safe features to the GNU Objective C runtime. Each thread
|
||||
has its own exception handler and assertion handler, thanks to Yoo
|
||||
C. Chung <wacko@power1.snu.ac.kr>.
|
||||
|
||||
* Distributed Objects is much improved. Exceptions in the server
|
||||
are sent back to the client. Ungracefully closed connections are
|
||||
gracefully handled.
|
||||
|
||||
* NSUserDefaults has been implemented, thanks to Georg Tuparev
|
||||
<tuparev@NMR.EMBL-Heidelberg.DE>.
|
||||
|
||||
* NSScanner has been implemented, thanks to Eric Norum
|
||||
<Eric.Norum@usask.ca>.
|
||||
|
||||
* NSCharacterSet has a new caching scheme, and is now faster than
|
||||
NeXT's implementation, thanks to Adam Fedor.
|
||||
|
||||
* Preliminary thread-safety work has been done. NSObject and
|
||||
NSAutoreleasePool should be thread-safe.
|
||||
|
||||
* The "%@" printf directive now works on systems without GNU libc.
|
||||
|
||||
* The NS*Page* functions have been implemented.
|
||||
|
||||
* The mframe and behavior functions have been overhauled and better
|
||||
commented.
|
||||
|
||||
* The NSHashTable and NSMapTable functions have been implemented,
|
||||
thanks to Albin Jones <albin.jones@dartmouth.edu>. Albin has also
|
||||
implemented underlying GNU functions that provide functions for
|
||||
arrays and linked lists of C-type variables.
|
||||
|
||||
* The NSThread class has been implemented. Thanks to Scott
|
||||
Christley <scottc@net-community.com>, the NSLock class has been
|
||||
implemented.
|
||||
|
||||
* A RunLoop class has been implemented, and is used for listening to
|
||||
Port objects. It is used for Distributed Objects. There is also
|
||||
an NSRunLoop class based on RunLoop.
|
||||
|
||||
* The NSTimer class has been implemented, although its use with
|
||||
RunLoops is currently disabled.
|
||||
|
||||
* The Notification mechanism has been implemented. It makes good
|
||||
use of hash tables and linked lists in order to be fast.
|
||||
|
||||
* The Invocation class heirarchy has been fleshed out and now works.
|
||||
|
||||
* The collection classes have been overhauled to better handle
|
||||
distributed objects, and for better compatibility with NeXT's
|
||||
method names.
|
||||
|
||||
A new separation has been made in the abstract collection classes:
|
||||
IndexedCollections contain objects accessible by an integer key,
|
||||
but the user cannot insert at an arbitrary key; these are useful
|
||||
for sorted collections, such as SplayTree's. OrderedCollection can
|
||||
have their order determined by the user; i.e. users can send
|
||||
`-insertObject:atIndex:', etc.
|
||||
|
||||
There is a new set of rich enumeration methods based on
|
||||
Invocations.
|
||||
|
||||
* Port class heirarchy has been overhauled. There are now classes
|
||||
for TCP ports, UDP ports, and Mach ports. Only the TCP ports are
|
||||
currently functional.
|
||||
|
||||
* GNU-style archiving has had an overhaul, and the GNUstep
|
||||
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 low-level format of how C-types are written. There are
|
||||
several new classes. CStream is a subclass of Stream that knows
|
||||
how to encode C-type variables in a machine independent way; this
|
||||
class has two concrete subclasses: BinaryCStream, and TextCStream.
|
||||
Plug these backends into Coder to get different style low-level
|
||||
formats for archiving.
|
||||
|
||||
Floats and doubles are now encoded more efficiently.
|
||||
|
||||
NSArchiver is built on top of Coder. You can actually send all the
|
||||
Coder methods to NSArchiver and vice-versa.
|
||||
|
||||
GNU classes BinaryCoder and TextCoder are gone.
|
||||
|
||||
* Several new OpenStep functions have been implemented:
|
||||
NSHomeDirectory, NSUserName, NSHomeDirectoryForUser, NSPageSize,
|
||||
NSLogPageSize, NSroundUpToMultipleOfPageSize,
|
||||
NSRoundDownToMultipleOfPageSize, NSRealMemoryAvailable,
|
||||
NSAllocateMemoryPages, NSDeallocateMemoryPages, NSCopyMemoryPages.
|
||||
|
||||
* ...and many bug fixes.
|
||||
|
||||
Noteworthy changes since version `0.1.14'
|
||||
=========================================
|
||||
|
||||
* Can be made as a shared library by passing `--enabled-shared' to
|
||||
`configure'. Thanks to Jan Kybic <kybic@earn.cvut.cz> and Bryan
|
||||
Headley <bwh@mail.lnd.coretech.com> for suggestions.
|
||||
|
||||
* New classes NSSet, NSMutableSet, NSCountedSet. New concrete
|
||||
classes NSGSet, NSGMutableSet, NSGCountedSet. New test program
|
||||
nsset.m. New class NSMethodSignature.
|
||||
|
||||
* Running './configure' and building the library in a different
|
||||
directory than the source works as it should, according to the GNU
|
||||
standards.
|
||||
|
||||
* Dynamic loading fixes for Solaris, thanks to Adam Fedor.
|
||||
|
||||
* Fixes to Coder correct bugs with encoding/decoding wildly
|
||||
interconnected objects. (My application uses a "Suffix Tree"
|
||||
structure: a Tree, and a LinkedList that winds its way through the
|
||||
leaves of the tree; the LinkedList nodes also have pointers back
|
||||
to the tree nodes.)
|
||||
|
||||
* NSTimeZone implemented, thanks to Peter Burka
|
||||
<peter@bert.psyc.upei.ca>
|
||||
|
||||
* NSData fixes, thanks to Adam Fedor.
|
||||
|
||||
* NSObjCRuntime functions implemented. NSObject description methods
|
||||
implemented.
|
||||
|
||||
* Bug fixes in NSString, NSDictionary, NSArray, NSGeometry and other
|
||||
places.
|
||||
|
||||
Noteworthy changes since version `0.1.13'
|
||||
=========================================
|
||||
|
||||
* NSProcessInfo class, thanks to Georg Tuparev.
|
||||
|
||||
* NSDate now more operational, thanks to Jeremy Bettis.
|
||||
|
||||
* Autorelease checking improved, thanks to Adam Fedor.
|
||||
|
||||
* NSString concrete classes now more configurable. Several new
|
||||
methods implemented.
|
||||
|
||||
* Many bug fixes.
|
||||
|
||||
Noteworthy changes since version `0.1.12'
|
||||
=========================================
|
||||
|
||||
* Bug fixes: installation; NSArray and NSDictionary copying;
|
||||
NSArray, NSDictionary, NSData, NSArchiver, NSUnarchiver concrete
|
||||
class configurability; NSString -getCharacter:range:. See the
|
||||
ChangeLog for more details.
|
||||
|
||||
Noteworthy changes since version `0.1.10'
|
||||
=========================================
|
||||
|
||||
* Now using `src', `config' and `doc' directories to un-clutter the
|
||||
top-level directory.
|
||||
|
||||
* New GNUStep classes implemented: NSDictionary, NSMutableDictionary;
|
||||
concrete classes NSGDictionary, NSGMutableDictionary; enumeration
|
||||
classes NSGDictionaryKeyEnumerator, NSGDictionaryObjectEnumerator.
|
||||
|
||||
* More methods in NSData are implemented, thanks to Albin Jones.
|
||||
|
||||
* More methods in NSString are implemented; we have new classes
|
||||
NSCharacterSet and NSBitmapCharSet; all thanks to Adam Fedor.
|
||||
|
||||
* And several bug fixes. See the ChangeLog for details.
|
||||
|
||||
Noteworthy changes since version `0.1.9'
|
||||
========================================
|
||||
|
||||
* Renamed "foundation" include file directory to "Foundation", in
|
||||
accordance with OpenStep.
|
||||
|
||||
* Several bug fixes, including a problem with a missing file in
|
||||
0.1.9.
|
||||
|
||||
Noteworthy changes since version `0.1.8'
|
||||
========================================
|
||||
|
||||
* Many new GNUStep classes: NSEnumerator, NSArrayEnumerator, NSCoder,
|
||||
NSArchiver, NSUnarchiver, NSData, NSMutableData, NSGCoder,
|
||||
NSGArchiver, NSGUnarchiver, NSGData, NSGMutableData. Much coding
|
||||
and prep work has been done to make archiving work (see the
|
||||
ChangeLog), but it's not quite ready for action yet.
|
||||
|
||||
* New GNUStep classes implemented by others: Thanks to Adam Fedor,
|
||||
NSAssertionHandler. Thanks to Jeremy Bettis, NSDate.
|
||||
|
||||
* Overhauled encoding and decoding. The Coder now sends
|
||||
-initWithCoder by default, but will still send the more flexible
|
||||
+newWithCoder if the class implements it. See objects/Coding.h.
|
||||
The Stream class interface has been changed slightly. There are
|
||||
two new protocols for Streams.
|
||||
|
||||
* Several new debug-aiding methods implemented in NSAutoreleasePool.
|
||||
|
||||
* Separated Constant Collection protocols from changeable ones.
|
||||
Eventually I'll separate the classes too.
|
||||
|
||||
* Included an outline for the GNU Objective C Language Manual. The
|
||||
GNU project is looking for volunteers to help flesh it out. Send
|
||||
email to Martin Michlmayr <tbm@ihq.com> or Andrew McCallum
|
||||
<mccallum@gnu.ai.mit.edu>.
|
||||
|
||||
* Include the AUTHORS file, needed for legal reasons. Include the
|
||||
`GNUStep-volunteers' file.
|
||||
|
||||
* Several bug fixes: Typo in Array.m; Linux header file frobbing in
|
||||
NSZone.h; typo causing crash in checks/nsarray.m; bad deallocation
|
||||
in Collection.m; typo in BinaryTree.m; put -write: and -read:
|
||||
implementations back in Collection.m.
|
||||
|
||||
Noteworthy changes since version `0.1.7'
|
||||
========================================
|
||||
|
||||
* Thanks to Adam Fedor <fedor@boulder.colorado.edu>, classes
|
||||
NSBundle, NSNumber and NSValue are now operational. He also
|
||||
provided stubs for NSArray, NSCoder and NSDictionary.
|
||||
|
||||
* NSArray has been fleshed out. There are new classes
|
||||
NSConcreteArray and NSConcreteMutableArray. Basic operations with
|
||||
the NSArray class cluster now work, and it is set up to coexist
|
||||
nicely with the GNU collection heirarchy. Next I'll do
|
||||
NSDictionary in a similar style.
|
||||
|
||||
* 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 reinstall the runtime before you can compile this
|
||||
version of libgnustep-base.
|
||||
|
||||
* Several bug fixes, including two serious ones in Collection
|
||||
deallocation and behavior adding. See the ChangeLog for details.
|
||||
|
||||
Noteworthy changes since version `0.1.5'
|
||||
========================================
|
||||
|
||||
* Better string handling. NSString is now fleshed out, and I've
|
||||
implemented a scheme by which the GNU String object and OpenStep's
|
||||
NSString can coexist nicely. The OpenStep classes declare their
|
||||
string arguments with (NSString*) just like the standard says, but
|
||||
the preferred (more flexible) way to declare string arguments is
|
||||
(id <String>); and these two types are set up so that they
|
||||
coexist. There is still more to be done. NSString has several
|
||||
unimplemented methods; GNU String needs some more work.
|
||||
|
||||
* Newly implemented classes: MallocAddress, NSString,
|
||||
NSMutableString, NSCString, NSMutableCString.
|
||||
|
||||
* Thanks to Pieter Schoenmakers <tiggr@es.ele.tue.nl> we have a new
|
||||
version of the gcc-string.patch that should apply more smoothly.
|
||||
|
||||
* Thanks to Adam Fedor <fedor@boulder.colorado.edu> for a bug fix to
|
||||
NXStringTable's.
|
||||
|
||||
* Thanks to Mark Lakata <lakata@nsdssp.lbl.gov> for a bug fix to
|
||||
NSZone.c.
|
||||
|
||||
* Several bug fixes. Thanks to those who reported them. Credits
|
||||
are in the ChangeLog.
|
||||
|
||||
Noteworthy changes since version `0.1.3'
|
||||
========================================
|
||||
|
||||
This release not well tested at all. We desperately need someone to
|
||||
write a test suite using dejagnu. Any volunteers?
|
||||
|
||||
I made this release now in order to share the progress that is being
|
||||
made on GNUSTEP.
|
||||
|
||||
* New GNUSTEP implementations: NSObject, NSAutoreleasePool, NSZone.
|
||||
Thanks to Mark Lakata for NSZone.
|
||||
|
||||
* New GNUSTEP implementations included, but not compiled: NSBundle,
|
||||
NSException, NSGeometry, NSNumber, NSValue. Many thanks Adam
|
||||
Fedor.
|
||||
|
||||
* Many new GNU classes: String classes! String, MutableString,
|
||||
ConstantString. One interesting feature of the GNU string classes
|
||||
is that that, just like in Smalltalk, they are part of the
|
||||
Collection heirarchy--all the methods you are used to using on
|
||||
other collections can be used on these "collections of
|
||||
characters". You can create ConstantStrings using the @"" syntax.
|
||||
|
||||
* Entire library converted to use `retain', `release',
|
||||
`autorelease', `dealloc' instead of `free'.
|
||||
|
||||
Noteworthy changes since version `0.1.0'
|
||||
========================================
|
||||
|
||||
* New category: ObjectRetaining. New classes: AutoreleasePool,
|
||||
AutoreleaseStack.
|
||||
|
||||
* Bug fixes: Install next-includes properly. New instructions in
|
||||
README.ULTRIX. Time.m patched for Solaris 2.4. test12.m free fix.
|
||||
|
||||
Noteworthy changes in version `0.1.0'
|
||||
=====================================
|
||||
|
||||
* Renamed the library from `libcoll' to `libgnustep-base'. (See the
|
||||
end of the file `DISCUSSION' for the background on this name
|
||||
choice.) Several file names changed to reflect this. GNU class
|
||||
interfaces are now included with `objects' prefix, e.g. `#include
|
||||
<objects/BinaryTree.h>'.
|
||||
|
||||
* Many new classes. Pseudo-random number classes Random, RNGBerkeley
|
||||
and RNGAdditiveCongruential. New stream classes Stream,
|
||||
StdioStream and MemoryStream. New coder classes Coder, TextCoder
|
||||
and BinaryCoder. New network packet transmission classes Port and
|
||||
SocketPort. New remote object messaging classes Connection, Proxy
|
||||
and ConnectedCoder. New protocols Coding and Retaining. New, but
|
||||
unimplemented: Lock and Locking. New but soon-to-disapppear:
|
||||
RetainingNotifier, InvalidationListening.
|
||||
|
||||
* Some bug fixes: Fixed the assert typo in Storage.m. The Time
|
||||
class now compiles under Solaris. Fixed insertion bug in
|
||||
CircularArray. NXStringTable_scan.l can now be compiled with lex,
|
||||
not just flex, (thanks to Adam Fedor <adam@bastille.rmnug.org>).
|
||||
Properly detect the difference between gcc running under NEXTSTEP
|
||||
and NeXT's cc. Using autoconf version 2.0. Renamed DelegateList
|
||||
to DelegatePool. Renamed some collection hierarchy methods for
|
||||
better consistency.
|
||||
|
||||
* Some directory reorganization so that NeXT-compatible files can be
|
||||
included in the standard way, e.g. #include <objc/List.h>. Some
|
||||
other NeXT-compatibility improvements: Changed `GNU' prefix to `NX'
|
||||
in List and HashTable. New files zone.[hc] containing dummy stubs
|
||||
for NeXT-compatible zone functions.
|
||||
|
||||
Noteworthy changes in verion `940524'
|
||||
=====================================
|
||||
|
||||
* A NeXT-compatible NXStringTable object, thanks to Adam Fedor
|
||||
<adam@bastille.rmnug.org>.
|
||||
|
||||
* SplayTree and RBTree classes now operational. More methods in Time
|
||||
class implemented.
|
||||
|
||||
* Some API cleanup: -delegateListList changed to
|
||||
-delegateListCollection. -includesSameContents: changed to
|
||||
-contentsEqual:. -insertObject:atKey: changed to
|
||||
-putObject:atKey:. See the ChangeLog for more detail.
|
||||
|
||||
* Configuration by autoconf in the self-tests directory.
|
||||
Configuration script tests GCC nested functions. Configuration
|
||||
script detects NEXTSTEP and makes the appropriate adjustments,
|
||||
including skipping the NeXT-compatibility classes.
|
||||
|
||||
* Bug fixes: BinaryTree rotate methods fixed. Fixed the way
|
||||
`ifNone:' and `ifAbsent:' functions were called. Fixed the way
|
||||
long elements are printed. Added methods for preventing memory
|
||||
leaks by unfinished enumerations: `-newEnumState' and
|
||||
`-freeEnumState:'. Several bug fixes in List and Storage; changes
|
||||
for better NeXT-compability. And more.
|
||||
|
||||
Noteworthy changes in version `931026'
|
||||
======================================
|
||||
|
||||
* Installation using `./configure' and `autoconf'
|
||||
|
||||
* New BinaryTree and RBTree(unfinished) classes. Rewritten
|
||||
LinkedList class.
|
||||
|
||||
* A new scheme for holding non-object elements in classes that
|
||||
require object contents; EltNodeCollector class.
|
||||
|
||||
* Archiving with -write: and -read: methods. This involved removing
|
||||
the ability to set the comparison function independent of content
|
||||
type.
|
||||
|
||||
* Removed COLL_NO_ELEMENT and friends. Now there are no arbitrary
|
||||
restrictions on which long int's can be stored. Like in Smalltalk,
|
||||
...ifAbsentCall: methods have been added to replace this
|
||||
functionalty.
|
||||
|
||||
* Added a LABMDA() macro for defining small functions in the arg
|
||||
position.
|
||||
|
||||
* Removed many ...perform: methods. Use instead the more flexible
|
||||
...call: methods with LABMDA().
|
||||
|
||||
* Renamed ...Description: methods to ...Encoding: for better use of
|
||||
already-defined objc keyword: @encode().
|
||||
|
||||
* New in the Collecting protocol: Filtered enumerating instead of
|
||||
filtered shallowCopy'ing. Enumerations still safe when modifying
|
||||
the contents.
|
||||
|
||||
* The beginnings of documentation in libcoll.texi.
|
||||
|
||||
* Many bug fixes.
|
||||
|
||||
* ...and more.
|
||||
|
||||
Also see the `ChangeLog' file for more detail.
|
||||
|
|
@ -78,6 +78,8 @@ after-uninstall::
|
|||
# Things to do after checking
|
||||
# after-check::
|
||||
|
||||
regenerate:
|
||||
|
||||
copy-dist: $(DIST_FILES)
|
||||
mkdir ../snap/NSCharacterSets
|
||||
for file in $(DIST_FILES); do \
|
||||
|
|
|
@ -79,6 +79,8 @@ after-distclean::
|
|||
# Things to do after checking
|
||||
# after-check::
|
||||
|
||||
regenerate:
|
||||
|
||||
copy-dist: $(DIST_FILES)
|
||||
mkdir ../snap/NSTimeZones
|
||||
for file in $(DIST_FILES); do \
|
||||
|
|
135
README
Normal file
135
README
Normal file
|
@ -0,0 +1,135 @@
|
|||
Readme
|
||||
******
|
||||
|
||||
The GNUstep Base Library is a library of general-purpose, non-graphical
|
||||
Objective C objects. For example, it includes classes for strings,
|
||||
object collections, byte streams, typed coders, invocations,
|
||||
notifications, notification dispatchers, moments in time, network ports,
|
||||
remote object messaging support (distributed objects), event loops, and
|
||||
random number generators.
|
||||
|
||||
It provides functionality that aims to implement the non-graphical
|
||||
portion of the OpenStep standard. In many cases, the `NS*' classes are
|
||||
implemented as wrappers around more featureful GNU classes.
|
||||
|
||||
Here is some introductory info to get you started:
|
||||
|
||||
Initial reading
|
||||
===============
|
||||
|
||||
The file `NEWS' has the library's feature history.
|
||||
|
||||
The file `GNUstep-HOWTO' give instructions for installing the
|
||||
library.
|
||||
|
||||
Preparing to write code
|
||||
=======================
|
||||
|
||||
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 recommend reading the header files. The headers for
|
||||
the classes are in `./src/include'.
|
||||
|
||||
The FAQ contains an outline of the class heirarchy, as well as a
|
||||
list of the differences between GNUstep and NeXT's implementation of
|
||||
OpenStep, and GNUstep's improvements over NeXT's implementation.
|
||||
|
||||
Overview of the classes
|
||||
=======================
|
||||
|
||||
Here is partial list of non-OpenStep classes, grouped by
|
||||
functionality.
|
||||
|
||||
There are several GNU-specific protocols also. You can recognize the
|
||||
protocols by their name: they all end with "ing".
|
||||
|
||||
* The collection objects all conform to the `Collecting' protocol.
|
||||
Reading `src/include/Collecting.h' is a good place to start.
|
||||
Protocols for collections that store their contents with keys and
|
||||
with indices can be found in `src/incliude/KeyedCollecting.h' and
|
||||
`src/include/IndexedCollecting.h' respectively. Examples of
|
||||
generic collections are `Set' and `Bag'. The keyed collections are
|
||||
`Dictionary' and `MappedCollector'. The classes `Array', `Queue',
|
||||
`GapArray', `LinkedList', `BinaryTree', `RBTree' and `SplayTree'
|
||||
are all indexed collections.
|
||||
|
||||
* The string objects conform to the `String' protocol. `CString'
|
||||
provides an interface to strings based on ASCII bytes, and is
|
||||
currently the only concrete subclass of String. The interface
|
||||
between GNU `String' and OpenStep's `NSString' needs cleaning up
|
||||
and will change. For now, I recommend using `NSString'.
|
||||
|
||||
* The public magnitude classes are `Time' and `Random'. The
|
||||
`Random' class works in conjunction with pseudo-random number
|
||||
generators that conform to the `RandomGenerating' protocol. The
|
||||
conforming class `RNGBerkeley' provides identical behavior to the
|
||||
BSD random() function. The class `RNGAdditiveCongruential' is an
|
||||
implementation of the additive congruential method.
|
||||
|
||||
* Stream objects provide a consistent interface for reading and
|
||||
writing bytes. Read `src/include/Stream.h' to get the general
|
||||
idea. `StdioStream' objects work with files, file descriptors,
|
||||
FILE pointers and pipes to/from executables. `MemoryStream'
|
||||
objects work with memory buffers.
|
||||
|
||||
* CStream objects provide a way to write C variables to Stream
|
||||
objects. Read `src/include/CStream.h' to understand the interface
|
||||
of the abstract superclass. `TextCStream' writes C variables in a
|
||||
human-readable ASCII format that can be manipulated with a text
|
||||
editor or with your choice of text-processing programs, like `awk'
|
||||
or `perl'. `BinaryCStream' writes C variables in a compact,
|
||||
illegible stream of bytes. `TextCStream' and `BinaryCStream' each
|
||||
write in machine-independant formats--so you can write on one
|
||||
machine architecture, and successfully read on another.
|
||||
`RawCStream' is like `BinaryCStream' accept it is
|
||||
machine-dependant; it useful for efficient Distributed Objects
|
||||
connections on the same machine.
|
||||
|
||||
* Coders provide a formatted way of writing Objective C objects to
|
||||
CStream objects. After a coder is initialized with a stream, the
|
||||
coder can encode/decode interconnected webs of Objective C objects
|
||||
and C types and successfully keep track of complex
|
||||
interconnections between objects. See `src/include/Coder.h' for
|
||||
the abstract superclass interface; see `src/include/Coding.h' for
|
||||
the protocol adopted by objects that read and write themselves
|
||||
using coders. `Archiver' and `Unarchiver' are concrete subclasses
|
||||
that are used for writing/reading with files.
|
||||
|
||||
`Coder's and `CStream's and `Stream's can be mixed and matched so
|
||||
that programmers can choose the destination and the format
|
||||
separately.
|
||||
|
||||
* The distributed object support classes are `NSConnection',
|
||||
`NSProxy', `ConnectedCoder', `Port' and `TcpPort'. This version
|
||||
of the distributed objects only works with sockets. A Mach port
|
||||
back-end should be on the way.
|
||||
|
||||
Test Programs
|
||||
=============
|
||||
|
||||
Some of the programs I've used to test the library are in
|
||||
`./checks'. Many of them are pretty messy, (desperately trying to
|
||||
tickle that late night bug), but at least they show some code that works
|
||||
when the library compiles correctly. I'm looking for a volunteer to
|
||||
write some nicely organized test cases using `dejagnu'. Any takers?
|
||||
|
||||
How can you help?
|
||||
=================
|
||||
|
||||
* Read the projects and questions in the `TODO' file. If you
|
||||
can volunteer for any of the projects, or if you have any
|
||||
useful comments send me email!
|
||||
|
||||
* Give me feedback! Tell me what you like; tell me what you
|
||||
think could be better. Send me bug reports.
|
||||
|
||||
* Donate classes. If you write classes that fit in the
|
||||
libgnustep-base framework, I'd be happy to include them.
|
||||
|
||||
Happy hacking!
|
||||
Andrew McCallum
|
||||
mccallum@gnu.org
|
||||
|
||||
Adam Fedor
|
||||
fedor@gnu.org
|
||||
|
380
STATUS
Normal file
380
STATUS
Normal file
|
@ -0,0 +1,380 @@
|
|||
Status Report
|
||||
*************
|
||||
|
||||
Please send corrections to <fedor@gnu.org>.
|
||||
|
||||
*Key:*
|
||||
|
||||
*[10]*
|
||||
Complete and tested.
|
||||
|
||||
*[8]*
|
||||
Missing a few non-core methods, definitely usable.
|
||||
|
||||
*[6]*
|
||||
Missing several methods, but core is there, usable.
|
||||
|
||||
*[4]*
|
||||
Begun, but missing core functionality, not usable.
|
||||
|
||||
*[2]*
|
||||
Skeleton.
|
||||
|
||||
*[0]*
|
||||
Nothing there.
|
||||
|
||||
*[?]*
|
||||
Unknown status.
|
||||
|
||||
Classes
|
||||
=======
|
||||
|
||||
(Many classes do not raise the proper NSExceptions yet.)
|
||||
|
||||
*NSArchiver:: [8]*
|
||||
Doesn't yet call -awakeAfterUsingCoder:.
|
||||
|
||||
*NSArray:: [9]*
|
||||
*NSAssertionHandler:: [9]*
|
||||
*NSAutoreleasePool:: [9]*
|
||||
But not exception- safe
|
||||
|
||||
*NSBundle:: [8]*
|
||||
*NSCalendarDate:: [7]*
|
||||
*NSCharacterSet:: [8]*
|
||||
decomposableCharacterSet and illegalCharacter set missing
|
||||
|
||||
*NSCoder:: [8]*
|
||||
Missing class name substitution methods.
|
||||
|
||||
*NSConditionLock:: [8]*
|
||||
*NSConnection:: [7]*
|
||||
GNU Connection, however, needs:
|
||||
|
||||
|
||||
* to handle retain/release/dealloc properly
|
||||
|
||||
* to be integrated with NSInvocation
|
||||
|
||||
* to incorporate futzing with low-level TCP-backend for better
|
||||
speed
|
||||
|
||||
* to have UDP-backend work
|
||||
|
||||
* to cache ConnectedCoder's for better speed
|
||||
|
||||
* Thread-safety overhaul, this is major
|
||||
|
||||
*NSCountedSet:: [8]*
|
||||
*NSData:: [8]*
|
||||
*NSDate:: [8]*
|
||||
*NSDeserializer:: [7]*
|
||||
*NSDictionary:: [8]*
|
||||
*NSDistantObject:: [7]*
|
||||
*NSEnumerator:: [9]*
|
||||
*NSException:: [9]*
|
||||
But this needs integration with new, better
|
||||
|
||||
*NSInvocation:: [3]*
|
||||
*NSLock:: [8]*
|
||||
*NSMethodSignature:: [4]*
|
||||
*NSMutableArray:: [8]*
|
||||
*NSMutableCharacterSet:: [7]*
|
||||
*NSMutableData:: [8]*
|
||||
*NSMutableDictionary:: [8]*
|
||||
*NSMutableSet:: [8]*
|
||||
*NSMutableString:: [8]*
|
||||
*NSNotification:: [9]*
|
||||
*NSNotificationCenter:: [9]*
|
||||
*NSNotificationQueue:: [6]*
|
||||
Needs integration with NSRunLoop, and efficiency improvements
|
||||
|
||||
*NSNumber:: [9]*
|
||||
*NSObject:: [10]*
|
||||
*NSProcessInfo:: [9]*
|
||||
*NSProxy:: [7]*
|
||||
*NSRecursiveLock:: [8]*
|
||||
*NSRunLoop:: [8]*
|
||||
NSTimer's not yet working, but everything else should be
|
||||
|
||||
*NSScanner:: [8]*
|
||||
*NSSerializer:: [7]*
|
||||
*NSSet:: [8]*
|
||||
*NSString:: [8]*
|
||||
Careful, relationship with GNU String is tricky; this could also
|
||||
use fixing.
|
||||
|
||||
*NSThread:: [8]*
|
||||
*NSTimeZone:: [8]*
|
||||
*NSTimeZoneDetail:: [8]*
|
||||
*NSTimer:: [6]*
|
||||
Working out bugs with returning doubles.
|
||||
|
||||
*NSUnarchiver:: [8]*
|
||||
See NSArchvier
|
||||
|
||||
*NSUserDefaults:: [8]*
|
||||
*NSValue:: [9]*
|
||||
Cross-Class Projects, or GNU-related foundations for GNUstep classes
|
||||
====================================================================
|
||||
|
||||
*Finish subclasses of Port class: Ports based on UDP, pflocal*
|
||||
sockets, and shared memory.
|
||||
|
||||
*String classes will get some organizational work.*
|
||||
Protocols
|
||||
=========
|
||||
|
||||
*NSCoding:: [9]*
|
||||
*NSCopying:: [9]*
|
||||
*NSLocking:: [9]*
|
||||
*NSMutableCopying:: [9]*
|
||||
*NSObjCTypeSerializationCallBack:: [9]*
|
||||
*NSObject (Protocol):: [9]*
|
||||
Functions
|
||||
=========
|
||||
|
||||
Memory Allocation Functions
|
||||
---------------------------
|
||||
|
||||
*[8] Get the Virtual Memory Page Size*
|
||||
`unsigned NSPageSize (void)'
|
||||
`unsigned NSLogPageSize (void)'
|
||||
`unsigned NSRoundDownToMultipleOfPageSize (unsigned BYTECOUNT)'
|
||||
`unsigned NSRoundUpToMultipleOfPageSize (unsigned BYTECOUNT)'
|
||||
|
||||
*[2] Get the Amount of Real Memory*
|
||||
`unsigned NSRealMemoryAvailable (void)'
|
||||
|
||||
*[8] Allocate or Free Virtual Memory*
|
||||
`void *NSAllocateMemoryPages (unsigned BYTECOUNT)'
|
||||
`void NSDeallocateMemoryPages (void *POINTER, unsigned BYTECOUNT)'
|
||||
`void NSCopyMemoryPages (const void *SOURCE, void *DESTINATION, unsigned BYTECOUNT)'
|
||||
|
||||
*[8] Child and Merge Zones*
|
||||
void NSMergeZone(NSZone *zonep)
|
||||
NSZone *NSCreateChildZone(NSZone *parentZone, size_t startSize, size_t granularity, int canFree)
|
||||
|
||||
*[9] Get a Zone*
|
||||
`NSZone *NSCreateZone (unsigned STARTSIZE, unsigned GRANULARITY, BOOL CANFREE)'
|
||||
`NSZone *NSDefaultMallocZone (void)'
|
||||
`NSZone *NSZoneFromPointer (void *POINTER)'
|
||||
|
||||
*[10] Allocate or Free Memory in a Zone*
|
||||
`void *NSZoneMalloc (NSZone *ZONE,'
|
||||
`void *NSZoneCalloc (NSZone *ZONE, unsigned NUMELEMS, unsigned NUMBYTES)'
|
||||
`void *NSZoneRealloc (NSZone *ZONE, void *POINTER, unsigned SIZE)'
|
||||
`void NSRecycleZone (NSZone *ZONE)'
|
||||
`void NSZoneFree (NSZone *ZONE, void *POINTER)'
|
||||
|
||||
*[9] Name a Zone*
|
||||
But the function names are wrong
|
||||
`void NSSetZoneName (NSZone *ZONE, NSString *name)'
|
||||
`NSString *NSZoneName (NSZone *ZONE)'
|
||||
|
||||
Object Allocation Functions
|
||||
---------------------------
|
||||
|
||||
*[10] Allocate or Free an Object*
|
||||
`NSObject *NSAllocateObject (Class ACLASS, unsigned EXTRABYTES, NSZone *ZONE)'
|
||||
`NSObject *NSCopyObject(NSObject *ANOBJECT, unsigned EXTRABYTES, NSZone *ZONE)'
|
||||
`void NSDeallocateObject (NSObject *ANOBJECT)'
|
||||
|
||||
*[9] Decide Whether to Retain an Object*
|
||||
`BOOL NSShouldRetainWithZone (NSObject *ANOBJECT, NSZone
|
||||
*REQUESTEDZONE)'
|
||||
|
||||
*[9] Modify the Number of References to an Object*
|
||||
`BOOL NSDecrementExtraRefCountWasZero(id ANOBJECT)'
|
||||
`void NSIncrementExtraRefCount(id ANOBJECT)'
|
||||
|
||||
Error-Handling Functions
|
||||
------------------------
|
||||
|
||||
*[9] Change the Top-level Error Handler*
|
||||
``NSUncaughtException'Handler *`NSGetUncaughtException'Handler(void)'
|
||||
`void `NSSetUncaughtException'Handler(`NSUncaughtException'Handler *HANDLER)'
|
||||
|
||||
*[9] Macros to Handle an Exception*
|
||||
`NS_DURING'
|
||||
`NS_ENDHANDLER'
|
||||
`NS_HANDLER'
|
||||
`NS_VALUERETURN(VALUE, TYPE)'
|
||||
`NS_VOIDRETURN'
|
||||
|
||||
*[9] Call the Assertion Handler from the Body of an Objective-C Method*
|
||||
`NSAssert(BOOL CONDITION, NSString *DESCRIPTION)'
|
||||
`NSAssert1(BOOL CONDITION, NSString *DESCRIPTION, ARG)'
|
||||
`NSAssert2(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2)'
|
||||
`NSAssert3(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3)'
|
||||
`NSAssert4(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3, ARG4)'
|
||||
`NSAssert5(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3, ARG4, ARG5)'
|
||||
|
||||
*[9] Call the Assertion Handler from the Body of a C Function*
|
||||
`NSCAssert(BOOL CONDITION, NSString *DESCRIPTION)'
|
||||
`NSCAssert1(BOOL CONDITION, NSString *DESCRIPTION, ARG)'
|
||||
`NSCAssert2(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2)'
|
||||
`NSCAssert3(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3)'
|
||||
`NSCAssert4(BOOL CONDITION, NSString *DESCRIPTION, arg1, ARG2, ARG3, ARG4)'
|
||||
`NSCAssert5(BOOL CONDITION, NSString *DESCRIPTION, ARG1, ARG2, ARG3, ARG4, ARG5)'
|
||||
|
||||
*[9] Validate a Parameter*
|
||||
`NSParameterAssert(BOOL CONDITION)'
|
||||
`NSCParameterAssert(BOOL CONDITION)'
|
||||
|
||||
Geometric Functions
|
||||
-------------------
|
||||
|
||||
*[10] Create Basic Structures*
|
||||
`NSPoint NSMakePoint(float X, float Y)'
|
||||
`NSSize NSMakeSize(float W, float H)'
|
||||
`NSRect NSMakeRect(float X, float Y, float W, float H)'
|
||||
`NSRange NSMakeRange(unsigned int LOCATION, unsigned int LENGTH)'
|
||||
|
||||
*[10] Get a Rectangle's Coordinates*
|
||||
`float NSMaxX(NSRect ARECT)'
|
||||
`float NSMaxY(NSRect ARECT)'
|
||||
`float NSMidX(NSRect ARECT)'
|
||||
`float NSMidY(NSRect ARECT)'
|
||||
`float NSMinX(NSRect ARECT)'
|
||||
`float NSMinY(NSRect ARECT)'
|
||||
`float NSWidth(NSRect ARECT)'
|
||||
`float NSHeight(NSRect ARECT)'
|
||||
|
||||
*[10] Modify a Copy of a Rectangle*
|
||||
`NSRect NSInsetRect(NSRect ARECT, float DX, float DY)'
|
||||
`NSRect NSOffsetRect(NSRect ARECT, float DX, float DY)'
|
||||
`void NSDivideRect(NSRect INRECT, NSRect *SLICE, NSRect *REMAINDER, float AMOUNT, NSRectEdge EDGE)'
|
||||
`NSRect NSIntegralRect(NSRect ARECT)'
|
||||
|
||||
*[10] Compute a Third Rectangle from Two Rectangles*
|
||||
`NSRect NSUnionRect(NSRect ARECT, NSRect BRECT)'
|
||||
`NSRect NSIntersectionRect(NSRect ARECT, NSRect BRECT)'
|
||||
|
||||
*[10] Test Geometric Relationships*
|
||||
`BOOL NSEqualRects(NSRect ARECT, NSRect BRECT)'
|
||||
`BOOL NSEqualSizes(NSSize ASIZE, NSSize BSIZE)'
|
||||
`BOOL NSEqualPoints(NSPoint APOINT, NSPoint BPOINT)'
|
||||
`BOOL NSIsEmptyRect(NSRect ARECT)'
|
||||
`BOOL NSMouseInRect(NSPoint APOINT, NSRect ARECT, BOOL FLIPPED)'
|
||||
`BOOL NSPointInRect(NSPoint APOINT, NSRect ARECT)'
|
||||
`BOOL NSContainsRect(NSRect ARECT, NSRect BRECT)'
|
||||
|
||||
*[10] Get a String Representation*
|
||||
`NSString *NSStringFromPoint(NSPoint APOINT)'
|
||||
`NSString *NSStringFromRect(NSRect ARECT)'
|
||||
`NSString *NSStringFromSize(NSSize ASIZE)'
|
||||
|
||||
Range Functions
|
||||
---------------
|
||||
|
||||
*[9] Query a Range*
|
||||
`BOOL NSEqualRanges(NSRange RANGE1, NSRange RANGE2)'
|
||||
`unsigned NSMaxRange(NSRange RANGE)'
|
||||
`BOOL NSLocationInRange(unsigned LOCATION, NSRange RANGE)'
|
||||
|
||||
*[9] Compute a Range from Two Other Ranges*
|
||||
`NSRange NSUnionRange(NSRange RANGE1, NSRange RANGE2)'
|
||||
`NSRange NSIntersectionRange(NSRange RANGE1, NSRange RANGE2)'
|
||||
|
||||
*[9] Get a String Representation*
|
||||
`NSString *NSStringFromRange(NSRange RANGE)'
|
||||
|
||||
Hash Table Functions
|
||||
--------------------
|
||||
|
||||
*[8]*
|
||||
|
||||
Create a Table
|
||||
`NSHashTable * NSCreateHashTable(NSHashTableCallBacks CALLBACKS, unsigned CAPACITY)'
|
||||
`NSHashTable * NSCreateHashTableWithZone(NSHashTableCallBacks CALLBACKS, unsigned CAPACITY, NSZone * ZONE)'
|
||||
`NSHashTable * NSCopyHashTableWithZone(NSHashTable * TABLE, NSZone * ZONE)'
|
||||
|
||||
Free a Table
|
||||
`void NSFreeHashTable(NSHashTable * TABLE)'
|
||||
`void NSResetHashTable(NSHashTable * TABLE)'
|
||||
|
||||
Compare Two Tables
|
||||
`BOOL NSCompareHashTables(NSHashTable * TABLE1, NSHashTable * TABLE2)'
|
||||
|
||||
Get the Number of Items
|
||||
`unsigned NSCountHashTable(NSHashTable * TABLE)'
|
||||
Returns the number of elements in TABLE.
|
||||
|
||||
Retrieve Items
|
||||
`void * NSHashGet(NSHashTable * TABLE, const void * POINTER)'
|
||||
`NSArray * NSAllHashTableObjects(NSHashTable * TABLE)'
|
||||
`NSHashEnumerator NSEnumerateHashTable(NSHashTable * TABLE)'
|
||||
`void * NSNextHashEnumeratorItem(NSHashEnumerator * ENUMERATOR)'
|
||||
|
||||
Add or Remove an Item
|
||||
`void NSHashInsert(NSHashTable * TABLE, const void * POINTER)'
|
||||
`void NSHashInsertKnownAbsent(NSHashTable * TABLE, const void * POINTER)'
|
||||
`void * NSHashInsertIfAbsent(NSHashTable * TABLE, const void * POINTER)'
|
||||
`void NSHashRemove(NSHashTable * TABLE, const void * POINTER)'
|
||||
|
||||
Get a String Representation
|
||||
`NSString * NSStringFromHashTable(NSHashTable * TABLE)'
|
||||
|
||||
Map Table Functions
|
||||
-------------------
|
||||
|
||||
*[8]*
|
||||
|
||||
Create a Table
|
||||
`NSMapTable * NSCreateMapTable(NSMapTableKeyCallBacks KEYCALLBACKS, NSMapTableValueCallBacks VALUECALLBACKS, unsigned CAPACITY)'
|
||||
`NSMapTable * NSCreateMapTableWithZone(NSMapTableKeyCallBacks KEYCALLBACKS, NSMapTableValueCallBacks VALUECALLBACKS, unsigned CAPACITY,'
|
||||
`NSMapTable * NSCopyMapTableWithZone(NSMapTable * TABLE, NSZone * ZONE)'
|
||||
|
||||
Free a Table
|
||||
`void NSFreeMapTable(NSMapTable * TABLE)'
|
||||
`void NSResetMapTable(NSMapTable * TABLE)'
|
||||
|
||||
Compare Two Tables:
|
||||
`BOOL NSCompareMapTables(NSMapTable * TABLE1, NSMapTable * TABLE2)'
|
||||
|
||||
Get the Number of Items
|
||||
`unsigned NSCountMapTable(NSMapTable * TABLE)'
|
||||
|
||||
Retrieve Items
|
||||
`BOOL NSMapMember(NSMapTable * TABLE, const void * KEY, void ** ORIGINALKEY, void ** VALUE)'
|
||||
`void * NSMapGet(NSMapTable * TABLE,'
|
||||
`NSMapEnumerator NSEnumerateMapTable(NSMapTable * TABLE)'
|
||||
`BOOL NSNextMapEnumeratorPair(NSMapEnumerator * ENUMERATOR, void ** KEY, void ** VALUE)'
|
||||
`NSArray * NSAllMapTableKeys(NSMapTable * TABLE)'
|
||||
`NSArray * NSAllMapTableValues(NSMapTable * TABLE)'
|
||||
|
||||
Add or Remove an Item
|
||||
`void NSMapInsert(NSMapTable * TABLE, const void * KEY, const void * VALUE)'
|
||||
`void * NSMapInsertIfAbsent(NSMapTable * TABLE, const void * KEY, const void * VALUE)'
|
||||
`void NSMapInsertKnownAbsent(NSMapTable * TABLE, const void * KEY, const void * VALUE)'
|
||||
`void NSMapRemove(NSMapTable * TABLE,'
|
||||
`NSString *NSStringFromMapTable(NSMapTable *TABLE)'
|
||||
|
||||
Miscellaneous Functions
|
||||
-----------------------
|
||||
|
||||
*[7] Get Information about a User*
|
||||
`NSString *NSUserName(void)'
|
||||
`NSString *NSHomeDirectory(void)'
|
||||
`NSString *NSHomeDirectoryForUser(NSString *USERNAME)'
|
||||
|
||||
*[9] Log an Error Message*
|
||||
`void NSLog(NSString *format,...'
|
||||
`void NSLogv(NSString * FORMAT, va_list ARGS)'
|
||||
|
||||
*[8] Get Localized Versions of Strings*
|
||||
`NSString * NSLocalizedString(NSString * KEY, NSString * COMMENT)'
|
||||
`NSString * NSLocalizedStringFromTable(NSString * KEY, NSString * TABLENAME, NSString * COMMENT)'
|
||||
`NSString * NSLocalizedStringFromTableInBundle(NSString * KEY, NSString * TABLENAME, NSBundle * ABUNDLE, NSString * COMMENT)'
|
||||
|
||||
*[9] Convert to and from a String*
|
||||
`Class NSClassFromString(NSString *ACLASSNAME)'
|
||||
`SEL NSSelectorFromString(NSString *ASELECTORNAME)'
|
||||
`NSString *NSStringFromClass(Class ACLASS)'
|
||||
`NSString *NSStringFromSelector(SEL ASELECTOR)'
|
||||
|
||||
*[3] Compose a Message To Be Sent Later to an Object*
|
||||
`NSInvocation *NS_INVOCATION(Class ACLASS, INSTANCEMESSAGE)'
|
||||
`NSInvocation *NS_MESSAGE(id ANOBJECT, INSTANCEMESSAGE)'
|
||||
|
|
@ -201,6 +201,9 @@ AUTHORS: GNUmakefile
|
|||
$(DIST_FILES) >>AUTHORS; \
|
||||
done
|
||||
|
||||
regenerate: $(DIST_FILES)
|
||||
mv AUTHORS ..
|
||||
|
||||
copy-dist: $(DIST_FILES)
|
||||
mkdir ../snap/src
|
||||
mkdir ../snap/src/include
|
||||
|
|
|
@ -1,167 +0,0 @@
|
|||
s/@configure_input@/ Generated from Makefile.in by configure.bat/
|
||||
s/@srcdir@/./
|
||||
s/@prefix@/$(MB_DEV)/
|
||||
s/@exec_prefix@/$(prefix)/
|
||||
s/libdir = $(exec_prefix)\/lib/libdir = $(exec_prefix)\\$(MB_LIB)/
|
||||
s/includedir = $(prefix)\/include/includedir = $(prefix)\\$(MB_H)\\$(MB_OS)/
|
||||
s/CC = @CC@ -pipe/CC = gcc -fgnu-runtime/
|
||||
s/@RANLIB@/touch/
|
||||
s/@INSTALL@/cp/
|
||||
s/@INSTALL_PROGRAM@/$(INSTALL)/
|
||||
s/@INSTALL_DATA@/$(INSTALL)/
|
||||
s/AR = ar/AR = lib/
|
||||
s/ARFLAGS = rc/ARFLAGS = /
|
||||
s/AROUT =/AROUT = -out:/
|
||||
s/@LN_S@/cp/
|
||||
s/@SHARED_LIBRARY@/libgnustep-base.dll/
|
||||
s/CFLAGS = -g -O -Wall -Wno-implicit/CFLAGS = -O -Wall -Wno-implicit/
|
||||
s/LEXFLAGS =/LEXFLAGS = -L/
|
||||
s/EXEEXT =/EXEEXT = .exe/
|
||||
s/OEXT = .o/OEXT = .obj/
|
||||
s/LIBEXT = .a/LIBEXT = .lib/
|
||||
s/@DEFS@/-D__MS_WIN32__\
|
||||
\
|
||||
##################################################################\
|
||||
#\
|
||||
# NT specifics\
|
||||
#\
|
||||
WIN32_GCC_INCLUDE = \
|
||||
INIT_FILE = gnustep_base_init_runtime\
|
||||
INIT_FILE_OBJ = $(INIT_FILE)$(OEXT)/
|
||||
s/@DYNAMIC_LINKER@/null/
|
||||
s/@NEXT_INCLUDES@//
|
||||
s/@HEADERS_INSTALL@/$(GNU_HEADERS) $(NEXTSTEP_HEADERS) $(GNUSTEP_HEADERS)/
|
||||
s/@OBJS_INSTALL@/$(GNU_OBJS) $(NEXTSTEP_OBJS) $(GNUSTEP_OBJS)/
|
||||
s/@LIBOBJECTS_SO@//
|
||||
/lex.pl.m: proplist.l proplist.tab.h/,/proplist.l > $@/c\
|
||||
lex.pl.m: proplist.l proplist.tab.h\
|
||||
touch lex.pl.m
|
||||
/lex.sf.m: stringsfile.l stringsfile.tab.h/,/stringsfile.l > $@/c\
|
||||
lex.sf.m: stringsfile.l stringsfile.tab.h\
|
||||
touch lex.sf.m
|
||||
/lib$(LIBRARY_NAME)$(LIBEXT):/,/$(RANLIB) lib$(LIBRARY_NAME)$(LIBEXT)/c\
|
||||
lib$(LIBRARY_NAME)$(LIBEXT): $(HEADERS_INSTALL) $(OBJS_INSTALL) $(INIT_FILE_OBJ)\
|
||||
$(AR) $(ARFLAGS) $(AROUT)lib1$(LIBEXT) $(GNU_OBJS)\
|
||||
$(AR) $(ARFLAGS) $(AROUT)lib2$(LIBEXT) $(NEXTSTEP_OBJS) $(INIT_FILE_OBJ)\
|
||||
$(AR) $(ARFLAGS) $(AROUT)lib3$(LIBEXT) $(GNUSTEP_OBJS)\
|
||||
$(AR) $(ARFLAGS) $(AROUT)lib$(LIBRARY_NAME)$(LIBEXT) \\\
|
||||
lib1$(LIBEXT) lib2$(LIBEXT) lib3$(LIBEXT)\
|
||||
rm lib1$(LIBEXT) lib2$(LIBEXT) lib3$(LIBEXT)
|
||||
/NSVALUE_MFILES =/c\
|
||||
NSVALUE_CLUSTER = 0 1 2 3 4 \
|
||||
NSVALUE_OFILES = \\\
|
||||
NSValue0$(OEXT) NSValue1$(OEXT) NSValue2$(OEXT) NSValue3$(OEXT) \\\
|
||||
NSValue4$(OEXT) \
|
||||
NSVALUE_MFILES = \\
|
||||
/NSNUMBER_MFILES =/c\
|
||||
NSNUMBER_CLUSTER = 0 1 2 3 4 5 6 7 8 9 10 11 12 \
|
||||
NSNUMBER_OFILES = \\\
|
||||
NSNumber0$(OEXT) NSNumber1$(OEXT) NSNumber2$(OEXT) \\\
|
||||
NSNumber3$(OEXT) NSNumber4$(OEXT) NSNumber5$(OEXT) \\\
|
||||
NSNumber6$(OEXT) NSNumber7$(OEXT) NSNumber8$(OEXT) \\\
|
||||
NSNumber9$(OEXT) NSNumber10$(OEXT) NSNumber11$(OEXT) \\\
|
||||
NSNumber12$(OEXT) \
|
||||
NSNUMBER_MFILES = \\
|
||||
/$(NSVALUE_MFILES) : NSCTemplateValue.m/,/cat $(srcdir)\/NSConcreteNumber/c\
|
||||
# Compilation of class clusters \
|
||||
$(NSVALUE_OFILES) : NSCTemplateValue.m \
|
||||
for %i in ( ${NSVALUE_CLUSTER} ) do \\\
|
||||
( cp NSCTemplateValue.m NSCTemplateValue%i.m & \\\
|
||||
$(CC) -c $(ALL_CPPFLAGS) $(DEFS) $(ALL_OBJCFLAGS) \\\
|
||||
-DTYPE_ORDER=%i NSCTemplateValue%i.m \\\
|
||||
-o NSValue%i$(OEXT) & \\\
|
||||
rm -f NSCTemplateValue%i.m ) \
|
||||
\
|
||||
$(NSNUMBER_OFILES) : NSConcreteNumber.m \
|
||||
for %i in ( ${NSNUMBER_CLUSTER} ) do \\\
|
||||
( cp NSConcreteNumber.m NSConcreteNumber%i.m & \\\
|
||||
$(CC) -c $(ALL_CPPFLAGS) $(DEFS) $(ALL_OBJCFLAGS) \\\
|
||||
-DTYPE_ORDER=%i -c NSConcreteNumber%i.m \\\
|
||||
-o NSNumber%i$(OEXT) & \\\
|
||||
rm -f NSConcreteNumber%i.m )
|
||||
/GNUSTEP_OBJS =/,/$(NSNUMBER_MFILES:.m=/c\
|
||||
GNUSTEP_OBJS = \\\
|
||||
$(GNUSTEP_MFILES:.m=$(OEXT)) \\\
|
||||
$(GNUSTEP_CFILES:.c=$(OEXT)) \\\
|
||||
$(NSVALUE_OFILES) $(NSNUMBER_OFILES)
|
||||
/installdirs:/,/$(includedir)\/Foundation/c\
|
||||
installdirs:\
|
||||
IF NOT EXIST $(includedir)\\gnustep mkdir $(includedir)\\gnustep\
|
||||
IF NOT EXIST $(includedir)\\gnustep\\base mkdir $(includedir)\\gnustep\\base\
|
||||
IF NOT EXIST $(includedir)\\objc mkdir $(includedir)\\objc
|
||||
/install: installdirs all/,/cd $(includedir)\/objc; rm -f README/c\
|
||||
$(INIT_FILE_OBJ): $(OBJS_INSTALL)\
|
||||
nm $(GNU_OBJS) | grep " __GLOBAL_" > tmpinit.c\
|
||||
nm $(GNUSTEP_OBJS) | grep " __GLOBAL_" >> tmpinit.c\
|
||||
nm $(NEXTSTEP_OBJS) | grep " __GLOBAL_" >> tmpinit.c\
|
||||
collect tmpinit.c $(INIT_FILE)\
|
||||
$(CC) -c $(ALL_CPPFLAGS) $(DEFS) $(ALL_OBJCFLAGS) $(INIT_FILE).c\
|
||||
rm tmpinit.c\
|
||||
\
|
||||
uninstall:\
|
||||
rm -f $(libdir)\/lib$(LIBRARY_NAME)$(LIBEXT)\
|
||||
rm -f $(libdir)\/lib$(LIBRARY_NAME)-dll$(LIBEXT)\
|
||||
rm -f $(prefix)\/$(MB_BIN)\/lib$(LIBRARY_NAME).dll\
|
||||
rm -rf $(includedir)\/gnustep/base\
|
||||
rm -rf $(includedir)\/Foundation\
|
||||
for %i in ( ${NEXTSTEP_HEADERS} ) do \\\
|
||||
rm -f $(includedir)/%i\
|
||||
\
|
||||
lib$(LIBRARY_NAME)-dll$(LIBEXT): $(HEADERS_INSTALL) $(OBJS_INSTALL) $(INIT_LIB_OBJ) lib$(LIBRARY_NAME).def\
|
||||
lib -machine:i386 -def:lib$(LIBRARY_NAME).def \\\
|
||||
lib$(LIBRARY_NAME)$(LIBEXT) \\\
|
||||
-out:lib$(LIBRARY_NAME)-dll$(LIBEXT)\
|
||||
\
|
||||
lib$(LIBRARY_NAME).dll: $(HEADERS_INSTALL) $(OBJS_INSTALL) $(INIT_LIB_OBJ) lib$(LIBRARY_NAME)-dll$(LIBEXT) win32-entry$(OEXT)\
|
||||
link -out:lib$(LIBRARY_NAME).dll $(DLLFLAGS) \\\
|
||||
lib$(LIBRARY_NAME)-dll.exp \\\
|
||||
lib$(LIBRARY_NAME)$(LIBEXT) \\\
|
||||
win32-entry$(OEXT) libgcc.lib libobjc-dll.lib \\\
|
||||
libcmt.lib oldnames.lib user32.lib kernel32.lib wsock32.lib \\\
|
||||
advapi32.lib\
|
||||
\
|
||||
lib$(LIBRARY_NAME).def: lib$(LIBRARY_NAME)$(LIBEXT)\
|
||||
nm libgnustep-base.lib | grep "g e" | grep ".text" | gawk "{print $$6}" | gawk "{print substr($$1,2,length($$1)-1)}" > libgnustep-base.lst\
|
||||
cat win32-def.top libgnustep-base.lst > libgnustep-base.def\
|
||||
rm libgnustep-base.lst\
|
||||
\
|
||||
win32-entry$(OEXT): win32-entry.c\
|
||||
$(CC) -c $(ALL_CPPFLAGS) $(DEFS) $(ALL_CFLAGS) -o $*$(OEXT) $<\
|
||||
\
|
||||
install: installdirs all\
|
||||
$(INSTALL_DATA) lib$(LIBRARY_NAME)$(LIBEXT) $(libdir)\
|
||||
$(INSTALL_DATA) lib$(LIBRARY_NAME)-dll$(LIBEXT) $(libdir)\
|
||||
$(INSTALL_DATA) lib$(LIBRARY_NAME).dll $(prefix)/$(MB_BIN)\
|
||||
$(INSTALL_DATA) $(srcdir)/gnustep/base/*.h $(includedir)/gnustep/base\
|
||||
$(INSTALL_DATA) $(srcdir)/objc/*.h $(includedir)/objc\
|
||||
$(INSTALL_DATA) include/config.h $(includedir)/gnustep/base/config.h\
|
||||
IF EXIST $(includedir)\\Foundation rm -rf $(includedir)/Foundation\
|
||||
cp -r $(includedir)/gnustep/base $(includedir)/Foundation
|
||||
/for file in $(NEXTSTEP_HEADERS); do/,/done/c\
|
||||
for %i in ( ${NEXTSTEP_HEADERS} ) do \\\
|
||||
rm -f $(includedir)/%i
|
||||
/gnustep\/base:/,/ln -s $(srcdir)\/include Foundation/c\
|
||||
gnustep/base: include\/preface.h FORCE\
|
||||
-rm -rf gnustep\
|
||||
-mkdir gnustep\
|
||||
-mkdir gnustep\\base\
|
||||
-cp -rf include/* gnustep/base\
|
||||
# This deletion is necessary, because the CVS repository contains\
|
||||
# an emtpy `Foundation' directory that used to hold the OpenStep headers.\
|
||||
Foundation: FORCE\
|
||||
-rm -rf Foundation\
|
||||
-mkdir Foundation\
|
||||
-cp -rf include/* Foundation
|
||||
/clean: mostlyclean/,/rm -f dynamic-load.h/c\
|
||||
clean: mostlyclean\
|
||||
rm -f lib$(LIBRARY_NAME)$(LIBEXT) lib$(LIBRARY_NAME).dll *${OEXT}\
|
||||
rm -f $(NSVALUE_MFILES) $(NSNUMBER_MFILES)\
|
||||
rm -f gnustep_base_init_runtime.*\
|
||||
rm -f libgnustep-base-dll.*\
|
||||
rm -f libgnustep-base.def\
|
||||
distclean: clean\
|
||||
rm -f Makefile\
|
||||
rm -f 0 1 2 3 4 5 6 7 8 9 10 11 12\
|
||||
rm -rf gnustep\
|
||||
rm -rf Foundation\
|
||||
rm -f dynamic-load.h
|
|
@ -38,7 +38,6 @@
|
|||
#include <sys/param.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#endif /* WIN32 */
|
||||
|
||||
static NSLock *_hostCacheLock = nil;
|
||||
|
|
|
@ -548,7 +548,7 @@ handle_printf_atsign (FILE *stream,
|
|||
unsigned int len = [d length];
|
||||
|
||||
if (d == nil) return nil;
|
||||
if(((test[0]==0xFF) && (test[1]==0xFE)) || ((test[1]==0xFF) && (test[0]==0xFE)))
|
||||
if(test && (((test[0]==0xFF) && (test[1]==0xFE)) || ((test[1]==0xFF) && (test[0]==0xFE))))
|
||||
enc = NSUnicodeStringEncoding;
|
||||
else
|
||||
enc = [NSString defaultCStringEncoding];
|
||||
|
|
|
@ -116,6 +116,7 @@ static BOOL entered_multi_threaded_state;
|
|||
start-up, and for thread's created by calling
|
||||
objc_thread_detach() directly.) */
|
||||
t = [[NSThread alloc] init];
|
||||
objc_thread_set_data (t);
|
||||
return t;
|
||||
}
|
||||
|
||||
|
|
|
@ -38,6 +38,7 @@
|
|||
#include <errno.h>
|
||||
|
||||
#include <Foundation/NSUserDefaults.h>
|
||||
#include <Foundation/NSFileManager.h>
|
||||
#include <Foundation/NSPathUtilities.h>
|
||||
#include <Foundation/NSDictionary.h>
|
||||
#include <Foundation/NSArray.h>
|
||||
|
@ -505,11 +506,20 @@ static NSMutableString *processName = nil;
|
|||
return NO;
|
||||
|
||||
// Read the persistent data from the stored database
|
||||
newDict = [[NSMutableDictionary allocWithZone:[self zone]]
|
||||
initWithContentsOfFile:defaultsDatabase];
|
||||
if (!newDict)
|
||||
if ([[NSFileManager defaultManager] fileExistsAtPath: defaultsDatabase])
|
||||
newDict = [[NSMutableDictionary allocWithZone:[self zone]]
|
||||
initWithCapacity:1];
|
||||
initWithContentsOfFile:defaultsDatabase];
|
||||
else
|
||||
{
|
||||
NSLog(@"Creating defaults database file %@", defaultsDatabase);
|
||||
[[NSFileManager defaultManager] createFileAtPath: defaultsDatabase
|
||||
contents: nil
|
||||
attributes: nil];
|
||||
}
|
||||
|
||||
if (!newDict)
|
||||
newDict = [[NSMutableDictionary allocWithZone:[self zone]]
|
||||
initWithCapacity:1];
|
||||
|
||||
if (changedDomains)
|
||||
{ // Synchronize both dictionaries
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
#ifndef __WIN32__
|
||||
#include <unistd.h> /* for gethostname() */
|
||||
#include <sys/param.h> /* for MAXHOSTNAMELEN */
|
||||
#include <arpa/inet.h> /* for inet_ntoa() */
|
||||
#include <netinet/in.h> /* for inet_ntoa() */
|
||||
#include <fcntl.h>
|
||||
#include <sys/socket.h>
|
||||
#include <sys/file.h>
|
||||
|
|
|
@ -41,7 +41,6 @@
|
|||
#include <sys/param.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
#include <arpa/inet.h>
|
||||
#endif /* WIN32 */
|
||||
|
||||
#include <sys/file.h>
|
||||
|
|
215
TODO
Normal file
215
TODO
Normal file
|
@ -0,0 +1,215 @@
|
|||
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'
|
||||
|
|
@ -71,6 +71,7 @@ after-distclean::
|
|||
|
||||
# Things to do after checking
|
||||
# after-check::
|
||||
regenerate:
|
||||
|
||||
copy-dist: $(DIST_FILES)
|
||||
mkdir ../snap/checks
|
||||
|
|
|
@ -45,6 +45,8 @@ after-install::
|
|||
# Things to do after checking
|
||||
# after-check::
|
||||
|
||||
regenerate:
|
||||
|
||||
copy-dist: $(DIST_FILES)
|
||||
mkdir ../snap/Tools
|
||||
for f in $(DIST_FILES); do \
|
||||
|
|
15
make-dist
15
make-dist
|
@ -1,15 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
# The directory in which to find the last snapshot
|
||||
dir=${HOME}/gnu/releases
|
||||
|
||||
# The name of this module
|
||||
module=gstep-base
|
||||
|
||||
. Version
|
||||
|
||||
cvs -Q rtag -F release-`echo ${VERSION} | tr . -` $module
|
||||
|
||||
make dist
|
||||
|
||||
mv -f ${module}-${VERSION}.tar.gz $dir
|
|
@ -1,59 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# The directory in which to find the last snapshot; must be absolute path
|
||||
dir=/home/mccallum/gnu/releases
|
||||
|
||||
# The email addresses of people to receive mail about the new diff
|
||||
diff_recipients=gnustep-dev@prep.ai.mit.edu
|
||||
|
||||
# The name of this module
|
||||
module=gstep-base
|
||||
# A regular expression for the version string "x.y.z"
|
||||
yrptn='[0-9][0-9][0-9][0-9][0-9][0-9]'
|
||||
# The pattern for the file containing the diff
|
||||
ptn="${module}-${yrptn}"
|
||||
dptn="${ptn}-${yrptn}.diff"
|
||||
|
||||
# Get the current version
|
||||
. Version
|
||||
|
||||
# Find date of the last snapshot
|
||||
lastdist=${VERSION}
|
||||
|
||||
# This depends on the user setting this variable from the command line
|
||||
if [ -z $OLD ]; then
|
||||
echo You must set the shell variable OLD to the old version number.
|
||||
exit -1
|
||||
fi
|
||||
secondlastdist=${OLD}
|
||||
|
||||
echo Making diff between $secondlastdist and $lastdist
|
||||
|
||||
# The name of the diff file
|
||||
diff="${module}-${secondlastdist}-${lastdist}.diff"
|
||||
|
||||
if [ -f $dir/$diff ]; then
|
||||
echo $dir/$diff already exists! Exiting.
|
||||
exit -1
|
||||
fi
|
||||
echo Making $diff
|
||||
|
||||
# Untar the old dist
|
||||
(cd /tmp ; tar -zvxf $dir/${module}-${secondlastdist}.tar.gz)
|
||||
# Untar the new dist
|
||||
(cd /tmp ; tar -zvxf $dir/${module}-${lastdist}.tar.gz)
|
||||
# Make the diff
|
||||
echo Diffing...
|
||||
rm -f /tmp/$diff
|
||||
(cd /tmp; \
|
||||
diff -u -N -r ${module}-${secondlastdist} ${module}-${lastdist} > $diff)
|
||||
# Remove the dist dirs
|
||||
rm -rf /tmp/${module}-${secondlastdist} /tmp/${module}-${lastdist}
|
||||
|
||||
if [ -s /tmp/$diff ]; then
|
||||
# Mail a message saying the new diff is available. (Commented out for now)
|
||||
# mail -s $diff < $diff $diff_recipients
|
||||
gzip -9 /tmp/$diff && mv -f /tmp/$diff.gz $dir
|
||||
else
|
||||
rm -f /tmp/$diff
|
||||
fi
|
|
@ -1,63 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# The directory in which to find the last snapshot; must be absolute path
|
||||
dir=/home/mccallum/gnu/releases
|
||||
|
||||
# The email addresses of people to receive mail about the new diff
|
||||
diff_recipients=gnustep-dev@prep.ai.mit.edu
|
||||
|
||||
# The name of this module
|
||||
module=gstep-base
|
||||
# A regular expression for the six-digit date string "yymmdd"
|
||||
yrptn='[0-9][0-9][0-9][0-9][0-9][0-9]'
|
||||
# The pattern for the file containing the diff
|
||||
ptn="${module}-${yrptn}"
|
||||
dptn="${ptn}-${yrptn}.diff"
|
||||
|
||||
# Get the current date
|
||||
date=`date +%y%m%d`
|
||||
|
||||
# Find date of the last snapshot
|
||||
lastsnap=`cd $dir; ls $ptn.tar.gz 2>/dev/null |
|
||||
sed -e "s/^.*\\(${yrptn}\\)[.a-z]*$/\\1/" |
|
||||
sort -nr | head -1`
|
||||
|
||||
# Find the date of the second-to-last snapshot
|
||||
secondlastsnap=`cd $dir; ls $ptn.tar.gz 2>/dev/null |
|
||||
sed -e "s/^.*\\(${yrptn}\\)[.a-z]*$/\\1/" |
|
||||
sort -nr | head -2 | tail -1`
|
||||
|
||||
# Find the date of the last diff
|
||||
lastdiff=`cd $dir; ls $dptn $dptn.gz 2>/dev/null |
|
||||
sed -e "s/^.*\\(${yrptn}\\)[.a-z]*$/\\1/" |
|
||||
sort -nr | head -1`
|
||||
|
||||
echo Making diff between $secondlastsnap and $lastsnap
|
||||
|
||||
# The name of the diff file
|
||||
diff="${module}-${secondlastsnap}-${lastsnap}.diff"
|
||||
|
||||
if [ -f $dir/$diff ]; then
|
||||
echo $dir/$diff already exists! Exiting.
|
||||
exit -1
|
||||
fi
|
||||
echo Making $diff
|
||||
|
||||
# Untar the old snapshot
|
||||
(cd /tmp ; tar -zvxf $dir/${module}-${secondlastsnap}.tar.gz)
|
||||
# Untar the new snapshot
|
||||
(cd /tmp ; tar -zvxf $dir/${module}-${lastsnap}.tar.gz)
|
||||
# Make the diff
|
||||
echo Diffing...
|
||||
rm -f /tmp/$diff
|
||||
(cd /tmp; diff -u -r ${module}-${secondlastsnap} ${module}-${lastsnap} > $diff)
|
||||
# Remove the snapshot dirs
|
||||
rm -rf /tmp/${module}-${secondlastsnap} /tmp/${module}-${lastsnap}
|
||||
|
||||
if [ -s /tmp/$diff ]; then
|
||||
# Mail a message saying the new diff is available. (Commented out for now)
|
||||
# mail -s $diff < $diff $diff_recipients
|
||||
gzip -9 /tmp/$diff && mv -f /tmp/$diff.gz $dir
|
||||
else
|
||||
rm -f /tmp/$diff
|
||||
fi
|
|
@ -1,26 +0,0 @@
|
|||
#!/bin/sh -e
|
||||
|
||||
# The directory in which to find the last snapshot
|
||||
dir=/home/mccallum/gnu/releases
|
||||
|
||||
# The name of this module
|
||||
module=gstep-base
|
||||
|
||||
date=`date +%y%m%d`
|
||||
snap=${module}-${date}
|
||||
|
||||
cvs -Q rtag -F snapshot-$date $module
|
||||
|
||||
rm -rf $snap
|
||||
## Checkout the $module into a directory named $snap
|
||||
#cvs checkout -d $snap -r snapshot-$date $module
|
||||
#tar -f - -co $snap | gzip -9v -c > $snap.tar.gz
|
||||
|
||||
make snapshot
|
||||
|
||||
#find $snap \( -name CVS -prune \) -o \( -type f -print \) |
|
||||
#xargs md5sum | gzip -9v -c > $snap.md5sum.gz
|
||||
|
||||
rm -rf $snap &
|
||||
|
||||
mv -f $snap.tar.gz $dir
|
40
upload-dist
40
upload-dist
|
@ -1,40 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
# Copy a dist file to the ftp server
|
||||
# if shell variable OLD is set to a version string, also copy a diff file.
|
||||
|
||||
SOURCEDIR=$HOME/gnu/releases
|
||||
|
||||
DESTHOST=alpha.gnu.ai.mit.edu
|
||||
DESTDIR='~ftp/gnu/gnustep'
|
||||
|
||||
# Load version variables
|
||||
. Version
|
||||
|
||||
DISTFILE=gstep-base-${VERSION}.tar.gz
|
||||
|
||||
echo Uploading $DISTFILE to ${DESTHOST}:${DESTDIR}
|
||||
cat ${SOURCEDIR}/${DISTFILE} \
|
||||
| rsh $DESTHOST \
|
||||
"(cd $DESTDIR; \
|
||||
cat >| ${DISTFILE})"
|
||||
|
||||
|
||||
if [ $OLD ] ; then
|
||||
# Also upload the diff file
|
||||
|
||||
DIFFFILE=gstep-base-${OLD}-${VERSION}.diff.gz
|
||||
|
||||
if [ ! -e ${SOURCEDIR}/${DIFFFILE} ] ; then
|
||||
echo File ${SOURCEDIR}/${DIFFFILE} not found.
|
||||
exit -1
|
||||
fi
|
||||
|
||||
echo Uploading ${DIFFFILE} to ${DESTHOST}:${DESTDIR}
|
||||
|
||||
cat ${SOURCEDIR}/${DIFFFILE} \
|
||||
| rsh $DESTHOST \
|
||||
"(cd $DESTDIR; \
|
||||
cat >| ${DIFFFILE})"
|
||||
|
||||
fi
|
Loading…
Reference in a new issue