mirror of
https://github.com/gnustep/libs-base.git
synced 2025-05-30 00:11:26 +00:00
Some cleanup in preparation for next release.
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@22618 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
567a263baf
commit
f2398378e0
88 changed files with 570 additions and 425 deletions
|
@ -18,7 +18,8 @@
|
|||
|
||||
You should have received a copy of the GNU Library General Public
|
||||
License along with this library; if not, write to the Free
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111 USA.
|
||||
Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
Boston, MA 02111 USA.
|
||||
|
||||
*/
|
||||
#include "config.h"
|
||||
|
@ -30,6 +31,137 @@
|
|||
/* Test for ASCII whitespace which is safe for unicode characters */
|
||||
#define space(C) ((C) > 127 ? NO : isspace(C))
|
||||
|
||||
@implementation NSArray (GSCategories)
|
||||
|
||||
- (unsigned) insertionPosition: (id)item
|
||||
usingFunction: (NSComparisonResult (*)(id, id, void *))sorter
|
||||
context: (void *)context
|
||||
{
|
||||
unsigned count = [self count];
|
||||
unsigned upper = count;
|
||||
unsigned lower = 0;
|
||||
unsigned index;
|
||||
SEL oaiSel;
|
||||
IMP oai;
|
||||
|
||||
if (item == nil)
|
||||
{
|
||||
[NSException raise: NSGenericException
|
||||
format: @"Attempt to find position for nil object in array"];
|
||||
}
|
||||
if (sorter == 0)
|
||||
{
|
||||
[NSException raise: NSGenericException
|
||||
format: @"Attempt to find position with null comparator"];
|
||||
}
|
||||
|
||||
oaiSel = @selector(objectAtIndex:);
|
||||
oai = [self methodForSelector: oaiSel];
|
||||
/*
|
||||
* Binary search for an item equal to the one to be inserted.
|
||||
*/
|
||||
for (index = upper/2; upper != lower; index = lower+(upper-lower)/2)
|
||||
{
|
||||
NSComparisonResult comparison;
|
||||
|
||||
comparison = (*sorter)(item, (*oai)(self, oaiSel, index), context);
|
||||
if (comparison == NSOrderedAscending)
|
||||
{
|
||||
upper = index;
|
||||
}
|
||||
else if (comparison == NSOrderedDescending)
|
||||
{
|
||||
lower = index + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Now skip past any equal items so the insertion point is AFTER any
|
||||
* items that are equal to the new one.
|
||||
*/
|
||||
while (index < count && (*sorter)(item, (*oai)(self, oaiSel, index), context)
|
||||
!= NSOrderedAscending)
|
||||
{
|
||||
index++;
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
- (unsigned) insertionPosition: (id)item
|
||||
usingSelector: (SEL)comp
|
||||
{
|
||||
unsigned count = [self count];
|
||||
unsigned upper = count;
|
||||
unsigned lower = 0;
|
||||
unsigned index;
|
||||
NSComparisonResult (*imp)(id, SEL, id);
|
||||
SEL oaiSel;
|
||||
IMP oai;
|
||||
|
||||
if (item == nil)
|
||||
{
|
||||
[NSException raise: NSGenericException
|
||||
format: @"Attempt to find position for nil object in array"];
|
||||
}
|
||||
if (comp == 0)
|
||||
{
|
||||
[NSException raise: NSGenericException
|
||||
format: @"Attempt to find position with null comparator"];
|
||||
}
|
||||
imp = (NSComparisonResult (*)(id, SEL, id))[item methodForSelector: comp];
|
||||
if (imp == 0)
|
||||
{
|
||||
[NSException raise: NSGenericException
|
||||
format: @"Attempt to find position with unknown method"];
|
||||
}
|
||||
|
||||
oaiSel = @selector(objectAtIndex:);
|
||||
oai = [self methodForSelector: oaiSel];
|
||||
/*
|
||||
* Binary search for an item equal to the one to be inserted.
|
||||
*/
|
||||
for (index = upper/2; upper != lower; index = lower+(upper-lower)/2)
|
||||
{
|
||||
NSComparisonResult comparison;
|
||||
|
||||
comparison = (*imp)(item, comp, (*oai)(self, oaiSel, index));
|
||||
if (comparison == NSOrderedAscending)
|
||||
{
|
||||
upper = index;
|
||||
}
|
||||
else if (comparison == NSOrderedDescending)
|
||||
{
|
||||
lower = index + 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Now skip past any equal items so the insertion point is AFTER any
|
||||
* items that are equal to the new one.
|
||||
*/
|
||||
while (index < count
|
||||
&& (*imp)(item, comp, (*oai)(self, oaiSel, index)) != NSOrderedAscending)
|
||||
{
|
||||
index++;
|
||||
}
|
||||
return index;
|
||||
}
|
||||
@end
|
||||
|
||||
@implementation NSAttributedString (GSCategories)
|
||||
- (NSAttributedString*) attributedSubstringWithRange: (NSRange)aRange
|
||||
{
|
||||
GSOnceMLog(@"This method is deprecated, use -attributedSubstringFromRange:");
|
||||
return [self attributedSubstringFromRange: aRange];
|
||||
}
|
||||
@end
|
||||
|
||||
/**
|
||||
* Extension methods for the NSCalendarDate class
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue