Commit graph

455 commits

Author SHA1 Message Date
Stefan Bidigaray
1b50ad217a Added locale keyword handling in -componentsFromLocaleIdentifier: and made a few minor modifications to NSLocale. Also included changelog entry for last commit.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31740 72102866-910b-0410-8b05-ffd578937521
2010-12-16 02:15:27 +00:00
Stefan Bidigaray
5db47c44eb Add new, completely empty and useless NSCalendar class.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31735 72102866-910b-0410-8b05-ffd578937521
2010-12-15 00:04:51 +00:00
Stefan Bidigaray
174ab7cde4 Implemented more NSLocale functionality.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31728 72102866-910b-0410-8b05-ffd578937521
2010-12-13 03:37:35 +00:00
Fred Kiefer
850c2fb314 Add a few OSX 10.6 methods for NSPropertyList.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31692 72102866-910b-0410-8b05-ffd578937521
2010-11-29 22:54:28 +00:00
Richard Frith-MacDonald
76b2adf16f cleanup foundation includes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31682 72102866-910b-0410-8b05-ffd578937521
2010-11-28 09:30:05 +00:00
David Chisnall
26561714f2 Reverted accidental include of uncommitted file.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31646 72102866-910b-0410-8b05-ffd578937521
2010-11-23 13:21:43 +00:00
David Chisnall
00095bc74c Undid accidental commit.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31645 72102866-910b-0410-8b05-ffd578937521
2010-11-23 13:20:34 +00:00
David Chisnall
e933a5dfee Added ChangeLog entry from last commit
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31644 72102866-910b-0410-8b05-ffd578937521
2010-11-23 13:16:53 +00:00
David Chisnall
089a23235a Revert accidental commit.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31638 72102866-910b-0410-8b05-ffd578937521
2010-11-20 17:04:41 +00:00
David Chisnall
a5335c34fb Added implementation of NSRegularExpression, from iOS 4 Foundation.
This class is a thin wrapper around libicu regular expressions, so if we don't
have libicu we simply don't compile it at all.  This will give people a linker
failure, rather than a nonfunctional class if they try to use GNUstep without
ICU with code that requires it.

The Apple documentation says that this class has a primitive method that takes
a block as an argument and that this method is called by others, so subclasses
can replace that block method without touching the convenience methods.  We
mimic this behaviour when compiling with block, but when compiling without them
it's a problem.  The current code contains some ugly hacks that will work in
normal usage but break with subclassing when not compiling with blocks.

This commit also includes a partial implementation of NSTextCheckingResult,
implementing the subset of its functionality required for NSRegularExpression
to work.

It also includes numerous fixes to GSICUString.  This is heavily used by
NSRegularExpression, to avoid copying strings when mapping between UText for
libicu and NSString for GNUstep.


Note: I don't have a copy of iOS anywhere to test this against, so it's
entirely possible that there are significant discrepancies between this
implementation of NSRegularExpression and the iOS version.  This version should
function exactly as the iOS one is described as functioning, but I think we've
all seen that Apple documentation refers more to hopes than facts.  Any testing
that someone who does have an ip{hone,od,ad} can do is very welcome.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31635 72102866-910b-0410-8b05-ffd578937521
2010-11-19 22:06:18 +00:00
David Chisnall
a0e6eafd31 Add NSLocale.h to the correct Foundation.h (why do we have two?).
Note: I'm fairly sure that all of the #import lines in Foundation.h are wrong; we should be using "foo.h" instead of <Foundation/foo.h>, or we will pick up the installed version when including this file while building GNUstep.  I don't want to make this change in case it is intentional to work around some broken ObjC compiler somewhere though...



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31595 72102866-910b-0410-8b05-ffd578937521
2010-11-07 15:53:30 +00:00
David Chisnall
e523978a5d Make NSNetServices use formal protocol, as in 10.6. When compiling with clang, use @optional, otherwise fall back to defining an empty protocol and defining an informal protocol with the methods.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31594 72102866-910b-0410-8b05-ffd578937521
2010-11-07 15:43:46 +00:00
David Chisnall
a3d6bd2eab Expose 10.6-compatible interface for per-thread assertion handlers.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31593 72102866-910b-0410-8b05-ffd578937521
2010-11-07 15:37:19 +00:00
David Chisnall
59ee016e3e Add NSLocale.h to Foundation.h
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31592 72102866-910b-0410-8b05-ffd578937521
2010-11-07 15:36:23 +00:00
Richard Frith-MacDonald
5b1fdea392 fix declaration
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31322 72102866-910b-0410-8b05-ffd578937521
2010-09-10 21:16:20 +00:00
Richard Frith-MacDonald
faa2feed90 avoid documentation warning
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31296 72102866-910b-0410-8b05-ffd578937521
2010-09-10 13:20:06 +00:00
David Chisnall
7a80adeb9b A huge blob of changes to make -base build with libobjc2, without using the old libobjc2 headers.
Most of these changes involve simply removing direct manipulation of any runtime structures and replacing them with runtime function calls.  For example class->name becomes class_getName(class) and so on.

libobjc2, like the Apple runtime, the NeXT runtime, and every version of the Objective-C spec, calls the class pointer in id isa.  A few files now have #define class_pointer isa at the top.  This line replaces class_pointer in the old GNU libobjc headers with isa so either class_pointer or isa can be used for accessing the class of an object.  Note: object_getClass() should be used in most cases because, in some future version of the runtime, this will skip things like lock classes and other hidden classes (e.g. KVO classes).

All of the old forwarding stuff has been removed.  Most of this stuff followed convoluted code paths that ended with an exception.  A few simply broke in exciting ways.  Hopefully no one has used them for the last ten years or so, but we can bring them back with some #ifndef stuff if they're really needed by anyone.

There is currently a bug in configure, which prevents dladdr() from being detected, so you need to manually tweak config.h to build - I have not fixed the fall-back code in objc-load.m to work with libobjc2, I just added a new version that uses the loader's functionality directly.  

Although -base now builds, it builds with a lot of warnings.  <string.h> is missing from a lot of files, so memcpy() and strlen() generate implicit function declaration warnings.  

Additionally, libobjc2 does still provide the sel_{get,register}_*() functions, but they're wrappers around the newer API ones.  These are deprecated and are not exposed in the headers.  Although they work, we should be replacing them with the libobjc2 versions as soon as possible.

This incorporates a patch by Eric.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31265 72102866-910b-0410-8b05-ffd578937521
2010-09-09 15:06:09 +00:00
Richard Frith-MacDonald
3564932935 remove obsolete typed stream inclusion
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31248 72102866-910b-0410-8b05-ffd578937521
2010-09-08 09:00:15 +00:00
Richard Frith-MacDonald
fd458700cb simplify last change
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31187 72102866-910b-0410-8b05-ffd578937521
2010-08-19 21:08:37 +00:00
Richard Frith-MacDonald
9390c9ae42 Guess at fix for bug #30766
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31186 72102866-910b-0410-8b05-ffd578937521
2010-08-19 21:02:29 +00:00
Eric Wasylishen
a17d3b1466 Fix typo (GSAPI_LAST -> GS_API_LATEST)
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31139 72102866-910b-0410-8b05-ffd578937521
2010-08-14 01:00:49 +00:00
Niels Grewe
4848c265e9 Make NSLocale use information about libicu availablity (perviously, it would
never build the ICU stuff because the corresponding macro wasn't defined).



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30995 72102866-910b-0410-8b05-ffd578937521
2010-07-19 07:54:52 +00:00
Richard Frith-MacDonald
2d4d2d6dc4 attempt to get avahi code working without breaking abi.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30957 72102866-910b-0410-8b05-ffd578937521
2010-07-13 12:13:31 +00:00
Niels Grewe
4db2b9cf28 Finnaly working NSNetServices via avahi-client.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30956 72102866-910b-0410-8b05-ffd578937521
2010-07-13 11:41:54 +00:00
Richard Frith-MacDonald
1452902204 Attempt to integrate Niels Grewe's avahi code
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30952 72102866-910b-0410-8b05-ffd578937521
2010-07-13 10:35:13 +00:00
Richard Frith-MacDonald
b417e6bf8c Workaround for runitme bug.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30864 72102866-910b-0410-8b05-ffd578937521
2010-06-26 14:04:09 +00:00
Richard Frith-MacDonald
1de22f472c initial addition of NSLocale
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30849 72102866-910b-0410-8b05-ffd578937521
2010-06-25 07:18:20 +00:00
Richard Frith-MacDonald
fd58513127 coding standard tweaks
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30824 72102866-910b-0410-8b05-ffd578937521
2010-06-22 17:44:51 +00:00
Dave Wetzel
af2be47796 * Headers/Foundation/NSFileManager.h
* Source/NSFileManager.m
add attributesOfItemAtPath:error:



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30822 72102866-910b-0410-8b05-ffd578937521
2010-06-22 16:49:34 +00:00
Richard Frith-MacDonald
3c6801eae6 Revert code which belongs in gdl2 rather than base
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30508 72102866-910b-0410-8b05-ffd578937521
2010-05-31 07:18:54 +00:00
Dave Wetzel
64f6e96d0a added encodingNamed:
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30507 72102866-910b-0410-8b05-ffd578937521
2010-05-31 06:34:28 +00:00
Richard Frith-MacDonald
20e7daac62 quick fix t get trunk compiling again.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30444 72102866-910b-0410-8b05-ffd578937521
2010-05-22 04:41:32 +00:00
Riccardo Mottola
67dcff87fa Guarded stdint.h inclusion
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30438 72102866-910b-0410-8b05-ffd578937521
2010-05-21 11:05:33 +00:00
Richard Frith-MacDonald
886aa2d93c add missing methods
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30283 72102866-910b-0410-8b05-ffd578937521
2010-05-03 06:00:45 +00:00
Fred Kiefer
4ad4022924 Add a few missing 10.4 initWithContentsOfXXX: methods. Fixes part of bug report #29736.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30279 72102866-910b-0410-8b05-ffd578937521
2010-05-02 11:02:26 +00:00
Richard Frith-MacDonald
4ce499bb84 fix comment accidentally copied from +load
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30131 72102866-910b-0410-8b05-ffd578937521
2010-04-12 13:22:35 +00:00
Richard Frith-MacDonald
0eb84927ee Correction by David Ayers
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30129 72102866-910b-0410-8b05-ffd578937521
2010-04-12 12:01:17 +00:00
Richard Frith-MacDonald
961c1db5a2 tweak
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30126 72102866-910b-0410-8b05-ffd578937521
2010-04-12 11:25:32 +00:00
Richard Frith-MacDonald
d365d287cf improve documentation ... really runtime features but we don't have dos for that
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30125 72102866-910b-0410-8b05-ffd578937521
2010-04-12 11:19:08 +00:00
Richard Frith-MacDonald
561bd93398 fix typos
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30049 72102866-910b-0410-8b05-ffd578937521
2010-03-27 05:31:54 +00:00
David Chisnall
c75d9cd218 Fix for Foundation.h being imported after CoreFoundation.h; don't redefine OSType if it's already defined.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30047 72102866-910b-0410-8b05-ffd578937521
2010-03-27 00:33:03 +00:00
Richard Frith-MacDonald
f784646663 generalize define from __MINGW32__ to __MINGW__
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30001 72102866-910b-0410-8b05-ffd578937521
2010-03-19 12:10:11 +00:00
Richard Frith-MacDonald
ee25a8f059 improve exception support
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29898 72102866-910b-0410-8b05-ffd578937521
2010-03-11 07:22:10 +00:00
Richard Frith-MacDonald
e21f059bf0 fix includes to iumports
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29894 72102866-910b-0410-8b05-ffd578937521
2010-03-10 14:53:51 +00:00
Adam Fedor
3eefcc5e1b Finish implementation
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29893 72102866-910b-0410-8b05-ffd578937521
2010-03-10 03:50:21 +00:00
Richard Frith-MacDonald
b9070bdab8 check for loss of data on decoding
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29887 72102866-910b-0410-8b05-ffd578937521
2010-03-09 10:09:01 +00:00
Richard Frith-MacDonald
f59ba481f0 Move NSStream addition declarations to separate file.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29853 72102866-910b-0410-8b05-ffd578937521
2010-03-05 12:41:40 +00:00
Richard Frith-MacDonald
1a4662001d Remove obsolete headers
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29850 72102866-910b-0410-8b05-ffd578937521
2010-03-05 10:32:15 +00:00
Richard Frith-MacDonald
39fc4419b0 further cleanup ... always use -zone method to get an object's zone ...
so people can safely write subclasses using different allocation schemes.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29847 72102866-910b-0410-8b05-ffd578937521
2010-03-05 09:30:18 +00:00
Richard Frith-MacDonald
4fcce15ee0 Fix header error spotted by Fred
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29817 72102866-910b-0410-8b05-ffd578937521
2010-03-02 09:51:12 +00:00
Richard Frith-MacDonald
e98d8f6da5 update argument types for latest api
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29811 72102866-910b-0410-8b05-ffd578937521
2010-03-01 05:43:08 +00:00
David Chisnall
1fed8159bb Added a couple of convenience methods on NSString (OS X 10.5 compatibility).
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29810 72102866-910b-0410-8b05-ffd578937521
2010-02-28 23:37:22 +00:00
Richard Frith-MacDonald
b59b875d50 mprove ifdef's for non-fragile-abi
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29809 72102866-910b-0410-8b05-ffd578937521
2010-02-28 19:43:35 +00:00
Richard Frith-MacDonald
8aadd12c71 remove a few obsolete, unused methods
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29785 72102866-910b-0410-8b05-ffd578937521
2010-02-27 06:53:43 +00:00
Richard Frith-MacDonald
6b3e53917e inon-fragile ivar update
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29780 72102866-910b-0410-8b05-ffd578937521
2010-02-26 11:04:14 +00:00
Richard Frith-MacDonald
e43d625338 improve instance variable hiding
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29779 72102866-910b-0410-8b05-ffd578937521
2010-02-26 10:25:35 +00:00
Richard Frith-MacDonald
62939c969a compatibility and portability fixes.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29736 72102866-910b-0410-8b05-ffd578937521
2010-02-25 10:00:48 +00:00
Richard Frith-MacDonald
3968c44cec Cleanup some deprecated code
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29730 72102866-910b-0410-8b05-ffd578937521
2010-02-25 08:19:52 +00:00
Richard Frith-MacDonald
b60b8bf73f Move gnustep specific macros
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29729 72102866-910b-0410-8b05-ffd578937521
2010-02-25 05:36:10 +00:00
Richard Frith-MacDonald
4497ba7bdd Build with non-fragile ivars.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29715 72102866-910b-0410-8b05-ffd578937521
2010-02-24 10:23:47 +00:00
Richard Frith-MacDonald
dd42cc24ba Move includes to NSObjCRuntime.h to match OSX
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29692 72102866-910b-0410-8b05-ffd578937521
2010-02-20 18:32:07 +00:00
Richard Frith-MacDonald
b107ae4ac4 preparation for possibly excluding GNUstep extensions by default
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29690 72102866-910b-0410-8b05-ffd578937521
2010-02-20 17:16:23 +00:00
Richard Frith-MacDonald
62011a8adf More include tweaks
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29671 72102866-910b-0410-8b05-ffd578937521
2010-02-19 14:21:02 +00:00
Richard Frith-MacDonald
85760d2563 move a bit more stuff into additions
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29666 72102866-910b-0410-8b05-ffd578937521
2010-02-18 16:18:54 +00:00
Richard Frith-MacDonald
6a1ff80510 Backward compatibility fixups
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29663 72102866-910b-0410-8b05-ffd578937521
2010-02-18 11:40:58 +00:00
Richard Frith-MacDonald
cccddb4573 Fix errors spotted by Fred
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29662 72102866-910b-0410-8b05-ffd578937521
2010-02-18 08:45:00 +00:00
Richard Frith-MacDonald
7e8e79ae94 avoid unnecessary requests for signatures to remote process
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29652 72102866-910b-0410-8b05-ffd578937521
2010-02-16 17:08:47 +00:00
Richard Frith-MacDonald
dc010099a9 Enable 64bit api changes matching OSX 10.5
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29650 72102866-910b-0410-8b05-ffd578937521
2010-02-15 17:51:07 +00:00
Richard Frith-MacDonald
eda0f191e7 Avoid accidental include of Foundation.h
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29620 72102866-910b-0410-8b05-ffd578937521
2010-02-14 13:52:29 +00:00
David Chisnall
99cb20ae16 Rewritten NSNumber implementation. This fixes several OS X-compatibility issues:
The -pointerValue method now returns the value cast to a pointer, not some random value, as the documentation says it should.  This is a change from OpenStep, which said:

> It's an error to send this message to an NSValue that doesn't store a pointer.

The OS X docs now say:

> The receiver's value as a pointer to void. If the receiver was not created to hold a pointer-sized data item, the result is undefined.

This means that any NSNumber created with a word-sized integer should return the same value.

Fixed a number of corner-cases in the compare: implementation caused by incorrect type promotion.  The OS X docs say:

> The compare: method follows the standard C rules for type conversion.

The OS X implementation does not do this.  We now match Apple's conversion rules bug-for-bug: Every value is stored in the smallest signed type that will hold it, unless there is no unsigned type that can hold it, in which case it is stored in an `unsigned long long`, comparisons between integer and floating point values cast both to a double, comparisons between integer types perform a real comparison (so an unsigned long long is always greater than any negative number, at any precision).  The Apple implementation is actually quite sane, it is just completely unrelated to the documentation in any way.

We now use the same range of reusable objects.  Note that there is an error in Cocoa Design Patterns in the description of how Apple's implementation works.  Do not use this as a reference.

We now return `nil` when an NSNumber is sent an -init message.  This is consistent with Apple's implementation but breaks some things in the GNUstep test suite (which RFM said he will fix).

There is a small change in NSValue.h so that the locale parameter is now an `id` not an `NSString*`.  This is because, under recent OS X, it may also be an `NSLocale` instance.  I am not sure how much GNUstep supports `NSLocale`, but this change shouldn't affect anything.

The new (private) GSNumberTypes.h file lets you define macros that are instantiated with each of the names of primitive C types.  These might be useful for simplifying other classes that have -intValue, -floatValue, and so on methods, such as the `NSCell` family.

The old NSConcreteNumberTemplate and NSConcreteNumber stuff has been removed.  The code is now a bit more than 10% of the size of the old NSNumber code, and is hopefully maintainable now, so the next change won't require a complete rewrite.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29618 72102866-910b-0410-8b05-ffd578937521
2010-02-14 12:57:44 +00:00
Richard Frith-MacDonald
79ce6ac700 minor include fixups
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29616 72102866-910b-0410-8b05-ffd578937521
2010-02-14 11:01:08 +00:00
Richard Frith-MacDonald
21d597e740 merge back reorganisation branch
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29615 72102866-910b-0410-8b05-ffd578937521
2010-02-14 10:48:10 +00:00
David Chisnall
6bf6ec959b Made NSAllocateObject() and NSDeallocateObject() use / take id instead of NSObject*. This matches Apple's definition and gets rid of 'assignment / initialization from distinct Objective-C type' warnings when you use NSAllocateObject() to create an instance without an explicit cast.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29611 72102866-910b-0410-8b05-ffd578937521
2010-02-13 17:33:23 +00:00
Richard Frith-MacDonald
55d4f390aa re-instate cleaned up version of string proxy code.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29518 72102866-910b-0410-8b05-ffd578937521
2010-02-09 06:07:10 +00:00
Richard Frith-MacDonald
baf489409c Farious fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29513 72102866-910b-0410-8b05-ffd578937521
2010-02-08 17:52:36 +00:00
Richard Frith-MacDonald
6c84f23ae1 Coimplete operation queue implementation
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29508 72102866-910b-0410-8b05-ffd578937521
2010-02-08 10:34:27 +00:00
Richard Frith-MacDonald
0dec7f1b97 NSOperationQueue additions
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29495 72102866-910b-0410-8b05-ffd578937521
2010-02-06 17:10:16 +00:00
Richard Frith-MacDonald
9f98d4c443 tweak for OSX compatibility
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29480 72102866-910b-0410-8b05-ffd578937521
2010-02-05 11:41:24 +00:00
Richard Frith-MacDonald
1c11dee837 implement and document NSOperation
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29476 72102866-910b-0410-8b05-ffd578937521
2010-02-04 16:47:45 +00:00
Eric Wasylishen
3110312b36 define CGFLOAT_DEFINED when defining CGFloat.
Also check that NSINTEGER_DEFINED and CGFLOAT_DEFINED are undefined
before defining NSInterger and CGFloat.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29351 72102866-910b-0410-8b05-ffd578937521
2010-01-21 22:41:52 +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
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
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
Richard Frith-MacDonald
02a93a74af Have -drain call -release
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28950 72102866-910b-0410-8b05-ffd578937521
2009-11-04 05:51:34 +00:00
Richard Frith-MacDonald
febe972488 new initialisation function.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28806 72102866-910b-0410-8b05-ffd578937521
2009-10-12 14:38:49 +00:00
Richard Frith-MacDonald
e4a6d046be cleanups
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28787 72102866-910b-0410-8b05-ffd578937521
2009-10-10 08:16:17 +00:00
Richard Frith-MacDonald
a6c9c8749a lrge changes to remove mframe
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28778 72102866-910b-0410-8b05-ffd578937521
2009-10-05 16:00:28 +00:00
Richard Frith-MacDonald
e93dcbf681 fix leak
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28771 72102866-910b-0410-8b05-ffd578937521
2009-10-04 10:05:14 +00:00
Richard Frith-MacDonald
447a3d1c69 fix typos
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28694 72102866-910b-0410-8b05-ffd578937521
2009-09-17 08:52:03 +00:00
Richard Frith-MacDonald
640ae938c6 Cleanups and minor bugfixes for new code.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28665 72102866-910b-0410-8b05-ffd578937521
2009-09-12 07:37:00 +00:00
David Chisnall
95c9e08026 Rewrote exception callstack generation to use the backtrace() and
backtrace_symbols() code.  Implemented the -callStackSymbols method from
	10.5 using this.  For this to be enabled, the configure script will
	require a small modification, which Gregory will add later.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28662 72102866-910b-0410-8b05-ffd578937521
2009-09-11 16:14:45 +00:00
David Chisnall
47eab60ed8 Added implementations of the hooks provided by the new runtime. This brings
NSObject up to feature-parity with the OS X 10.5 implementation when using the
new runtime and up to feature-parity with the 10.6 implementation if you are
using the new runtime and compiling with clang.

Also removes the objc_mutex_wibble stuff from NSObject in favour of just using
NSLocks (which, with the new implementation, are now faster than using
objc_mutex_stuff).



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28657 72102866-910b-0410-8b05-ffd578937521
2009-09-10 20:14:42 +00:00
Richard Frith-MacDonald
36e7376518 remove publicly visible ivars for future abi stability.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28626 72102866-910b-0410-8b05-ffd578937521
2009-09-07 16:25:04 +00:00
Richard Frith-MacDonald
418330b29d Avoid exposing pthread details in NSLock.h (as much as possible without
impacting performance).


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28612 72102866-910b-0410-8b05-ffd578937521
2009-09-06 10:56:04 +00:00
Richard Frith-MacDonald
b4ddaee78f Minor fixes/tweaks
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28605 72102866-910b-0410-8b05-ffd578937521
2009-09-03 09:45:23 +00:00
David Chisnall
d7a877b871 * Source/NSLock.m
* Headers/Foundation/NSLock.h
	Completely rewritten implementations of NSLock.h classes.  These are now
	faster, more complete, OS X-compatible, and most importantly actually
	work.  The old ones, for example, called functions that were not
	implemented on Windows.  
	* Source/NSThread.m
	Call pthread functions directly in NSThread instead of via the libobjc
	abstraction layer.  Also fixed a few issues, such as GC not being
	initialized properly for NSThread subclasses that override -main (Javaism
	supported by OS X) and tidies up the code in several places, removing
	premature optimizations, especially those that introduce a test for an
	unlikely case at the start of a method and thus slow everything down.

	As a result of this change, GNUstep now depends on an implementation of
	POSIX threads.  This is included as standard on all modern UNIX systems,
	and as an option on less-modern UNIX systems and non-UNIX systems,
	including Windows.  If you are building GNUstep on Windows, please install
	the pthreads-win32 package, available from:

	http://sourceware.org/pthreads-win32/

	PLEASE TEST THIS!  There may be some code that depended on the old
	behaviour.  I have been running the new NSLock implementation on FreeBSD
	for a few weeks without issue; please report to me any problems that you
	have on your platform.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@28598 72102866-910b-0410-8b05-ffd578937521
2009-09-02 13:03:13 +00:00