libs-steptalk/Source/NSNumber+additions.m
Stefan Urbanek 9baf35ce65 NSFileManager additions
git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@15677 72102866-910b-0410-8b05-ffd578937521
2003-01-22 14:57:38 +00:00

133 lines
3.3 KiB
Objective-C

/**
NSNumber-additions.h
Various methods for NSNumber
Copyright (c) 2002 Free Software Foundation
Written by: Stefan Urbanek <urbanek@host.sk>
Date: 2000
This file is part of the StepTalk project.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02111, USA.
*/
#import <StepTalk/NSNumber+additions.h>
#import <StepTalk/STExterns.h>
#import <StepTalk/STStructure.h>
#import <Foundation/NSException.h>
#include <math.h>
@implementation NSNumber (STAdditions)
- add:(NSNumber *)number
{
return [NSNumber numberWithDouble:([self doubleValue]
+ [number doubleValue])];
}
- subtract:(NSNumber *)number
{
return [NSNumber numberWithDouble:([self doubleValue]
- [number doubleValue])];
}
- multiply:(NSNumber *)number
{
return [NSNumber numberWithDouble:([self doubleValue]
* [number doubleValue])];
}
- divide:(NSNumber *)number
{
if([number doubleValue] == 0.0)
{
[NSException raise:STGenericException
format:@"Division by zero"];
return self;
}
return [NSNumber numberWithDouble:([self doubleValue]
/ [number doubleValue])];
}
- modulo:(NSNumber *)number
{
if([number doubleValue] == 0.0)
{
[NSException raise:STGenericException
format:@"Division by zero"];
return self;
}
return [NSNumber numberWithDouble:(fmod([self doubleValue],
[number doubleValue]))];
}
- (unsigned int)isLessThan:(NSNumber *)number
{
return ([self doubleValue] < [number doubleValue]);
}
- (BOOL)isGreatherThan:(NSNumber *)number
{
return ([self doubleValue] > [number doubleValue]);
}
- (BOOL)isLessOrEqualThan:(NSNumber *)number
{
return ([self doubleValue] <= [number doubleValue]);
}
- (BOOL)isGreatherOrEqualThan:(NSNumber *)number
{
return ([self doubleValue] >= [number doubleValue]);
}
@end
@implementation NSNumber (STLogicOperations)
- (unsigned int)or:(NSNumber *)number
{
return ([self intValue] | [number intValue]);
}
- (unsigned int)and:(NSNumber *)number
{
return ([self intValue] & [number intValue]);
}
- (unsigned int)not
{
/* FIXME */
return ![self intValue];
}
@end
@implementation NSNumber (STStructure)
- rangeWith:(int)length
{
return [STStructure structureWithRange:NSMakeRange([self intValue], length)];
}
- pointWith:(float)y
{
return [STStructure structureWithPoint:NSMakePoint([self floatValue], y)];
}
- sizeWith:(float)h
{
return [STStructure structureWithSize:NSMakeSize([self floatValue], h)];
}
@end