mirror of
https://github.com/gnustep/libs-base.git
synced 2025-06-04 10:30:47 +00:00
Tidyups for removal of bloat
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@6693 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
a37e6d4396
commit
57f928c635
21 changed files with 55 additions and 415 deletions
23
ChangeLog
23
ChangeLog
|
@ -1,3 +1,26 @@
|
||||||
|
2000-06-16 Richard Frith-Macdonald <rfm@gnu.org>
|
||||||
|
|
||||||
|
* Headers/gnustep/base/NSGArchiver.h: removed obsolete file.
|
||||||
|
* Source/NSGArchiver.m: removed obsolete file.
|
||||||
|
* configure.in: Check for existence of NSArray.m to find source
|
||||||
|
* Headers/gnustep/base/NSDictionary.h: Remove unused headers.
|
||||||
|
* Headers/gnustep/base/Port.h: ditto
|
||||||
|
* Headers/gnustep/base/NSConnection.h: ditto
|
||||||
|
* Headers/gnustep/base/TcpPort.h: ditto
|
||||||
|
* Headers/gnustep/base/NSGArray.h: ditto
|
||||||
|
* Headers/gnustep/base/NSSet.h: ditto
|
||||||
|
* Headers/gnustep/base/NSGSet.h: ditto
|
||||||
|
* Headers/gnustep/base/NSRange.h: ditto
|
||||||
|
* Source/Coder.m: Removed dependencies on some old classes
|
||||||
|
* Source/Decoder.m: ditto
|
||||||
|
* Source/Port.m: ditto
|
||||||
|
* Source/TcpPort.m: ditto
|
||||||
|
* Source/UdpPort.m: ditto
|
||||||
|
* Source/NSGCString.m: ditto
|
||||||
|
* Source/NSGString.m: ditto
|
||||||
|
* Source/NSObject.m: ditto
|
||||||
|
* Source/NSString.m: ditto
|
||||||
|
|
||||||
2000-06-15 Adam Fedor <fedor@gnu.org>
|
2000-06-15 Adam Fedor <fedor@gnu.org>
|
||||||
|
|
||||||
* Headers/gnustep/base/NSObject.h: Add base/preface include
|
* Headers/gnustep/base/NSObject.h: Add base/preface include
|
||||||
|
|
|
@ -195,7 +195,7 @@ GS_EXPORT NSString *NSConnectionProxyCount; /* Objects received */
|
||||||
/* When you get an invalidation notification from a connection, use
|
/* When you get an invalidation notification from a connection, use
|
||||||
this method in order to find out if any of the proxy objects you're
|
this method in order to find out if any of the proxy objects you're
|
||||||
using are going away. */
|
using are going away. */
|
||||||
- (id <Collecting>) proxies;
|
- (id) proxies;
|
||||||
|
|
||||||
|
|
||||||
/* For getting the root object of a connection or port */
|
/* For getting the root object of a connection or port */
|
||||||
|
@ -222,10 +222,9 @@ GS_EXPORT NSString *NSConnectionProxyCount; /* Objects received */
|
||||||
- (void) removeProxy: (NSDistantObject*)aProxy;
|
- (void) removeProxy: (NSDistantObject*)aProxy;
|
||||||
|
|
||||||
// It seems to be a non pure-OPENSTEP definition...
|
// It seems to be a non pure-OPENSTEP definition...
|
||||||
//- (id <Collecting>) localObjects;
|
|
||||||
//
|
//
|
||||||
// new def :
|
// new def :
|
||||||
- (NSArray *)localObjects;
|
- (NSArray*)localObjects;
|
||||||
- (void) addLocalObject: anObj;
|
- (void) addLocalObject: anObj;
|
||||||
- (id) includesLocalObject: anObj;
|
- (id) includesLocalObject: anObj;
|
||||||
- (void) removeLocalObject: anObj;
|
- (void) removeLocalObject: anObj;
|
||||||
|
|
|
@ -95,13 +95,8 @@
|
||||||
|
|
||||||
#ifndef NO_GNUSTEP
|
#ifndef NO_GNUSTEP
|
||||||
|
|
||||||
#include <base/KeyedCollecting.h>
|
|
||||||
#include <Foundation/NSDictionary.h>
|
#include <Foundation/NSDictionary.h>
|
||||||
|
|
||||||
/* Eventually we'll make a Constant version of this protocol.*/
|
|
||||||
@interface NSDictionary (GNU) <KeyedCollecting>
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface NSMutableDictionary (GNU)
|
@interface NSMutableDictionary (GNU)
|
||||||
+ (unsigned) defaultCapacity;
|
+ (unsigned) defaultCapacity;
|
||||||
- (id) initWithType: (const char*)contentEncoding
|
- (id) initWithType: (const char*)contentEncoding
|
||||||
|
|
|
@ -1,42 +0,0 @@
|
||||||
/* Interface to concrete implementation of NSArchiver
|
|
||||||
Copyright (C) 1995, 1996 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
Written by: Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu>
|
|
||||||
Date: April 1995
|
|
||||||
|
|
||||||
This file is part of the GNUstep Base Library.
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Library General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Library General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
|
||||||
License along with this library; if not, write to the Free
|
|
||||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __NSGArchiver_h_GNUSTEP_BASE_INCLUDE
|
|
||||||
#define __NSGArchiver_h_GNUSTEP_BASE_INCLUDE
|
|
||||||
|
|
||||||
#include <Foundation/NSArchiver.h>
|
|
||||||
#include <base/Coding.h>
|
|
||||||
|
|
||||||
@interface NSGArchiver : NSArchiver
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface NSGArchiver (GNU) <Encoding>
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface NSGUnarchiver : NSUnarchiver
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface NSGUnarchiver (GNU) <Decoding>
|
|
||||||
@end
|
|
||||||
|
|
||||||
#endif /* __NSGArchiver_h_GNUSTEP_BASE_INCLUDE */
|
|
|
@ -25,7 +25,6 @@
|
||||||
#define __NSGArray_h_GNUSTEP_BASE_INCLUDE
|
#define __NSGArray_h_GNUSTEP_BASE_INCLUDE
|
||||||
|
|
||||||
#include <Foundation/NSArray.h>
|
#include <Foundation/NSArray.h>
|
||||||
#include <base/Array.h>
|
|
||||||
|
|
||||||
@interface NSGArray : NSArray
|
@interface NSGArray : NSArray
|
||||||
{
|
{
|
||||||
|
|
|
@ -25,8 +25,6 @@
|
||||||
#define __NSGSet_h_GNUSTEP_BASE_INCLUDE
|
#define __NSGSet_h_GNUSTEP_BASE_INCLUDE
|
||||||
|
|
||||||
#include <Foundation/NSSet.h>
|
#include <Foundation/NSSet.h>
|
||||||
#include <base/Set.h>
|
|
||||||
#include <base/Bag.h>
|
|
||||||
|
|
||||||
@interface NSGSet : NSSet
|
@interface NSGSet : NSSet
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -157,6 +157,11 @@ GS_EXPORT NSRange NSRangeFromString(NSString *aString);
|
||||||
[NSException raise: NSRangeException \
|
[NSException raise: NSRangeException \
|
||||||
format: @"in %s, range { %u, %u } extends beyond size (%u)", \
|
format: @"in %s, range { %u, %u } extends beyond size (%u)", \
|
||||||
sel_get_name(_cmd), RANGE.location, RANGE.length, SIZE]
|
sel_get_name(_cmd), RANGE.location, RANGE.length, SIZE]
|
||||||
|
#define CHECK_INDEX_RANGE_ERROR(INDEX, OVER) \
|
||||||
|
if (INDEX >= OVER) \
|
||||||
|
[NSException raise: NSRangeException \
|
||||||
|
format: @"in %s, index %d is out of range", \
|
||||||
|
sel_get_name (_cmd), INDEX]
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif /* __NSRange_h_GNUSTEP_BASE_INCLUDE */
|
#endif /* __NSRange_h_GNUSTEP_BASE_INCLUDE */
|
||||||
|
|
|
@ -129,23 +129,6 @@ id GSUnique(id anObject);
|
||||||
void GSUPurge(unsigned count);
|
void GSUPurge(unsigned count);
|
||||||
id GSUSet(id anObject, unsigned count);
|
id GSUSet(id anObject, unsigned count);
|
||||||
|
|
||||||
#include <base/KeyedCollecting.h>
|
|
||||||
|
|
||||||
/* Eventually we'll make a Constant version of this protocol. */
|
|
||||||
@interface NSSet (GNU) <Collecting>
|
|
||||||
/* These methods will be moved to NSMutableSet as soon as GNU's
|
|
||||||
collection objects are separated by mutability. */
|
|
||||||
+ (unsigned) defaultCapacity;
|
|
||||||
- (id)initWithType: (const char *)contentEncoding
|
|
||||||
capacity: (unsigned)aCapacity;
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface NSMutableSet (GNU)
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface NSCountedSet (GNU) <Collecting>
|
|
||||||
@end
|
|
||||||
|
|
||||||
#endif /* NO_GNUSTEP */
|
#endif /* NO_GNUSTEP */
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -29,7 +29,6 @@
|
||||||
#include <Foundation/NSPort.h>
|
#include <Foundation/NSPort.h>
|
||||||
#include <Foundation/NSDate.h>
|
#include <Foundation/NSDate.h>
|
||||||
#include <Foundation/NSString.h>
|
#include <Foundation/NSString.h>
|
||||||
#include <base/Invocation.h>
|
|
||||||
|
|
||||||
/* xxx Use something like this? */
|
/* xxx Use something like this? */
|
||||||
@protocol PacketSending
|
@protocol PacketSending
|
||||||
|
@ -64,7 +63,7 @@
|
||||||
packet arrives, INVOCATION will be invoked with the new packet
|
packet arrives, INVOCATION will be invoked with the new packet
|
||||||
as an argument. The INVOCATION is responsible for releasing
|
as an argument. The INVOCATION is responsible for releasing
|
||||||
the packet. */
|
the packet. */
|
||||||
- (void) setReceivedPacketInvocation: (id <Invoking>)invocation;
|
- (void) setReceivedPacketInvocation: (id)invocation;
|
||||||
|
|
||||||
/* An alternative to the above way for receiving packets from this port.
|
/* An alternative to the above way for receiving packets from this port.
|
||||||
Get a packet from the net and return it. If no packet is received
|
Get a packet from the net and return it. If no packet is received
|
||||||
|
|
|
@ -48,13 +48,8 @@
|
||||||
|
|
||||||
+ newForReceivingFromPortNumber: (unsigned short)n;
|
+ newForReceivingFromPortNumber: (unsigned short)n;
|
||||||
|
|
||||||
/* Get a packet from the net and return it. If no packet is received
|
|
||||||
within MILLISECONDS, then return nil. The caller is responsible
|
|
||||||
for releasing the packet. */
|
|
||||||
- newPacketReceivedBeforeDate: date;
|
|
||||||
|
|
||||||
- (int) portNumber;
|
- (int) portNumber;
|
||||||
- (id <Collecting>) connectedOutPorts;
|
- (id) connectedOutPorts;
|
||||||
- (unsigned) numberOfConnectedOutPorts;
|
- (unsigned) numberOfConnectedOutPorts;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -28,8 +28,6 @@
|
||||||
#include <base/CoderPrivate.h>
|
#include <base/CoderPrivate.h>
|
||||||
#include <base/MemoryStream.h>
|
#include <base/MemoryStream.h>
|
||||||
#include <base/Coding.h>
|
#include <base/Coding.h>
|
||||||
#include <base/Stack.h>
|
|
||||||
#include <base/Set.h>
|
|
||||||
#include <base/Streaming.h>
|
#include <base/Streaming.h>
|
||||||
#include <base/Stream.h>
|
#include <base/Stream.h>
|
||||||
#include <base/CStreaming.h>
|
#include <base/CStreaming.h>
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
#include <base/CStream.h>
|
#include <base/CStream.h>
|
||||||
#include <base/Stream.h>
|
#include <base/Stream.h>
|
||||||
#include <base/StdioStream.h>
|
#include <base/StdioStream.h>
|
||||||
#include <base/Array.h>
|
#include <Foundation/NSArray.h>
|
||||||
#include <Foundation/NSException.h>
|
#include <Foundation/NSException.h>
|
||||||
|
|
||||||
extern BOOL sel_types_match(const char* t1, const char* t2);
|
extern BOOL sel_types_match(const char* t1, const char* t2);
|
||||||
|
@ -135,15 +135,15 @@ static id dummyObject;
|
||||||
{
|
{
|
||||||
if (!xref_2_object)
|
if (!xref_2_object)
|
||||||
{
|
{
|
||||||
xref_2_object = [Array new];
|
xref_2_object = [NSArray new];
|
||||||
/* Append an object so our xref numbers are in sync with the
|
/* Append an object so our xref numbers are in sync with the
|
||||||
Encoders, which start at 1. */
|
Encoders, which start at 1. */
|
||||||
[xref_2_object appendObject: dummyObject];
|
[xref_2_object addObject: dummyObject];
|
||||||
}
|
}
|
||||||
if (debug_coder)
|
if (debug_coder)
|
||||||
fprintf (stderr, "Decoder registering object xref %u\n",
|
fprintf (stderr, "Decoder registering object xref %u\n",
|
||||||
[xref_2_object count] - 1);
|
[xref_2_object count] - 1);
|
||||||
[xref_2_object appendObject: anObj]; // xxx but this will retain anObj. NO.
|
[xref_2_object addObject: anObj]; // xxx but this will retain anObj. NO.
|
||||||
/* This return value should be the same as the index of anObj
|
/* This return value should be the same as the index of anObj
|
||||||
in xref_2_object. */
|
in xref_2_object. */
|
||||||
return ([xref_2_object count] - 1);
|
return ([xref_2_object count] - 1);
|
||||||
|
@ -169,7 +169,7 @@ static id dummyObject;
|
||||||
- (void) _coderPushRootObjectTable
|
- (void) _coderPushRootObjectTable
|
||||||
{
|
{
|
||||||
if (!xref_2_object_root)
|
if (!xref_2_object_root)
|
||||||
xref_2_object_root = [Array new];
|
xref_2_object_root = [NSArray new];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) _coderPopRootObjectTable
|
- (void) _coderPopRootObjectTable
|
||||||
|
@ -186,12 +186,12 @@ static id dummyObject;
|
||||||
{
|
{
|
||||||
if (!xref_2_object_root)
|
if (!xref_2_object_root)
|
||||||
{
|
{
|
||||||
xref_2_object_root = [Array new];
|
xref_2_object_root = [NSArray new];
|
||||||
/* Append an object so our xref numbers are in sync with the
|
/* Append an object so our xref numbers are in sync with the
|
||||||
Encoders, which start at 1. */
|
Encoders, which start at 1. */
|
||||||
[xref_2_object_root appendObject: dummyObject];
|
[xref_2_object_root addObject: dummyObject];
|
||||||
}
|
}
|
||||||
[xref_2_object_root appendObject: anObj];
|
[xref_2_object_root addObject: anObj];
|
||||||
/* This return value should be the same as the index of anObj
|
/* This return value should be the same as the index of anObj
|
||||||
in xref_2_object_root. */
|
in xref_2_object_root. */
|
||||||
return ([xref_2_object_root count] - 1);
|
return ([xref_2_object_root count] - 1);
|
||||||
|
|
|
@ -1,248 +0,0 @@
|
||||||
/* Concrete NSArchiver for GNUStep based on GNU Coder class
|
|
||||||
Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
|
|
||||||
|
|
||||||
Written by: Andrew Kachites McCallum <mccallum@gnu.ai.mit.edu>
|
|
||||||
Created: April 1995
|
|
||||||
|
|
||||||
This file is part of the GNUstep Base Library.
|
|
||||||
|
|
||||||
This library is free software; you can redistribute it and/or
|
|
||||||
modify it under the terms of the GNU Library General Public
|
|
||||||
License as published by the Free Software Foundation; either
|
|
||||||
version 2 of the License, or (at your option) any later version.
|
|
||||||
|
|
||||||
This library is distributed in the hope that it will be useful,
|
|
||||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
Library General Public License for more details.
|
|
||||||
|
|
||||||
You should have received a copy of the GNU Library General Public
|
|
||||||
License along with this library; if not, write to the Free
|
|
||||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include <config.h>
|
|
||||||
#include <base/preface.h>
|
|
||||||
#include <Foundation/NSGArchiver.h>
|
|
||||||
#include <base/Archiver.h>
|
|
||||||
#include <base/CStream.h>
|
|
||||||
#include <base/behavior.h>
|
|
||||||
#include <base/CoderPrivate.h>
|
|
||||||
#include <base/MemoryStream.h>
|
|
||||||
#include <Foundation/NSException.h>
|
|
||||||
|
|
||||||
#define USE_OPENSTEP_STYLE_FORWARD_REFERENCES 1
|
|
||||||
|
|
||||||
#if USE_OPENSTEP_STYLE_FORWARD_REFERENCES
|
|
||||||
|
|
||||||
@interface NSGArchiverNullCStream : CStream
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation NSGArchiverNullCStream
|
|
||||||
- (void) encodeValueOfCType: (const char*)type
|
|
||||||
at: (const void*)d
|
|
||||||
withName: (NSString*) name
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
- (void) decodeValueOfCType: (const char*)type
|
|
||||||
at: (void*)d
|
|
||||||
withName: (NSString* *)namePtr
|
|
||||||
{
|
|
||||||
[self shouldNotImplement: _cmd];
|
|
||||||
}
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface NSGArchiver (Private)
|
|
||||||
- (void) _coderInternalCreateReferenceForObject: anObj;
|
|
||||||
- (void) encodeTag: (unsigned char)t;
|
|
||||||
@end
|
|
||||||
|
|
||||||
#endif /* USE_OPENSTEP_STYLE_FORWARD_REFERENCES */
|
|
||||||
|
|
||||||
|
|
||||||
@implementation NSGArchiver
|
|
||||||
|
|
||||||
+ (void) initialize
|
|
||||||
{
|
|
||||||
if (self == [NSGArchiver class])
|
|
||||||
class_add_behavior([NSGArchiver class], [Archiver class]);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if USE_OPENSTEP_STYLE_FORWARD_REFERENCES
|
|
||||||
|
|
||||||
/* Use this if you want to define any other methods... */
|
|
||||||
//#define self ((Archiver*)self)
|
|
||||||
#define cstream (((Archiver*)self)->cstream)
|
|
||||||
#define in_progress_table (((Archiver*)self)->in_progress_table)
|
|
||||||
#define object_2_fref (((Archiver*)self)->object_2_fref)
|
|
||||||
#define object_2_xref (((Archiver*)self)->object_2_xref)
|
|
||||||
#define const_ptr_2_xref (((Archiver*)self)->const_ptr_2_xref)
|
|
||||||
#define fref_counter (((Archiver*)self)->fref_counter)
|
|
||||||
|
|
||||||
- init
|
|
||||||
{
|
|
||||||
/* initialise with autoreleased mutable data so we don't leak memory */
|
|
||||||
return [self initForWritingWithMutableData:
|
|
||||||
[[[NSMutableData alloc] init] autorelease]];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Unlike the GNU version, this cannot be called recursively. */
|
|
||||||
- (void) encodeRootObject: anObj
|
|
||||||
withName: (NSString*)name
|
|
||||||
{
|
|
||||||
id saved_cstream;
|
|
||||||
|
|
||||||
/* Make sure that we're in a clean state. */
|
|
||||||
NSParameterAssert (!object_2_xref);
|
|
||||||
NSParameterAssert (!object_2_fref);
|
|
||||||
|
|
||||||
object_2_fref =
|
|
||||||
NSCreateMapTable (NSNonOwnedPointerOrNullMapKeyCallBacks,
|
|
||||||
NSIntMapValueCallBacks, 0);
|
|
||||||
|
|
||||||
/* First encode to a null cstream, and record all the objects that
|
|
||||||
will be encoded. They will get recorded in [NSGArchiver
|
|
||||||
-_coderCreateReferenceForObject:] */
|
|
||||||
saved_cstream = cstream;
|
|
||||||
cstream = [[NSGArchiverNullCStream alloc] init];
|
|
||||||
[self startEncodingInterconnectedObjects];
|
|
||||||
[self encodeObject: anObj withName: name];
|
|
||||||
[self finishEncodingInterconnectedObjects];
|
|
||||||
|
|
||||||
[cstream release];
|
|
||||||
cstream = saved_cstream;
|
|
||||||
/* Reset ourselves, except for object_2_fref. */
|
|
||||||
NSAssert(!in_progress_table, NSInternalInconsistencyException);
|
|
||||||
NSResetMapTable (object_2_xref);
|
|
||||||
NSResetMapTable (const_ptr_2_xref);
|
|
||||||
NSAssert(fref_counter == 0, NSInternalInconsistencyException);
|
|
||||||
|
|
||||||
/* Then encode everything "for real". */
|
|
||||||
[self encodeName: @"Root Object"];
|
|
||||||
[self encodeIndent];
|
|
||||||
[(id)self encodeTag: CODER_OBJECT_ROOT];
|
|
||||||
[self startEncodingInterconnectedObjects];
|
|
||||||
[self encodeObject: anObj withName: name];
|
|
||||||
[self finishEncodingInterconnectedObjects];
|
|
||||||
[self encodeUnindent];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void) encodeConditionalObject: (id)anObject
|
|
||||||
{
|
|
||||||
if ([cstream class] == [NSGArchiverNullCStream class])
|
|
||||||
/* If we're gathering a list of all the objects that will be
|
|
||||||
encoded (for the first half of a -encodeRootObject:), then do
|
|
||||||
nothing. */
|
|
||||||
return;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Otherwise, we've already gathered a list of all the objects
|
|
||||||
into objects_2_fref; if the object is there, encode it. */
|
|
||||||
if (NSMapGet (object_2_fref, anObject))
|
|
||||||
[self encodeObject: anObject];
|
|
||||||
else
|
|
||||||
[self encodeObject: nil];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void) encodeObjectReference: anObject
|
|
||||||
{
|
|
||||||
/* Be sure to do the OpenStep-style thing. */
|
|
||||||
[self encodeConditionalObject: anObject];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* For handling forward references. */
|
|
||||||
|
|
||||||
- (unsigned) _coderCreateReferenceForObject: anObj
|
|
||||||
{
|
|
||||||
if ([cstream class] == [NSGArchiverNullCStream class])
|
|
||||||
/* If we're just gathering a list of all the objects that will be
|
|
||||||
encoded (for the first half of a -encodeRootObject:), then just
|
|
||||||
put it in object_2_fref. */
|
|
||||||
NSMapInsert (object_2_fref, anObj, (void*)1);
|
|
||||||
|
|
||||||
/* Do the normal thing. */
|
|
||||||
return (unsigned) CALL_METHOD_IN_CLASS ([Archiver class],
|
|
||||||
_coderCreateReferenceForObject:,
|
|
||||||
anObj);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (unsigned) _coderCreateForwardReferenceForObject: anObject
|
|
||||||
{
|
|
||||||
/* We should never get here. */
|
|
||||||
[self shouldNotImplement: _cmd];
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (unsigned) _coderForwardReferenceForObject: anObject
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void) _objectWillBeInProgress: anObj
|
|
||||||
{
|
|
||||||
/* OpenStep-style coding doesn't keep an in-progress table. */
|
|
||||||
/* Register that we have encoded it so that future encoding can
|
|
||||||
do backward references properly. */
|
|
||||||
[self _coderInternalCreateReferenceForObject: anObj];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void) _objectNoLongerInProgress: anObj
|
|
||||||
{
|
|
||||||
/* OpenStep-style coding doesn't keep an in-progress table. */
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* xxx This method interface may change in the future. */
|
|
||||||
- (const char *) defaultDecoderClassname
|
|
||||||
{
|
|
||||||
return "NSGUnarchiver";
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Attempting to use the archiver after this will
|
|
||||||
mess up in a big way. NB. If the archiver was not writing to an
|
|
||||||
NSData object, we can't give one out, so we return nil. */
|
|
||||||
- (NSMutableData*) archiverData
|
|
||||||
{
|
|
||||||
id s = [cstream stream];
|
|
||||||
if ([s isKindOfClass:[MemoryStream class]])
|
|
||||||
{
|
|
||||||
[s rewindStream];
|
|
||||||
return [s mutableData];
|
|
||||||
}
|
|
||||||
if ([s isKindOfClass:[NSMutableData class]])
|
|
||||||
{
|
|
||||||
return (NSMutableData*)s;
|
|
||||||
}
|
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
#undef self
|
|
||||||
#endif /* USE_OPENSTEP_STYLE_FORWARD_REFERENCES */
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation NSGUnarchiver
|
|
||||||
|
|
||||||
+ (void) initialize
|
|
||||||
{
|
|
||||||
if (self == [NSGUnarchiver class])
|
|
||||||
class_add_behavior([NSGUnarchiver class], [Unarchiver class]);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if USE_OPENSTEP_STYLE_FORWARD_REFERENCES
|
|
||||||
|
|
||||||
/* This method is called by Decoder to determine whether to add
|
|
||||||
an object to the xref table before it has been initialized. */
|
|
||||||
- (BOOL) _createReferenceBeforeInit
|
|
||||||
{
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* USE_OPENSTEP_STYLE_FORWARD_REFERENCES */
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
|
@ -32,10 +32,9 @@
|
||||||
#include <Foundation/NSDictionary.h>
|
#include <Foundation/NSDictionary.h>
|
||||||
#include <Foundation/NSCharacterSet.h>
|
#include <Foundation/NSCharacterSet.h>
|
||||||
#include <Foundation/NSRange.h>
|
#include <Foundation/NSRange.h>
|
||||||
|
#include <Foundation/NSException.h>
|
||||||
#include <base/NSGString.h>
|
#include <base/NSGString.h>
|
||||||
#include <base/NSGCString.h>
|
#include <base/NSGCString.h>
|
||||||
#include <base/IndexedCollection.h>
|
|
||||||
#include <base/IndexedCollectionPrivate.h>
|
|
||||||
#include <Foundation/NSValue.h>
|
#include <Foundation/NSValue.h>
|
||||||
#include <base/behavior.h>
|
#include <base/behavior.h>
|
||||||
|
|
||||||
|
@ -561,10 +560,7 @@ static IMP msInitImp; /* designated initialiser for mutable */
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (id) objectAtIndex: (unsigned)index
|
||||||
// FOR IndexedCollection SUPPORT;
|
|
||||||
|
|
||||||
- objectAtIndex: (unsigned)index
|
|
||||||
{
|
{
|
||||||
CHECK_INDEX_RANGE_ERROR(index, _count);
|
CHECK_INDEX_RANGE_ERROR(index, _count);
|
||||||
return [NSNumber numberWithChar: _contents_chars[index]];
|
return [NSNumber numberWithChar: _contents_chars[index]];
|
||||||
|
@ -1122,11 +1118,7 @@ stringDecrementCountAndFillHoleAt(NSGMutableCStringStruct *self,
|
||||||
return [self initWithCStringNoCopy: 0 length: 0 fromZone: 0];
|
return [self initWithCStringNoCopy: 0 length: 0 fromZone: 0];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For IndexedCollecting Protocol and other GNU libobjects conformity. */
|
- (void) removeRange: (NSRange)range
|
||||||
|
|
||||||
/* xxx This should be made to return void, but we need to change
|
|
||||||
IndexedCollecting and its conformers */
|
|
||||||
- (void) removeRange: (IndexRange)range
|
|
||||||
{
|
{
|
||||||
stringDecrementCountAndFillHoleAt((NSGMutableCStringStruct*)self,
|
stringDecrementCountAndFillHoleAt((NSGMutableCStringStruct*)self,
|
||||||
range.location, range.length);
|
range.location, range.length);
|
||||||
|
@ -1148,8 +1140,6 @@ stringDecrementCountAndFillHoleAt(NSGMutableCStringStruct *self,
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For IndexedCollecting protocol */
|
|
||||||
|
|
||||||
- (char) charAtIndex: (unsigned)index
|
- (char) charAtIndex: (unsigned)index
|
||||||
{
|
{
|
||||||
CHECK_INDEX_RANGE_ERROR(index, _count);
|
CHECK_INDEX_RANGE_ERROR(index, _count);
|
||||||
|
@ -1157,8 +1147,6 @@ stringDecrementCountAndFillHoleAt(NSGMutableCStringStruct *self,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// FOR IndexedCollection and OrderedCollection SUPPORT;
|
|
||||||
|
|
||||||
- (void) insertObject: newObject atIndex: (unsigned)index
|
- (void) insertObject: newObject atIndex: (unsigned)index
|
||||||
{
|
{
|
||||||
CHECK_INDEX_RANGE_ERROR(index, _count+1);
|
CHECK_INDEX_RANGE_ERROR(index, _count+1);
|
||||||
|
|
|
@ -39,8 +39,7 @@
|
||||||
#include <Foundation/NSDictionary.h>
|
#include <Foundation/NSDictionary.h>
|
||||||
#include <Foundation/NSCharacterSet.h>
|
#include <Foundation/NSCharacterSet.h>
|
||||||
#include <Foundation/NSRange.h>
|
#include <Foundation/NSRange.h>
|
||||||
#include <base/IndexedCollection.h>
|
#include <Foundation/NSException.h>
|
||||||
#include <base/IndexedCollectionPrivate.h>
|
|
||||||
#include <Foundation/NSValue.h>
|
#include <Foundation/NSValue.h>
|
||||||
#include <base/behavior.h>
|
#include <base/behavior.h>
|
||||||
/* memcpy(), strlen(), strcmp() are gcc builtin's */
|
/* memcpy(), strlen(), strcmp() are gcc builtin's */
|
||||||
|
@ -754,11 +753,7 @@ stringDecrementCountAndFillHoleAt(NSGMutableStringStruct *self,
|
||||||
_hash = 0;
|
_hash = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For IndexedCollecting Protocol and other GNU libobjects conformity. */
|
- (void) removeRange: (NSRange)range
|
||||||
|
|
||||||
/* xxx This should be made to return void, but we need to change
|
|
||||||
IndexedCollecting and its conformers */
|
|
||||||
- (void) removeRange: (IndexRange)range
|
|
||||||
{
|
{
|
||||||
stringDecrementCountAndFillHoleAt((NSGMutableStringStruct*)self,
|
stringDecrementCountAndFillHoleAt((NSGMutableStringStruct*)self,
|
||||||
range.location, range.length);
|
range.location, range.length);
|
||||||
|
@ -780,8 +775,6 @@ stringDecrementCountAndFillHoleAt(NSGMutableStringStruct *self,
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* For IndexedCollecting protocol */
|
|
||||||
|
|
||||||
- (char) charAtIndex: (unsigned)index
|
- (char) charAtIndex: (unsigned)index
|
||||||
{
|
{
|
||||||
CHECK_INDEX_RANGE_ERROR(index, _count);
|
CHECK_INDEX_RANGE_ERROR(index, _count);
|
||||||
|
|
|
@ -28,7 +28,6 @@
|
||||||
#include <objc/Protocol.h>
|
#include <objc/Protocol.h>
|
||||||
#include <objc/objc-api.h>
|
#include <objc/objc-api.h>
|
||||||
#include <Foundation/NSMethodSignature.h>
|
#include <Foundation/NSMethodSignature.h>
|
||||||
#include <base/Invocation.h>
|
|
||||||
#include <Foundation/NSInvocation.h>
|
#include <Foundation/NSInvocation.h>
|
||||||
#include <Foundation/NSAutoreleasePool.h>
|
#include <Foundation/NSAutoreleasePool.h>
|
||||||
#include <Foundation/NSString.h>
|
#include <Foundation/NSString.h>
|
||||||
|
|
|
@ -55,11 +55,9 @@
|
||||||
#include <Foundation/NSPortCoder.h>
|
#include <Foundation/NSPortCoder.h>
|
||||||
#include <Foundation/NSPathUtilities.h>
|
#include <Foundation/NSPathUtilities.h>
|
||||||
#include <Foundation/NSRange.h>
|
#include <Foundation/NSRange.h>
|
||||||
|
#include <Foundation/NSException.h>
|
||||||
#include <base/IndexedCollection.h>
|
|
||||||
#include <Foundation/NSData.h>
|
#include <Foundation/NSData.h>
|
||||||
#include <Foundation/NSBundle.h>
|
#include <Foundation/NSBundle.h>
|
||||||
#include <base/IndexedCollectionPrivate.h>
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <string.h> // for strstr()
|
#include <string.h> // for strstr()
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
|
|
@ -118,7 +118,7 @@
|
||||||
return nil;
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void) setReceivedPacketInvocation: (id <Invoking>)invocation
|
- (void) setReceivedPacketInvocation: (id)invocation
|
||||||
{
|
{
|
||||||
NSAssert(!_packet_invocation, NSInternalInconsistencyException);
|
NSAssert(!_packet_invocation, NSInternalInconsistencyException);
|
||||||
_packet_invocation = invocation;
|
_packet_invocation = invocation;
|
||||||
|
|
|
@ -561,7 +561,7 @@ static NSMapTable* port_number_2_port;
|
||||||
return [self newForReceivingFromPortNumber: 0];
|
return [self newForReceivingFromPortNumber: 0];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (id <Collecting>) connectedOutPorts
|
- (id) connectedOutPorts
|
||||||
{
|
{
|
||||||
NSMapEnumerator me = NSEnumerateMapTable (_client_sock_2_out_port);
|
NSMapEnumerator me = NSEnumerateMapTable (_client_sock_2_out_port);
|
||||||
int count = NSCountMapTable (_client_sock_2_out_port);
|
int count = NSCountMapTable (_client_sock_2_out_port);
|
||||||
|
@ -587,41 +587,6 @@ static NSMapTable* port_number_2_port;
|
||||||
return &_listening_address;
|
return &_listening_address;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Usually, you would run the run loop to get packets, but if you
|
|
||||||
want to wait for one directly from a port, you can use this method. */
|
|
||||||
- newPacketReceivedBeforeDate: date
|
|
||||||
{
|
|
||||||
NSString* saved_mode = [NSRunLoop currentMode];
|
|
||||||
id saved_packet_invocation;
|
|
||||||
id packet = nil;
|
|
||||||
id handle_packet (id p)
|
|
||||||
{
|
|
||||||
packet = p;
|
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Swap in our own temporary handler. */
|
|
||||||
saved_packet_invocation = _packet_invocation;
|
|
||||||
_packet_invocation = [[ObjectFunctionInvocation alloc]
|
|
||||||
initWithObjectFunction: handle_packet];
|
|
||||||
|
|
||||||
/* Make sure we're in the run loop, and run it, waiting for the
|
|
||||||
incoming packet. */
|
|
||||||
[[NSRunLoop currentRunLoop] addPort: self
|
|
||||||
forMode: saved_mode];
|
|
||||||
while ([NSRunLoop runOnceBeforeDate: date]
|
|
||||||
&& !packet)
|
|
||||||
;
|
|
||||||
|
|
||||||
/* Clean up, getting ready to return. Swap back in the old packet
|
|
||||||
handler, and decrement the number of times we've been added to
|
|
||||||
this run loop. */
|
|
||||||
_packet_invocation = saved_packet_invocation;
|
|
||||||
[[NSRunLoop currentRunLoop] removePort: self
|
|
||||||
forMode: saved_mode];
|
|
||||||
return packet;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Read some data from FD; if we read enough to complete a packet,
|
/* Read some data from FD; if we read enough to complete a packet,
|
||||||
return the packet. Otherwise, keep the partially read packet in
|
return the packet. Otherwise, keep the partially read packet in
|
||||||
|
|
|
@ -27,7 +27,6 @@
|
||||||
#include <base/UdpPort.h>
|
#include <base/UdpPort.h>
|
||||||
#include <base/Coder.h>
|
#include <base/Coder.h>
|
||||||
#include <base/ConnectedCoder.h>
|
#include <base/ConnectedCoder.h>
|
||||||
#include <base/Array.h>
|
|
||||||
#include <Foundation/NSLock.h>
|
#include <Foundation/NSLock.h>
|
||||||
#include <Foundation/NSException.h>
|
#include <Foundation/NSException.h>
|
||||||
#include <Foundation/NSHost.h>
|
#include <Foundation/NSHost.h>
|
||||||
|
@ -191,14 +190,6 @@ static NSMapTable *port_number_2_in_port = NULL;
|
||||||
return [self newForReceivingFromPortNumber: n];
|
return [self newForReceivingFromPortNumber: n];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Usually, you would run the run loop to get packets, but if you
|
|
||||||
want to wait for one directly from a port, you can use this method. */
|
|
||||||
- newPacketReceivedBeforeDate: date
|
|
||||||
{
|
|
||||||
return nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Returns nil on timeout.
|
/* Returns nil on timeout.
|
||||||
Pass -1 for milliseconds to ignore timeout parameter and block indefinitely.
|
Pass -1 for milliseconds to ignore timeout parameter and block indefinitely.
|
||||||
*/
|
*/
|
||||||
|
@ -340,13 +331,13 @@ static NSMapTable *port_number_2_in_port = NULL;
|
||||||
|
|
||||||
@implementation UdpOutPort
|
@implementation UdpOutPort
|
||||||
|
|
||||||
static Array *udp_out_port_array;
|
static NSArray *udp_out_port_array;
|
||||||
|
|
||||||
+ (void) initialize
|
+ (void) initialize
|
||||||
{
|
{
|
||||||
if (self == [UdpOutPort class])
|
if (self == [UdpOutPort class])
|
||||||
{
|
{
|
||||||
udp_out_port_array = [Array new];
|
udp_out_port_array = [NSArray new];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -362,16 +353,18 @@ static Array *udp_out_port_array;
|
||||||
+ newForSendingToSockaddr: (struct sockaddr_in*)sockaddr
|
+ newForSendingToSockaddr: (struct sockaddr_in*)sockaddr
|
||||||
{
|
{
|
||||||
UdpOutPort *p;
|
UdpOutPort *p;
|
||||||
|
unsigned i;
|
||||||
|
unsigned c = [udp_out_port_array count];
|
||||||
|
|
||||||
/* See if there already exists a port for this sockaddr;
|
/* See if there already exists a port for this sockaddr;
|
||||||
if so, just return it. */
|
if so, just return it. */
|
||||||
FOR_ARRAY (udp_out_port_array, p)
|
for (i = 0; i < c; i++)
|
||||||
{
|
{
|
||||||
|
p = [udp_out_port_array objectAtIndex: i];
|
||||||
/* xxx Come up with a way to do this with a hashtable, not a list. */
|
/* xxx Come up with a way to do this with a hashtable, not a list. */
|
||||||
if (SOCKADDR_EQUAL (sockaddr, &(p->_address)))
|
if (SOCKADDR_EQUAL (sockaddr, &(p->_address)))
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
END_FOR_ARRAY (udp_out_port_array);
|
|
||||||
|
|
||||||
/* Create a new port. */
|
/* Create a new port. */
|
||||||
p = [[self alloc] init];
|
p = [[self alloc] init];
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
AC_INIT(Source/Collection.m)
|
AC_INIT(Source/NSArray.m)
|
||||||
|
|
||||||
# configure.in for GNU Objective-C library
|
# configure.in for GNU Objective-C library
|
||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue