Commit graph

267 commits

Author SHA1 Message Date
rfm
add5c5466a fixups to avoid future ABI breakage
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@36538 72102866-910b-0410-8b05-ffd578937521
2013-04-15 09:07:19 +00:00
rfm
cc87536fda experiment with slower but better hashes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@36344 72102866-910b-0410-8b05-ffd578937521
2013-03-12 16:11:10 +00:00
gcasa
8024b3a84b * Headers/Foundation/NSMetadata.h: Add _ to delegate.
* Source/GNUmakefile: Remove reference to NSMetadata.m
	* Source/NSMetadata.m: Remove from here and add OS specific
	implementations.
	* Source/unix/GNUmakefile: Add new file...
	* Source/unix/NSMetadata.m: UNIX implementation...
	* Source/win32/GNUmakefile: Add new file..
	* Source/win32/NSMetadata.m: Windows implementation.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35932 72102866-910b-0410-8b05-ffd578937521
2013-01-05 05:50:21 +00:00
gcasa
93fca6e752 * Headers/Foundation/NSMetadataQuery.h: Remove old file.
* Source/GNUmakefile: Change name to NSMetadata.[hm].
	* Source/NSMetadata.m: Add new file with correct name.
	* Source/NSMetadataQuery.m: Remove old file.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35804 72102866-910b-0410-8b05-ffd578937521
2012-11-18 16:54:08 +00:00
gcasa
79110c7ac7 * Headers/Foundation/Foundation.h: Add NSMetadataQuery.h to
include list.
	* Headers/Foundation/NSMetadataQuery.h: New header for class.
	* Source/GNUmakefile: Add NSMetadataQuery.[hm] to makefile.
	* Source/NSMetadataQuery.m: Abstract implementation for
	NSMetdataQuery.  The idea is much like NSFileStream and other
	classes which have operating system specific implementations.
	On linux this will, most likely, interface with locate/slocate.
	I'm not certain what it will talk to on Win32.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35803 72102866-910b-0410-8b05-ffd578937521
2012-11-18 16:37:57 +00:00
rfm
10c5815622 restructure for maintainability
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35598 72102866-910b-0410-8b05-ffd578937521
2012-09-24 09:07:55 +00:00
rfm
31634bffde Changes to restore sorting functiionality
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35579 72102866-910b-0410-8b05-ffd578937521
2012-09-20 09:32:00 +00:00
thebeing
b9b63476ef Completely overhaul how we do sorting in -base. GSSorting.h now defines an
interface that can be used for all sorting tasks in the library. The actual sort
algorithms to use are now plugable. Timsort is the new default sorting
algorithm, the existing algorithms, shellsort and quicksort, can still be
selected using a configure switch.

Also implement the new NSComparator (blocks) based sorting and insertion index
searching methods for NSMutableArray and NSArray.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35573 72102866-910b-0410-8b05-ffd578937521
2012-09-19 13:31:09 +00:00
gcasa
9407f87dea * Headers/Foundation/Foundation.h
* Headers/Foundation/NSScriptWhoseTests.h
	* Source/GNUmakefile
	* Source/NSObject+NSComparisonMethods.m: Move the
	comparison methods to the header for NSScriptWhoseTests.h,
	but don't define the abstract class since we don't support
	Apple script.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@35570 72102866-910b-0410-8b05-ffd578937521
2012-09-17 16:05:06 +00:00
rfm
d5c5a0bf87 evert/improve last changes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@34925 72102866-910b-0410-8b05-ffd578937521
2012-03-12 18:13:27 +00:00
rfm
41d2f1f1bf restructure a bit to make it easier to add namespace support.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@34924 72102866-910b-0410-8b05-ffd578937521
2012-03-12 13:27:32 +00:00
rfm
a8ce28dd9f tidyup private api
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@34029 72102866-910b-0410-8b05-ffd578937521
2011-10-19 15:25:38 +00:00
rfm
2f9fdd24b8 Use _POSIX_C_SOURCE=199506L
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33998 72102866-910b-0410-8b05-ffd578937521
2011-10-15 05:02:22 +00:00
rfm
a019a0480c windows compile fixes
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33974 72102866-910b-0410-8b05-ffd578937521
2011-10-12 16:23:52 +00:00
theraven
1d43e6de35 Added NSJSONSerialization (10.7) implementation. The code path reading from an NSInputStream is not well tested - please try and break it!
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33631 72102866-910b-0410-8b05-ffd578937521
2011-07-25 15:50:51 +00:00
rfm
cc524f2704 For the avoidance of confusion, remove references to obsolete header.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@33562 72102866-910b-0410-8b05-ffd578937521
2011-07-15 13:53:45 +00:00
rfm
47b6cf1384 tweaks for OpenBSD
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32766 72102866-910b-0410-8b05-ffd578937521
2011-04-03 09:54:57 +00:00
rfm
de2378bc87 simplify header layout
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32545 72102866-910b-0410-8b05-ffd578937521
2011-03-13 12:52:37 +00:00
rfm
2ef66ac0e0 add config check for blocks
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32539 72102866-910b-0410-8b05-ffd578937521
2011-03-13 08:20:17 +00:00
rfm
f229db0215 Update ChangeLog. reverse accidental addition of GSBlocks.m to makefile ...
we mustn't thave it there until it can be added without causing link error.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32533 72102866-910b-0410-8b05-ffd578937521
2011-03-11 09:17:34 +00:00
rfm
7d81f9ddc2 add missing headers etc
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32531 72102866-910b-0410-8b05-ffd578937521
2011-03-11 08:14:04 +00:00
rfm
671f5bcce5 fix gc heade rlocation.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32388 72102866-910b-0410-8b05-ffd578937521
2011-02-27 17:53:14 +00:00
theraven
fc0c897900 Move method declarations on blocks from EtoileFoundation into GNUstep.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@32376 72102866-910b-0410-8b05-ffd578937521
2011-02-26 13:10:49 +00:00
stefanbidi
9082447e48 Started working on NSCalendar. I have done very limited testing and would really appreciate if people could start testing the code here.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31741 72102866-910b-0410-8b05-ffd578937521
2010-12-16 02:57:31 +00:00
stefanbidi
d150a82634 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
theraven
ddbaf75490 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
rfm
c3362076bb avoid a couple of makefile warnings
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@31459 72102866-910b-0410-8b05-ffd578937521
2010-10-01 11:39:06 +00:00
rfm
43339cc05e 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
thebeing
632f343dc3 Fix makefile to copy common.h into $GNUSTEP_TARGET_DIR so that it is found when
building with a non-flattened namespace.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30908 72102866-910b-0410-8b05-ffd578937521
2010-07-01 10:15:37 +00:00
theraven
152e3bf818 Added class for catching C++ exceptions. When using libobjc2, you can catch C++ exceptions by writing @catch(CXXException *e). This will wrap the C++ exception in an Objective-C object and allow you to access it by sending a -thrownValue message to the object. This returns a pointer to the exception. For example, if the exception is an integer, you would retrieve it like this from Objective-C:
@catch(CXXException *e)
{
	int i = *(int*)[e thrownValue];
}

In ObjC++, you can also make sure that it really is an int, by doing:

assert(typeid(int) == *(std::type_info*)[e cxx_type_info]);

These interfaces are experimental and subject to change without notice.



git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30904 72102866-910b-0410-8b05-ffd578937521
2010-06-30 13:08:22 +00:00
rfm
2fd885d9b9 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
nicola
e9fd9c5e9b Fixed installation-domains.conf on Windows - merged back the path configuration into the main configure script to do it. Minor other fixes to configuration.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@30180 72102866-910b-0410-8b05-ffd578937521
2010-04-18 18:18:45 +00:00
gcasa
d0cf9c0c19 * Source/GNUmakefile: Remove reference to synchonization.m.
* Source/synchronization.m: Remove, since ObjectiveC2 has been
	merged.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29903 72102866-910b-0410-8b05-ffd578937521
2010-03-11 17:11:25 +00:00
rfm
95ced52af1 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
rfm
8cf8c5ff72 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
rfm
c01d7213e5 cleanup compatibility header installation
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29793 72102866-910b-0410-8b05-ffd578937521
2010-02-28 09:10:16 +00:00
rfm
8123799077 make runtime.h available to other code.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29684 72102866-910b-0410-8b05-ffd578937521
2010-02-20 06:49:32 +00:00
rfm
901b7b6975 Don't build synchronisation.m ... I don't think we need it any more.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29673 72102866-910b-0410-8b05-ffd578937521
2010-02-19 15:30:27 +00:00
rfm
97e7df0ac3 Attempt to link in ObjC2 compatibility code if we have an older runtime.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29670 72102866-910b-0410-8b05-ffd578937521
2010-02-19 12:51:02 +00:00
rfm
47810e15de 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
rfm
5f3f4452c2 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
rfm
126b991b12 remove obsolete invocation stuff
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29649 72102866-910b-0410-8b05-ffd578937521
2010-02-15 17:14:12 +00:00
rfm
c4e1e08185 Rewrite NSNumber code to compile on most systems and to mostly conform to
style/coding standards.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29639 72102866-910b-0410-8b05-ffd578937521
2010-02-15 10:58:34 +00:00
rfm
255df37b43 Restore working NSNumber pending fixes to new version to get it to compile
and conform to coding standards/style.  Should get svn trunk working again.


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29629 72102866-910b-0410-8b05-ffd578937521
2010-02-14 16:32:02 +00:00
theraven
e486341176 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
rfm
f13d56d8ec 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
nicola
5f32b1f53d Preliminary fix for allowing to build libraries in parallel
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@29553 72102866-910b-0410-8b05-ffd578937521
2010-02-11 17:50:01 +00:00
theraven
23b31db6b3 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
gcasa
b7894ad188 * 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
rfm
16ce1cd7b3 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