Commit graph

8960 commits

Author SHA1 Message Date
Richard Frith-MacDonald
39d2ab833a reorganise a little avoiding redundant system calls (setpgrp and ioctl TIOCNOTTY
are not needed if setsid is used).


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29334 72102866-910b-0410-8b05-ffd578937521
2010-01-20 17:17:12 +00:00
Richard Frith-MacDonald
a4ad8f1b90 remove some duplicate code
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29329 72102866-910b-0410-8b05-ffd578937521
2010-01-20 12:03:37 +00:00
Richard Frith-MacDonald
62ca624e12 make sure we remove task from controlling terminal.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29327 72102866-910b-0410-8b05-ffd578937521
2010-01-20 10:27:08 +00:00
Quentin Mathe
4147368f90 Mac OS X compatibility tweaks for NSFormatter coding and copying.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29268 72102866-910b-0410-8b05-ffd578937521
2010-01-11 22:08:21 +00:00
Richard Frith-MacDonald
0cbf8db121 Add assertions to trap runtime error
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29263 72102866-910b-0410-8b05-ffd578937521
2010-01-11 13:54:32 +00:00
Richard Frith-MacDonald
e13a513f78 Tidied for consistency
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29262 72102866-910b-0410-8b05-ffd578937521
2010-01-11 12:49:18 +00:00
Richard Frith-MacDonald
b43991f8f6 fixups in changes made to avoid compiler warnings.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29261 72102866-910b-0410-8b05-ffd578937521
2010-01-11 12:38:37 +00:00
Richard Frith-MacDonald
93b94d87b2 Fix error in class for zombie
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29259 72102866-910b-0410-8b05-ffd578937521
2010-01-11 11:29:44 +00:00
Richard Frith-MacDonald
b1976d23bb avoid compiler warnings
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29258 72102866-910b-0410-8b05-ffd578937521
2010-01-11 11:23:03 +00:00
Fred Kiefer
07b2bd4491 Set the concrete class, when this isn't already set. This was causing
compilation problems on gui with gcc 4.4


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29257 72102866-910b-0410-8b05-ffd578937521
2010-01-11 11:12:02 +00:00
Richard Frith-MacDonald
87b9234f30 fix typo
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29255 72102866-910b-0410-8b05-ffd578937521
2010-01-10 15:43:05 +00:00
Richard Frith-MacDonald
87c6d320c5 Tweaks for building with clang
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29254 72102866-910b-0410-8b05-ffd578937521
2010-01-10 14:38:16 +00:00
Richard Frith-MacDonald
83b5863735 tweak to avoid clang compilation failure
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29251 72102866-910b-0410-8b05-ffd578937521
2010-01-09 19:26:59 +00:00
Richard Frith-MacDonald
445ea4b5cb OSX compatibility update for newline character set.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29249 72102866-910b-0410-8b05-ffd578937521
2010-01-09 07:45:18 +00:00
Richard Frith-MacDonald
1c4d02d09d Fix for exception handling with libobjc2
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29247 72102866-910b-0410-8b05-ffd578937521
2010-01-09 07:24:05 +00:00
Eric Wasylishen
d4cee6fc57 Implement +[NSCharacterSet newlineCharacterSet]
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29219 72102866-910b-0410-8b05-ffd578937521
2010-01-05 22:28:12 +00:00
David Chisnall
c5103403f6 Refactored last two commits so that all of the real code is in GSIMap.h and is just called from the relevant classes, rather than copied and pasted everywhere. Also added fast enumeration support to GSCountedSet.
I think that's all of the classes that use GSIMaps for their implementation now fully supporting fast enumeration.  If there are any that I've missed, then just copy the methods from GSSet to implement them.  You just need to set the mutations pointer to something sensible (i.e. something that will change if the collection mutates) and then call the new GSIMapCountByEnumeratingWithStateObjectsCount() function.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29181 72102866-910b-0410-8b05-ffd578937521
2009-12-29 16:49:07 +00:00
David Chisnall
9e003700b4 Added fast enumeration support to GS[Mutable]Dictionary. This follows exactly the same pattern (and uses the same code as) GSSet. It's probably worth factoring out this code, because it is now used in four methods with almost no variation between them.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29180 72102866-910b-0410-8b05-ffd578937521
2009-12-29 16:21:01 +00:00
David Chisnall
41eb58f807 Added fast enumeration to NSSet. This changed the layout of GSMutableSet, adding a _version ivar, but this is a private class so it doesn't change the public ABI. All mutator methods in GSMutableSet must increment this variable, allowing thread-safe fast enumeration.
As with GSArray, GSSet uses its isa pointer for detecting mutations.  This may change as a result of adding KVO notifications, so it might not be the best solution, but I can't currently think of a way we could catch isa changing to [GSMutableSet class] and not changing to a hidden class...



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29179 72102866-910b-0410-8b05-ffd578937521
2009-12-29 15:59:14 +00:00
David Chisnall
34c77138fc Added implementations of some of the new (10.6) NSArray methods that take blocks as arguments. These all use the new GSBlocks.h macros, so compile cleanly with GCC, but can be used by code compiled by clang.
Some of these implementations are not as efficient as they could be (especially the ones that take an NSIndexSet as the first argument).  They also don't yet support concurrent enumeration.  Apple implements these using Grand Central.  We could possibly have a background thread that we send these things to (or use GCD if libdispatch is available).  It's not worth spawning a new thread for them, except in exceptional circumstances (and, unfortunately, we can't easily tell how expensive a single iteration of a block is.  Possibly we could time one block invocation, and if it's longer than some threshold make it concurrent, but it's probably not worth the effort).



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29176 72102866-910b-0410-8b05-ffd578937521
2009-12-27 16:49:52 +00:00
David Chisnall
05f18160df Added -enumerateObjectsUsingBlock: implementation to NSArray.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29174 72102866-910b-0410-8b05-ffd578937521
2009-12-27 15:25:12 +00:00
David Chisnall
7d0822ec49 Made NSArray conform to NSFastEnumeration. No idea why it wasn't already - it implements the methods...
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29173 72102866-910b-0410-8b05-ffd578937521
2009-12-27 14:41:42 +00:00
David Chisnall
de2a3ce038 Tidied up some compiler warnings in last commit.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29172 72102866-910b-0410-8b05-ffd578937521
2009-12-27 14:41:15 +00:00
David Chisnall
a19f62698a Fixed missing } in last commit.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29171 72102866-910b-0410-8b05-ffd578937521
2009-12-27 14:37:41 +00:00
David Chisnall
ea5f15deb0 Added private GSFastEnumeration header. This defines two macros that allow fast enumeration to be used inside GNUstep. Use, for example:
NSArray *a=  [NSArray arrayWithObjects: @"a", @"b", @"c", nil];
FOR_IN(NSString*, o, a)
	NSLog(@"%@", o);
END_FOR_IN(a)

This is equivalent to:

for (NSString *o in a)
{
	NSLog(@"%@", o);
}

On clang, it will be expanded to exactly that.  With GCC, it will be expanded to something equivalent to the code that Clang (or Apple GCC) would expand this to.

This is a private GNUstep header and is not intended for general use.  Outside of GNUstep, please use fast enumeration directly.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29170 72102866-910b-0410-8b05-ffd578937521
2009-12-27 14:34:10 +00:00
David Chisnall
2c401de4f4 Added GSBlocks header. This defines two macros:
DEFINE_BLOCK_TYPE() defines a new block type.
CALL_BLOCK() calls a block.

These use the compiler's native support for blocks if it exists, but otherwise implement the lower-level version.  Note that the structure defined by the fall-back versions is NOT a complete definition of the block layout, and copies of this structure should never be instantiated.

This does not allow non-blocks-aware compiles (like GCC) to create blocks, but it does allow them to use blocks.  This means that we can implement things like NSArray's -enumerateObjectsUsingBlock: without breaking GCC compatibility.  To do so, you'd first need to declare a block type in the header, like this:

DEFINE_BLOCK_TYPE(GSEnumeratorBlock, void, id, NSUInteger, BOOL*);

Then declare the method like this:

- (void)enumerateObjectsUsingBlock: (GSEnumeratorBlock)aBlock;

Finally, implement it like this:

- (void)enumerateObjectsUsingBlock: (GSEnumeratorBlock)aBlock
{
	NSUInteger count = 0;
	BOOL shouldStop = NO;
	for (obj in self)
	{
		CALL_BLOCK(aBlock, obj, count++, &shouldStop);
		if (shouldStop)
		{
			return;
		}
	}
}

If you compile this with clang -fblocks then it will work using Clang's native support for blocks.  If you compile it with GCC or clang without -fblocks then it will use the other version.  Note that this example uses fast enumeration, so will only compile with clang.  A proper GNUstep implementation should have some fall-back code for primitive compilers that don't support this either.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29169 72102866-910b-0410-8b05-ffd578937521
2009-12-27 13:54:51 +00:00
Wolfgang Lux
37b81067e9 Add an auxiliary method to NSUndoManager to support coalescing undo
operations in NSTextView.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29163 72102866-910b-0410-8b05-ffd578937521
2009-12-22 23:43:38 +00:00
Gregory John Casamento
6797a06652 Conditionally compile weak attribute.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29159 72102866-910b-0410-8b05-ffd578937521
2009-12-22 22:12:56 +00:00
David Chisnall
c19a717b67 Added call to objc_create_block_classes_as_subclasses_of() in NSObject's +load method. This is called as soon as NSObject is loaded and creates the _NSBlock family of classes, which are statically allocated in the runtime but not statically initialised. If you create blocks without linking GNUstep-base, the isa pointer in the block will point to a class that has all of its fields set to 0.
Any blocks will have their isa pointer set to the two classes statically allocated in libobjc, but these classes can't be used for message lookup (or introspection) until after the call.  This means that you can't send messages to blocks until after NSObject's +load method has been called.  This shouldn't be a problem in most code, but if you use __attribute__((constructor)) instead of a +load method then be careful about sending messages to blocks (you can still call them as normal). 



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29144 72102866-910b-0410-8b05-ffd578937521
2009-12-20 16:59:41 +00:00
Gregory John Casamento
e96f74362f * Source/GNUmakefile: Add synchronization.m to GNU_MFILES
and correct some formatting.
	* Source/synchronization.m: Fix @synchronize support on
	Windows.   The __weak__ attribute doesn't work on Windows.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29140 72102866-910b-0410-8b05-ffd578937521
2009-12-19 18:52:05 +00:00
Richard Frith-MacDonald
c7a2108c66 Readability tweak
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29115 72102866-910b-0410-8b05-ffd578937521
2009-12-11 15:13:16 +00:00
Gregory John Casamento
1292e4a62d * Source/synchronization.m: Corrected header text.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29114 72102866-910b-0410-8b05-ffd578937521
2009-12-11 06:42:12 +00:00
Richard Frith-MacDonald
74b7774beb GSMutableString inherits hash implementation from GSString
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29105 72102866-910b-0410-8b05-ffd578937521
2009-12-07 05:10:50 +00:00
Richard Frith-MacDonald
cc2898292c improve string comparison.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29104 72102866-910b-0410-8b05-ffd578937521
2009-12-07 05:02:55 +00:00
Richard Frith-MacDonald
cac753d5df Move hash implementation to GSString
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29096 72102866-910b-0410-8b05-ffd578937521
2009-12-04 09:52:14 +00:00
Richard Frith-MacDonald
ae04fdffe6 Perform port/name cleanup on startup.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29095 72102866-910b-0410-8b05-ffd578937521
2009-12-03 09:07:10 +00:00
Richard Frith-MacDonald
a961de6c5d fixup missing notification changes.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29087 72102866-910b-0410-8b05-ffd578937521
2009-12-01 08:30:41 +00:00
Richard Frith-MacDonald
925df9eb91 clarify
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29086 72102866-910b-0410-8b05-ffd578937521
2009-12-01 07:49:38 +00:00
Richard Frith-MacDonald
405dbae6f0 clarify doccumentation a little
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29085 72102866-910b-0410-8b05-ffd578937521
2009-12-01 07:47:29 +00:00
Richard Frith-MacDonald
0c3268b9d9 avoid warning log about unexpected response
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29075 72102866-910b-0410-8b05-ffd578937521
2009-11-27 13:05:26 +00:00
Richard Frith-MacDonald
99b0669aff improve error message
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29074 72102866-910b-0410-8b05-ffd578937521
2009-11-27 10:55:42 +00:00
Richard Frith-MacDonald
20a22bee1b Attempt notification queue fix
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29073 72102866-910b-0410-8b05-ffd578937521
2009-11-27 10:42:33 +00:00
Richard Frith-MacDonald
7b2b18f8ef stricter check of plist keys
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29071 72102866-910b-0410-8b05-ffd578937521
2009-11-27 09:19:02 +00:00
Richard Frith-MacDonald
449c94d4f6 encoding fixup for xml with bad dictionary key
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29070 72102866-910b-0410-8b05-ffd578937521
2009-11-27 09:10:15 +00:00
Richard Frith-MacDonald
b92879f11d Tweak for serializing 'xml' property lists
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29069 72102866-910b-0410-8b05-ffd578937521
2009-11-27 08:44:43 +00:00
Richard Frith-MacDonald
e0c9ae4e2d pass more info to notification functions
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29068 72102866-910b-0410-8b05-ffd578937521
2009-11-27 07:53:38 +00:00
Richard Frith-MacDonald
48499df0dd Add osx compatibility option
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29067 72102866-910b-0410-8b05-ffd578937521
2009-11-26 22:15:39 +00:00
Richard Frith-MacDonald
3992cde903 Fix for XML plist parsing.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29066 72102866-910b-0410-8b05-ffd578937521
2009-11-26 21:57:26 +00:00
Wolfgang Lux
26ec2df638 Write out proper XML encoding for control characters. Fixes a bug
where menu positions in GUI programs would appear not persistent.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29064 72102866-910b-0410-8b05-ffd578937521
2009-11-26 17:34:16 +00:00
Richard Frith-MacDonald
39bb68003d better attempt at workaround for broken libobjc
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29057 72102866-910b-0410-8b05-ffd578937521
2009-11-24 20:39:31 +00:00