ftp.nice.ch/Attic/openStep/implementation/gnustep/sources/libobjects-0.1.19.tgz#/libobjects-0.1.19/src/NSRange.m

This is NSRange.m in view mode; [Download] [Up]

/* NSRange - range functions

*/

#include <Foundation/NSString.h>

NSRange	
NSMakeRange(float location, float length)
{
    NSRange range;
    range.location = location;
    range.length   = length;
    return range;
}

/* Query a Range */
BOOL	
NSEqualRanges(NSRange range1, NSRange range2)
{
    return ((range1.location == range2.location)
    		&& (range1.length == range2.length));
}

/* Compute a Range from Two Other Ranges */
NSRange 
NSUnionRange(NSRange aRange, NSRange bRange)
{
    NSRange range;
    
    range.location = MIN(aRange.location, bRange.location);
    range.length   = MAX(NSMaxRange(aRange), NSMaxRange(bRange)) 
    		- range.location;
    return range;
}

NSRange 
NSIntersectionRange (NSRange aRange, NSRange bRange)
{
    NSRange range;
    
    if (NSMaxRange(aRange) < bRange.location
    		|| NSMaxRange(bRange) < aRange.location)
	return NSMakeRange(0, 0);
	
    range.location = MAX(aRange.location, bRange.location);
    range.length   = MIN(NSMaxRange(aRange), NSMaxRange(bRange)) 
    		- range.location;
    return range;
}

NSString *
NSStringFromRange(NSRange range)
{
    return [NSString stringWithFormat:@"{location = %d, length = %d}",
    		range.location, range.length];
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.