([TcpInPort -encodeWithCoder:]): Use encodeBytes:.., not
encodeValue..; the data is already in network byte-order.
([TcpOutPort -encodeWithCoder:]): Likewise.
([TcpOutPort +newWithCoder:]): Likewise.
([TcpOutPort
+newForSendingToSockaddr:withAcceptedSocket:pollingInPort:]): Set
entirety of _REMOTE_IN_PORT_ADDRESS to zero.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1227 72102866-910b-0410-8b05-ffd578937521
Specify object class in arg type for nested function.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1226 72102866-910b-0410-8b05-ffd578937521
(Coding -decodeBytes:count:withName:): Likewise, and pass COUNT, not
pointer to COUNT.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1223 72102866-910b-0410-8b05-ffd578937521
poll the inputs, but don't wait if there is nothing available
immediately. Check to make sure that the LIMIT_DATE hasn't already
past; if it has, return immediately, before polling input sources.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1220 72102866-910b-0410-8b05-ffd578937521
Use OBJC_MALLOC and friends, instead of NX_MALLOC.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1211 72102866-910b-0410-8b05-ffd578937521
the use of invalid Connections.
([Proxy +encodeObject:withConnectedCoder:]): Likewise.
([Proxy -forward::]): Likewise.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1208 72102866-910b-0410-8b05-ffd578937521
which we handle a request immediately. Before it inappropriately
queued call backs from the server on which we were waiting, causing us
to wait forever.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1204 72102866-910b-0410-8b05-ffd578937521
already autoreleased. Too many autoreleases were causing crashes.
(NSAllMapTableValues): Likewise.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1198 72102866-910b-0410-8b05-ffd578937521
PARENT is nil. This is correct behavior. Old behavior could cause
infinite loops in the PARENT pointers.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1197 72102866-910b-0410-8b05-ffd578937521
to RunLoopDefaultMode, not nil.
([NSTimer
+scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:]):
Likewise.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1195 72102866-910b-0410-8b05-ffd578937521
RunLoop in RunLoopConnectionReplyMode, not nil mode.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1194 72102866-910b-0410-8b05-ffd578937521
port to the RunLoop in new RunLoop style.
([Connection -addToRunLoop:forMode:]): Method removed.
([Connection -removeFromRunLoop:forMode:]): Method removed.
([Connection -_getReceivedReplyRmcWithSequenceNumber:]): Use new class
method for RunLoop.
([Connection -invalidate]): Remove comment about removing from
RunLoop. RunLoop's now automatically remove invalid ports.
(RunLoopConnectionReplyMode): New run loop mode string.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1192 72102866-910b-0410-8b05-ffd578937521
been added to; now the RunLoop manages this.
([TcpInPort +newForReceivingFromPortNumber:]): Don't initialize the
the removed ivar ACTIVE_FD_SET. Likewise with _RUN_LOOPS.
([TcpInPort -newPacketReceivedBeforeDate:]): Don't use removed
_RUN_LOOPS.
([TcpInPort -old_receivePacketWithTimeout:]): Remove old deprecated
method.
([TcpInPort -invokeWithObject:]): Method removed.
([TcpInPort -newPacketReceivedBeforeDate:]): Overhauled to use new
RunLoop mechanism.
([TcpInPort -getFds:count:]): New method, called by RunLoop.
([TcpInPort -readyForReadingOnFileDescriptor:]): Likewise.
([TcpInPort -_addClientOutPort:]): Updated for new scheme.
([TcpInPort -_connectedOutPortInvalidated:]): Likewise.
([TcpInPort -addToRunLoop:forMode:]): Method removed.
([TcpInPort -removeFromRunLoop:forMode:]): Method removed.
([TcpInPort -dealloc]): Don't release _RUN_LOOPS.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1189 72102866-910b-0410-8b05-ffd578937521
([RunLoop -init]): Initialize new ivars.
([RunLoop -currentMode]): New method.
([RunLoop -addFileDescriptor:object:forMode:]): Method replaces
-addFileDescriptor:invocation:forMode:, and re-implemented. Not yet
functional.
([RunLoop -removeFileDescriptor:forMode:]): Likewise.
([RunLoop -addPort:forMode:]): New method.
([RunLoop -removePort:forMode:]): New method.
([RunLoop -addTimer:forMode:]): Overhauled to do the right thing with
the MODE argument.
([RunLoop -acceptInputForMode:beforeDate:]): Method overhauled to ask
port objects for their FD's, create FD_2_OBJECT map table on the fly,
and initialize FDS on the fly. Now properly removed invalidated ports
from the MODE.
([RunLoop -runOnceBeforeDate:forMode:]): New method.
([RunLoop -runOnceBeforeDate:]): New method.
([RunLoop -runUntilDate:forMode:]): New method.
([RunLoop -runUntilDate:]): New method.
([RunLoop +runUntilDate:forMode:]): New method.
([RunLoop +runOnceBeforeDate:]): New method.
([RunLoop +runOnceBeforeDate:forMode:]): New method.
([RunLoop +currentMode]): New method.
(RunLoopDefaultMode): New global variable.
([NSObject -performSelector:afterDelay:]): Not implemented.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1187 72102866-910b-0410-8b05-ffd578937521
(RunLoop _mode_2_timers): New ivar.
(RunLoop _mode_2_in_ports): New ivar.
(RunLoop _mode_2_fd_listeners): New ivar.
(RunLoopDefaultMode): New extern variable.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1186 72102866-910b-0410-8b05-ffd578937521
assignment, not equality test for setting enumState to -1.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1156 72102866-910b-0410-8b05-ffd578937521
nil to avoid warning.
([ConstantCollection -maxObject]): Initialize MAX to nil.
([ConstantCollection -minObject]): Initialize MIN to nil.
([Collection -uniqueContents]): Iterate over CP, not SELF.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1152 72102866-910b-0410-8b05-ffd578937521
([ConstantIndexedCollection -lastObject]): Likewise.
([ConstantIndexedCollection -prevObjectWithEnumState:]): Use -1 to
deal with reversals at extremes.
([ConstantIndexedCollection -nextObjectWithEnumState:]): Use [self
count] to deal with reversals at extremes.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1132 72102866-910b-0410-8b05-ffd578937521
([Connection +initialize]): Initialize it.
([Connection +newForInPort:outPort:ancestorConnection:]): Use new
static variable to handle ancestor; (ignore ancestor argument; the
method name will be changed later). Set the in-port's packet
invocation to the Connection class. Don't call -addToRunLoop.. here,
the mechanics of it were already done above.
([Connection -addToRunLoop:forMode:]): Mark it as not implemented, for
now.
([Connection -runConnectionUntilDate:]): Don't add to run loop here.
([Connection +invokeWithObject:]): Make it a class method instead of
an instance method; alter contents appropriately for this.
([Connection -portIsInvalid:]): Look at in_port_2_ancestor and remove
ourselves if necessary.
([Connection -invalidate]): Don't remove ourselves from the run loop
here, because we may not be the only one listening. This still needs
fixing.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1131 72102866-910b-0410-8b05-ffd578937521
new methods that use RunLoop. All callers changed.
([Connection -addToRunLoop:forMode:]): New method.
([Connection -removeFromRunLoop:forMode:]): New method.
([Connection -runConnectionUntilDate:]): New method.
([Connection -runConnection]): Method changed to call above method.
([Connection -_handleRmc:]): New method.
([Connection -_handleQueuedRmcRequests]): New method.
([Connection -_getReceivedReplyRmcFromQueueWithSequenceNumber:]): New
method.
([Connection -_getReceivedReplyRmcWithSequenceNumber:]): New method.
([Connection -invokeWithObject:]): New method.
([Connection +newForInPort:outPort:ancestorConnection:]): Set
reply_depth ivar.
([Connection -_encoderCreateReferenceForConstPtr:]): Return the xref!
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1117 72102866-910b-0410-8b05-ffd578937521
implementation that uses the RunLoop.
([TcpInPort -old_receivePacketWithTimeout:]): New method, holding old
implementation.
([TcpInPort -invokeWithObject:]): New method, called by RunLoop.
([TcpInPort -_tryToGetPacketFromReadableFD:]): New private method.
([TcpInPort -_addClientOutPort:toRunLoop:forMode:]): New method.
([TcpInPort -addToRunLoop:forMode:]): New method.
([TcpInPort -_removeClientOutPort:fromRunLoop:forMode:]): New method.
([TcpInPort -removeFromRunLoop:forMode:]): New method.
([TcpInPort -_addClientOutPort:]): Add it to the RunLoop.
([TcpInPort -_connectedOutPortInvalidated:]): Remove it from the
RunLoop.
([TcpInPort -_addClientOutPort:]): Method renamed from _addOutPort:.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1107 72102866-910b-0410-8b05-ffd578937521
([InPort -setPacketInvocation:]): New method.
([InPort -addToRunLoop:forMode:]): New method.
([InPort -removeFromRunLoop:forMode:]): New method.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1106 72102866-910b-0410-8b05-ffd578937521
select_timeout to inside loop since Linux select() modifies
*select_timeout.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1095 72102866-910b-0410-8b05-ffd578937521
([TcpInPort +newForReceivingFromPortNumber:]): Get the address of the
host, not localhost=127.0.0.1.
([TcpInPort -invalidate]): Remove ourselves from socket_2_port and
port_number_2_port here instead of in -dealloc.
([TcpInPort -description]): Indicate whether we are valid or not in
string.
([TcpOutPort -description]): Likewise.
([TcpOutPort -invalidate]): Assert is_valid, don't just conditionally
execute body. Remove ourselves from out_port_bag and socket_2_port
here, not in -dealloc.
([TcpPacket +_getPacketSize:andReplyPort:fromSocket:inPort:]): If we
don't read() full prefix, don't abort(), just return EOF.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1091 72102866-910b-0410-8b05-ffd578937521
([Connection +newForInPort:outPort:ancestorConnection:]): Set is_valid
to 1. Only ask for notification of out port death if out port is non-nil.
([Connection -portIsInvalid:]): Properly get the port from the
notification object.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1089 72102866-910b-0410-8b05-ffd578937521
this method, don't test it and skip the body of this method. Force
users to be careful about calling -invalidate more than once.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1088 72102866-910b-0410-8b05-ffd578937521
(NotificationInvocation): Likewise.
(NotificationPerformer): Likewise.
([NotificationDispatcher
-_addObserver:notificationRequest:name:object:]): Insist that observer
be non-nil; (in the case of Invocation's, the invocation is now the
observer).
([NotificationDispatcher -addInvocation:name:object:]): Method renamed
from -addObserver:invocation:... Pass the invocation as the
observer. Release the NR after it has been added.
([NotificationDispatcher -addObserver:selector:name:object:]): Release
the NR after it has been added.
([NotificationDispatcher -_removeFromLinkedListNotificationRequest:]):
New method.
([NotificationDispatcher -removeInvocation:]): New method.
([NotificationDispatcher -removeInvocation:name:object:]): New method.
([NotificationDispatcher -removeObserver:]): Use
_removeFromLinkedListNotificationRequest:.
([NotificationDispatcher -removeObserver:name:object:]): Likewise.
([NotificationDispatcher +addInvocation:name:object:]): New method.
([NotificationDispatcher +removeInvocation:]): New method.
([NotificationDispatcher +removeInvocation:name:object:]): New method.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1082 72102866-910b-0410-8b05-ffd578937521
([Connection -addLocalObject:]): Put it in all_connections_local_targets
also.
([Connection -removeLocalObject:]): Remove it from
all_connections_local_targets also.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1081 72102866-910b-0410-8b05-ffd578937521
changes to TcpPort.h. Overhaul of how TcpOutPort's track their remote
address. Previously they used the address of their local peer; this
is no good when encoding a TcpOutPort on the wire for D.O.; the
D.O. reciever needs a way to contact the listen'ing socket of the
TcpInPort in order to form a new connection. _remote_in_port_address
is now the address of the remote listen'ing socket. Added many
comments throughout. All perror() calls changes to be more
informative.
(debug_tcp_port): Make this a static variable instead of a macro.
(init_socket_2_port): Check pre-existance of socket_2_port here
instead of callers.
([TcpInPort +newForReceivingFromPortNumber:]): Method overhauled.
Don't bind socket to INADDR_ANY because we need to be able to encode
our unique host address on the wire for D.O.
([TcpInPort -_listeningSockaddr]): New method.
([TcpInPort -receivePacketWithTimeout:]): Method overhauled. Get the
reply port for an incoming packet from the packet prefix.
([TcpInPort -_connectedOutPortInvalidated:]): Add debugging message.
([TcpInPort -classForConnectedCoder:]): Return the TcpOutPort class,
not [self class] because we always encode a "send right" (ala Mach),
not a "recieve right".
([TcpOutPort
+newForSendingToSockaddr:withAcceptedSocket:pollingInPort:]): Method
renamed, and majorly overhauled. Now many different combinations of
NULL argument do different things. This is now the single designated
initializer. We now check both the SOCKADDR and the SOCK argument to
find previously-created TcpOutPort's. This method is also used to set
the remote_in_port_address of an already-created TcpOutPort. There is
more error checking.
([TcpOutPort +newForSendingToPortNumber:onHost:]): Overhauled.
([TcpOutPort +_newWithAcceptedSocket:peeraddr:inPort:]): Overhauled to
work with new designated initalizer.
([TcpOutPort -sendPacket:withTimeout:]): Use new low-level Packet
interface that deals with reply ports.
([TcpOutPort +packetClass]): New method.
(PREFIX_LENGTH_TYPE): New macro.
(PREFIX_LENGTH_SIZE): New macro.
(PREFIX_ADDRESS_TYPE): New macro.
(PREFIX_ADDRESS_SIZE): New macro.
(PREFIX_SIZE): New macro.
([TcpPacket -_initForReceivingWithSize:replyPort:]): Use 0 prefix,
because the separate +_getPacketSize... method reads those bytes.
([TcpPacket -_writeToSocket:withReplySockaddr:]): Now the prefix
includes the sockaddr of the reply port. If ADDR is non-null, set the
reply port address portion of the prefix.
([TcpPacket +_getPacketSize:andReplyPort:fromSocket:inPort:]): New
method, replacing +readPacketSizeFromSocket:.
([TcpPacket -_fillFromSocket:]): Set Stream's eofPosition properly.
Leave Stream's position at zero.
(InPortAcceptedClientNotification): New notification string.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1063 72102866-910b-0410-8b05-ffd578937521
(debug_proxy): Temporarily set to 1.
([Proxy +newForRemoteTarget:connection:]): Set new ivar names.
Embellish debugging message to include connection.
([Proxy -invalidateProxy]): Return void instead of self.
([Proxy +encodeObject:withConnectedCoder:]): Overhauled, encode tag,
and change order of encoding for more efficient encoding. Added many
comments.
([Proxy +newWithCoder:]): Likewise, to match. Also added a check to
make sure we don't return a bogus pointer for a local object; do this
by checking with connection's +includesLocalObject; if it's not
there, raise an exception.
([Proxy -forward::]): Call the new forwarding method name in Connection.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1062 72102866-910b-0410-8b05-ffd578937521
object_2_xref, not const_ptr_2_xref.
([Encoder -_encodeObject:withName:isBycopy:isForwardReference:]):
Create the in_progress_table with NSNonOwnedPointerMapKeyCallBacks,
not NSObject..; needed by distributed objects so we don't get infinite
loop with proxy objects.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1059 72102866-910b-0410-8b05-ffd578937521
Compare got with 6, not 2.
([Decoder -_coderCreateReferenceForObject:]): Add warning comment
about a -retain we don't want. Fix this eventually!
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1058 72102866-910b-0410-8b05-ffd578937521
replacing default_port_class.
(all_connections_local_targets): New map table; not used yet, though.
(debug_connection): Temporarily set to 1.
([Connection +initialize]): Set new static vars.
([Connection +setDefaultInPortClass:]): New method.
([Connection +defaultInPortClass]): New method.
([Connection +setDefaultOutPortClass:]): New method.
([Connection +defaultOutPortClass]): New method.
([Connection -init]): Use new default_in_port_class.
([Connection +new]): Likewise.
([Connection +newWithRootObject:]): Likewise.
([Connection +newRegisteringAtName:withRootObject:]): Likewise.
([Connection +rootProxyAtName:onHost:]): Likewise.
([Connection +rootProxyAtPort:]): Likewise.
([Connection +newForInPort:outPort:ancestorConnection:]): Assert the
in port. Embellish the debugging message to print the in port and
out port. Set the new connection's in port and out port ivars.
Register ourselves as observers of port invalidation with the
NotificationDispatcher. Post a notification that a new connection was
created.
([Connection -runConnectionWithTimeout:]): Use
_serviceReceivedRequestsWithTimeout:.
([Connection -_newReceivedRmcWithTimeout:]): Use decodingClass, not
encodingClass.
([Connection -_serviceReceivedRequestsWithTimeout:]): Method name
changed from -newReceivedReplyRmcWithSequenceNumber:.
([Connection +includesLocalObject:]): New method; still needs more
infrastructure to work, though.
([Connection -inPortClass]): New method.
([Connection -outPortClass]): New method.
([Connection -setInPortClass:aPortClass]): New method.
([Connection -setOutPortClass:aPortClass]): New method.
([Connection -_encoderCreateReferenceForConstPtr:]): Add 1 to map
table count to get xref.
([Connection -_decoderCreateReferenceForConstPtr:]): Likewise.
([Connection -dealloc]): Remove ourselves from the NotificationDispatcher.
(ConnectionWasCreatedNotification): New notification string.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1057 72102866-910b-0410-8b05-ffd578937521
([ConnectedEncoder
-_initForWritingWithConnection:sequenceNumber:identifier:]): Get
packetClass from the connection's outPort, not the outPortClass.
Return self.
([ConnectedDecoder
+readSignatureFromCStream:getClassname:formatVersion:]): Fill in name
and version.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1056 72102866-910b-0410-8b05-ffd578937521
([TcpInPort -_connectedOutPortInvalidated:]): Post an
InPortClientBecameInvalidNotification.
([TcpInPort -portNumber]): New method.
([TcpInPort -description]): New method.
([TcpOutPort +newWithAcceptedSocket:inPort:]): Fill in the _address
ivar.
([TcpOutPort -portNumber]): New method.
([TcpOutPort -description]): New method.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1039 72102866-910b-0410-8b05-ffd578937521
-subclassResponsibililty.
([MethodInvocation -initWithArgframe:selector:]): Raise an exception
if we are unable to get a non-null selector type string.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1038 72102866-910b-0410-8b05-ffd578937521
([Enumerator -dealloc]): Likewise.
([ConstantCollection -detectObjectByInvoking:]): Use -returnValueIsTrue.
([ConstantCollection -printForDebugger]): Use object_get_class_name
instead of -name because -name is now ambiguously typed.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@1032 72102866-910b-0410-8b05-ffd578937521
([Invocation -setReturnValue:]): Retain return value if necessary.
([ArgframeInvocation -_retainArguments]): Add missing local var.
([MethodInvocation -initWithArgframe:type:]): New method.
([MethodInvocation -initWithArgframe:selector:]): Use new method. Set
selector using sel_pointer.
([ObjectFunctionInvocation -invokeWithObject:]): Use return_retained,
not args_retained.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@999 72102866-910b-0410-8b05-ffd578937521
instead of malloc.
([Invocation -encodeWithCoder:]): New method.
([Invocation -initWithCoder:]): New method.
([Invocation -classForConnectedCoder:]): New method.
([Invocation -returnType]): Use new ivar name.
([Invocation -setReturnValue:]): New method.
([Invocation -objectReturnValue]): Method implemented.
([Invocation -intReturnValue]): Method implemented.
([Invocation -returnValueIsTrue]): Method implementation finished.
([Invocation -dealloc]): Use new ivar name. Release return type if
necessary.
([ArgframeInvocation -_retainArguments]): New method.
([ArgframeInvocation -_initArgframeFrom:withType:retainArgs:]): Method
overhauled.
([ArgframeInvocation -initWithArgframe:type:]): Use new method.
([ArgframeInvocation -encodeWithCoder:]): New method.
([ArgframeInvocation -initWithCoder:]): New method.
([ArgframeInvocation -argumentTypeAtIndex:]): Use new ivar name.
([ArgframeInvocation -retainArguments]): New method.
([ArgframeInvocation -argumentsRetained]): New method.
([ArgframeInvocation -_deallocArgframe]): New method.
([ArgframeInvocation -dealloc]): Use new method. Release args if
necessary.
([MethodInvocation -_initTargetAndSelPointers]): New method.
([MethodInvocation -initWithArgframe:selector:]): Use new method.
([MethodInvocation -initWithCoder:]): New method.
([MethodInvocation -initWithTarget:selector:...]): Retain args if
necessary.
([MethodInvocation -invoke]): Use new ivars.
([MethodInvocation -invokeWithTarget:]): Use -setTarget:.
([MethodInvocation -selector]): Use new ivar.
([MethodInvocation -setSelector:]): Likewise.
([MethodInvocation -target]): Likewise.
([MethodInvocation -setTarget:]): Likewise.
([ObjectMethodInvocation -_initArgObjectPointer]): New method.
([ObjectMethodInvocation -initWithArgframe:selector:]): Use new method.
([ObjectMethodInvocation -initWithCoder:]): New method.
([ObjectMethodInvocation -invokeWithObject:]): New method.
(VoidFunctionInvocation): New class implementation.
(ObjectFunctionInvocation): New class implementation.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@998 72102866-910b-0410-8b05-ffd578937521
(return_type): ivar renamed from encoding.
(ArgframeInvocation args_retained): new ivar.
(MethodInvocation target_pointer): new ivar.
(MethodInvocation sel_pointer): new ivar.
(VoidFunctionInvocation): New class.
(ObjectFunctionInvocation): New class.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@997 72102866-910b-0410-8b05-ffd578937521
([Invocation -intReturnValue]): New method.
([Invocation -returnValueIsTrue]): New method.
([Invocation -initWithTarget:selector:...]): Use switch statement to
handle value arguments, instead of pointer-to-value arguments.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@968 72102866-910b-0410-8b05-ffd578937521
([NumberTemplate -isEqual:]): New method.
([NumberTemplate -encodeWithCoder:]): Make this self-contained.
([NumberTemplate -initWithCoder:]): Likewise.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@967 72102866-910b-0410-8b05-ffd578937521
objects and NeXT-compatibility. Change several methods to return void.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@944 72102866-910b-0410-8b05-ffd578937521
from Georg Tuparev.
(GNUSTEP_HEADERS): Added Foundation/NSNotification.h from Georg
Tuparev.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@916 72102866-910b-0410-8b05-ffd578937521
void return type.
([Invocation -invokeWithElement:]): Method removed.
([Invocation -invokeWithObject:]): Make is -subclassResponsibility.
([Invocation -getReturnValue:]): Make sure return_value is non-NULL.
([ArgframeInvocation -initWithArgframe:type:]): Use objc_calloc.
([MethodInvocation -initWithArgframe:selector:]): Try hard to get a
selector with a type string.
([MethodInvocation -initWithTarget:selector:...]): New method.
([MethodInvocation -invoke]): Get the target and selector properly.
([MethodInvocation -invokeWithObject:]): New method.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@898 72102866-910b-0410-8b05-ffd578937521
method, put in, but comment out, new ideas for "tag-less" coder
streams; this will allow for smaller archives.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@889 72102866-910b-0410-8b05-ffd578937521
([Coder +encodeRootObject:withName:toStream:]): Make -closeCoding name
change.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@885 72102866-910b-0410-8b05-ffd578937521
exclusively associated with the Coding class, but also all subclasses
that implement a *Coding protocol.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@884 72102866-910b-0410-8b05-ffd578937521
coderReadingFromStream:, because it's silly to have different names
for this method for subclasses of Coder. Don't autorelease returned
object (I also find this more helpful).
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@882 72102866-910b-0410-8b05-ffd578937521
coderReadingFromStream to newReadingFromStream, and don't retain.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@881 72102866-910b-0410-8b05-ffd578937521
+coderReadingFromStream, not the deprecated -initReadingFromStream.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@865 72102866-910b-0410-8b05-ffd578937521
subclassResponsibility where correct.
([NSArchiver +initialize]): Make NSGArchiver the concrete class.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@852 72102866-910b-0410-8b05-ffd578937521
([NSGArray -initWithObjects:count:]): Call Array designated initalizer
instead of accessing ivars directly.
([NSGMutableArray -initWithCapacity:]): Likewise.
([NSGArray -count]): Method removed, Array behavior will take care of
it.
([NSGArray -objectAtIndex:]): Use self to access ivars.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@841 72102866-910b-0410-8b05-ffd578937521
(Coder -encodeArrayOfObjCType:count:at:withName:): Renamed from
-encodeArrayOfObjCType:at:count:withName:, to better match NeXT.
(Coder -decodeArrayOfObjCType:count:at:withName:): Likewise.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@827 72102866-910b-0410-8b05-ffd578937521
cStreamFormatVersion:]): New method.
([Coder -initForWritingToFile:withFormatVersion:cStreamClass:
cStreamFormatVersion:]): New method.
([Coder -initForWritingToFile:filenamewithCStreamClass:cStreamClass]):
New method.
([Coder +encodeRootObject:withName:nametoStream:]): New method.
([Coder +encodeRootObject:withName:nametoFile:filename]): New method.
([Coder +decodeObjectWithName:namefromStream:]): New method.
([Coder +decodeObjectWithName:namefromFile:filename]): New method.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@819 72102866-910b-0410-8b05-ffd578937521
([Coder -initForWritingToFile:filename]): New method.
([Coder -closeCoder]): New method.
([Coder -isClosed]): New method.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@814 72102866-910b-0410-8b05-ffd578937521
"closing" a stream and "deallocating" a stream because of delays in
deallocation due to -autorelease.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@807 72102866-910b-0410-8b05-ffd578937521
constant string objects instead of C strings where appropriate.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@804 72102866-910b-0410-8b05-ffd578937521
([Coder -writeSignature]): Use it.
([Coder +readSignatureFromCStream:getClassname:formatVersion:]):
Likewise, and receive (char*) instead of (char**). All callers
changed.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@798 72102866-910b-0410-8b05-ffd578937521
and "..ValueOfCType", instead of "..ValueOfType" and
"..ValueOfSimpleType".
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@781 72102866-910b-0410-8b05-ffd578937521
by GNU libc.
(handle_printf_atsign): New function to handle %@ in printf strings.
([NSString +initialize]): Register the new printf-handler function.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@779 72102866-910b-0410-8b05-ffd578937521
can use NSObject methods on arguments passed with <Streaming> type.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@778 72102866-910b-0410-8b05-ffd578937521
(cstream): New ivar, replacing "stream".
(classname_map): New ivar, but not yet used properly.
(concrete_format_version): ivar removed, this is now in the CStream
classes.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@775 72102866-910b-0410-8b05-ffd578937521
undeclared error. (This is related to creation of SeekableStream
protocol.)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@774 72102866-910b-0410-8b05-ffd578937521
Include many more files. Use new-style method name
"..ValueOfObjCType", instead of "..ValueOfType". Use (id <String>)
instead of (char *) where appropriate.
(DEFAULT_FORMAT_VERSION): Renamed from CODER_FORMAT_VERSION.
(default_stream_class): Renamed from defaultStreamClass;
(default_cstream_class): New static variable.
([Coder +initialize]): Initialize above two variables.
([Coder +setDefaultCStreamClass:]): New method.
([Coder +defaultCStreamClass]): New method.
([Coder +setDefaultStreamClass:]): New method.
([Coder +defaultStreamClass]): New method.
([Coder +defaultFormatVersion]): New method.
([Coder -writeSignature]): New method, replaces -encodeSignature.
([Coder +readSignatureFromCStream:getClassname:formatVersion:]):
New method, replaces decodeSignature.
([Coder -_initWithCStream:formatVersion:isDecoding:f]): New method,
replaces _initWithStream:isDecoding.
([Coder +coderReadingFromStream:stream]): New method.
([Coder +coderReadingFromFile:filename]): New method.
([Coder -initForReadingFromStream:formatVersion:]): New method.
([Coder -initForWritingToStream:sformatVersion:version]): New method.
([Coder +decodeObjectFromStream:]): New method.
([Coder +decodeObjectFromFile:filename]): New method.
([Coder -initEncodingOnStream:]): Method removed.
([Coder -initDecodingOnStream:]): Method removed.
([Coder -initEncoding:]): Method removed.
([Coder -initDecoding:]): Method removed.
([Coder -encodeBytes:count:withName:]): Now unimplemented.
([Coder -decodeBytes:count:withName:name]): Likewise.
([Coder -decodeValueOfCType:at:withName:]): New method.
([Coder -encodeValueOfCType:at:withName:]): New method.
([Coder -encodeValueOfObjCType:at:withName:name]): Now longer handles
arrays and structs; those are now handled in a CStream method.
([Coder -decodeValueOfObjCType:at:withName:]): Likewise.
([Coder -encodeValueOfSimpleType:at:withName:]): Method removed.
([Coder -decodeValueOfSimpleType:at:withName:]): Method removed.
([Coder -encodeIndent]): Call cstream to handle this, instead of doing
nothing.
([Coder -encodeUnindent]): Likewise.
([Coder -decodeIndent]): Likewise.
([Coder -decodeUnindent]): Likewise.
([Coder -encodeName:]): Likewise.
([Coder -decodeName:]): Likewise.
([Coder -formatVersion]): Method renamed from coderFormatVersion.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@770 72102866-910b-0410-8b05-ffd578937521
Use -subclassReponsibility instead of -notImplemented.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@761 72102866-910b-0410-8b05-ffd578937521
(DOING_ROOT_OBJECT): New macro, defined based on
interconnected_stack_height.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@756 72102866-910b-0410-8b05-ffd578937521
same information from ivar interconnected_stack_height.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@755 72102866-910b-0410-8b05-ffd578937521
-Wl,-soname,libobjects.so.$(OBJECTS_MAJOR_VERSION) argument. Create a
soft link named libobjects.so.
(install): Install a soft link named libobjects.so.
(Fixes sent by Jeremy Bettis <jbettis@cse.unl.edu>.)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@737 72102866-910b-0410-8b05-ffd578937521
(install): Look for libobjects.so file, not just for configure
variable. Remove unwanted `;'. Install objects/config.h from build
directory. (Fixes provided by Matthias Klose <doko@cs.tu-berlin.de>).
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@731 72102866-910b-0410-8b05-ffd578937521
format directive, since it isn't implemented yet; use %s and -cString
instead.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@717 72102866-910b-0410-8b05-ffd578937521
(Reported by Gregor Hoffleit <flight@mathi.uni-heidelberg.DE>.)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@715 72102866-910b-0410-8b05-ffd578937521
it.
($(NSVALUE_MFILES)): Use $@ instead of $* in expr argument.
($(NSNUMBER_MFILES)): Likewise.
(Reported by <pfuchs@tag01.acnet.net>.)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@711 72102866-910b-0410-8b05-ffd578937521
objc_size_of_type to objc_sizeof_type. (Reported by
Gregor Hoffleit <flight@mathi.uni-heidelberg.DE>.)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@709 72102866-910b-0410-8b05-ffd578937521
"-Wl,-soname,libobjects.so.$(OBJECTS_VERSION)"; gcc does this
automatically. (Reported by Matthias Klose <doko@cs.tu-berlin.de>.)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@708 72102866-910b-0410-8b05-ffd578937521
<sys/param.h> instead. All users changed.
(_gnu_process_args): Malloc and fill NSArgv; assignment of char** from
*char[] isn't right.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@692 72102866-910b-0410-8b05-ffd578937521
old version no longer worked with PIC compilation, and didn't use the
common pattern rule for making the object file.
(NSNUMBER_CLUSTER, NSVALUE_CLUSTER): Variables removed.
(NSVALUE_MFILES): New variable, replacing NSVALUE_OFILES.
(NSNUMBER_MFILES): New variable, replacing NSNUMBER_OFILES.
(GNUSTEP_OBJS): Use new vars.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@688 72102866-910b-0410-8b05-ffd578937521
directory work.
(Makeconf): Include it after system configuration section, and from
$(srcdir).
(SHAREDLIB_CFLAGS, SHAREDLIB_ARFLAGS, USING_SHAREDLIB_CFLAGS,
USING_SHAREDLIB_ARFLAGS): Variables removed.
(ALL_CFLAGS, ALL_OBJCFLAGS): Don't use removed vars.
(%_pic.o: %.m): New pattern rule.
(%_pic.o: %.c): New pattern rule.
(all): Always build libobjects.a, optionally build .so version.
(libobjects.so): Use -shared. Link to ..$(OBJECTS_MAJOR_VERSION).
(install): Always install libobjects, optionally install .so version.
Install the headers from the $(srcdir).
(NSVALUE_OFILES, NSNUMBER_OFILES, NXStringTable_scan.c,
dynamic-load.h): Use $(srcdir) properly for these targets.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@680 72102866-910b-0410-8b05-ffd578937521
-removeElement:ifAbsent:. (Reported by Albert Mietus
<albert@gamp.hacom.nl>)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@679 72102866-910b-0410-8b05-ffd578937521
(SHAREDLIB_CFLAGS,SHAREDLIB_ARFLAGS): Set values here, not in
configure.in.
(USING_SHAREDLIB_CFLAGS,USING_SHAREDLIB_ARFLAGS): New vars, set by
configure.
(ALL_CFLAGS, ALL_OBJCFLAGS): Use them.
(libobjects.so.$(OBJECTS_VERSION): New target, replacing
libobjects.so. Use version numbers.
(install): Try to do the right thing with shared/non-shared libs.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@674 72102866-910b-0410-8b05-ffd578937521
(ALL_CFLAGS): Use it.
(ALL_OBJCFLAGS): Likewise.
(SHAREDLIB_ARFLAGS): New variable.
(libobjects.so): Use it; new target.
(all): Depend on configure variable.
(install): Changes to install shared library.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@666 72102866-910b-0410-8b05-ffd578937521
makes [NSMutableArray +array] and friends do the right thing.
([NSArray +arrayWithObjects:]): Likewise.
([NSMutableArray +arrayWithCapacity:]): Likewise.
([NSArray +arrayWithObject:]): Likewise; and fix condition on exception.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@659 72102866-910b-0410-8b05-ffd578937521
makes [NSMutableDictionary +dictionary] and friends do the right thing.
([NSDictionary +dictionaryWithObjects:forKeys:count:]): Likewise.
([NSMutableDictionary +dictionaryWithCapacity:]): Likewise.
(Problem reported by Kim Shrier <kim@media.com>.)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@658 72102866-910b-0410-8b05-ffd578937521
stack to hold temporary string, not malloc/free; just return the
string, not a copy. Conform to GNU coding standards in use of braces.
([NSProcessInfo -processName]): Likewise. Just return the string, not
a copy.
([NSProcessInfo -environment]): Likewise.
([NSProcessInfo -arguments]): Likewise.
(_gnu_arguments, _gnu_environment): Make them constant classes, not
mutable.
(_gnu_process_args): Alloc _gnu_processName NSString, don't get an
autoreleased string and then retain it. Initialize _gnu_arguments as
a constant NSArray, not NSMutableArray. Initialize _gnu_environment
as a constant NSDictionary, not NSMutableDictionary. Conform to the
GNU coding standards in use of braces.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@656 72102866-910b-0410-8b05-ffd578937521
exhausted. This interacts with [Dictionary -freeEnumState:] and [Set
-freeEnumState]. This will all be cleaned up when we start using
Albin Jones' tables. (This bug found by Allan Clearwaters.)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@634 72102866-910b-0410-8b05-ffd578937521
([NSGArray -objectAtIndex:]): Raise exception when index too high.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@630 72102866-910b-0410-8b05-ffd578937521
from forward_object_tables to forward_object_table; changed classes
from Stack (of Dictionary's) to Dictionary.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@625 72102866-910b-0410-8b05-ffd578937521
self.
([IndexedCollection -withElementsInReverseCall:]): Set flag to YES.
([IndexedCollection -safeWithElementsInReverseCall:]): Likewise.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@623 72102866-910b-0410-8b05-ffd578937521
malloc and its friends.
(__objc_malloc): Use it.
(__objc_valloc): Likewise.
(__objc_realloc): Likewise.
(__objc_calloc): Likewise.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@618 72102866-910b-0410-8b05-ffd578937521
seem to be supported. This probably means that aclocal.m4 needs to be
fixed so that it doesn't define SYS_AUTOLOAD in this case. No time
now. Adam?
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@614 72102866-910b-0410-8b05-ffd578937521
(send_release): Remove function.
([Collection -_releaseContents]): New method.
([Collection -dealloc]): Use it.
([Collection -empty]): Likewise.
([Collection -_safeWithElementsCallNoRetain:]): Use
-getNextElement:withEnumState instead of -withElementsCall: to avoid
cache_flush.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@613 72102866-910b-0410-8b05-ffd578937521
in_progress_table from a Set to an Array. I need to fix some problems
with Set.
([Coder -startEncodingInterconnectedObjects]): Deal with
interconnected_stack_height.
([Coder -finishEncodingInterconnectedObjects]): Likewise.
([Coder -startDecodingInterconnectedObjects]): Likewise.
([Coder -finishDecodingInterconnectedObjects]): Likewise.
([Coder -encodeRootObject:withName:]): Fix bug, whereby we weren't
giving what decodeObjectAt:withName: expected.
([Coder -encodeArrayOfType:at:count:withName:]): Don't encode the
array count.
([Coder -decodeArrayOfType:at:count:withName:]): Don't expect the
array count. Change type on 3rd argument.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@605 72102866-910b-0410-8b05-ffd578937521
argument type; pass the count directly, not as a pointer. The
encoding and decoding of array's no longer records the array count;
if necessary, you must do that yourself ahead of time.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@603 72102866-910b-0410-8b05-ffd578937521
([Coder -dealloc]): Release in_progress_table.
([Coder -_encodeObject:withName:isBycopy:isForwardReference:]):
If the object is in progress, treat it like a forward reference. Add
the object to the in_progess_table before really encoding the object;
remove it when done. (NOTE, this isn't an excuse not to set up
"encoding interconnected objects" mode.)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@600 72102866-910b-0410-8b05-ffd578937521
__libc_subinit functions before the global constructors, therefore
the subinit functions must be just vanilla C.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@590 72102866-910b-0410-8b05-ffd578937521
([NXConstantString -release]): Fix return type and return.
([NSString +_setConcreteClass:]): New method.
([NSString +_setConcreteCClass:]): New method.
([NSString +_setMutableConcreteClass:]): New method.
([NSString +_setMutableConcreteCClass:]): New method.
([NSString +_concreteClass]): New method.
([NSString +_concreteCClass]): New method.
([NSString +_mutableConcreteClass]): New method.
([NSString +_mutableConcreteCClass]): New method.
([NSString +initialize]): Initialize new statics that hold concrete
classes.
([NSString +stringWithCString:byteString]): Use concrete class method.
([NSString +stringWithCString:length:]): Likewise.
([NSString +stringWithFormat:]): Likewise.
([NSString +stringWithFormat:arguments:]): Likewise.
([NSString -mutableCopyWithZone:]): Likewise.
([NSMutableString +stringWithCapacity:]): Likewise.
([NSMutableString +stringWithCString:length:]): Likewise.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@542 72102866-910b-0410-8b05-ffd578937521