mirror of
https://github.com/gnustep/libs-gdl2.git
synced 2025-06-01 09:42:28 +00:00
* EOAccess/EOAttribute.m:
o introducing new number types: ('u' for long long / int8 and 'U' for unsigned long long) * EOAdaptors/Postgres95/Postgres95Adaptor.m: o added int8, bigint * EOAdaptors/Postgres95/Postgres95Channel.m: o handling bigint o fixed types for int2 and int8 * EOAdaptors/Postgres95/Postgres95Values.m: o added missing number types o introducing new number types: ('u' for long long / int8 and 'U' for unsigned long long) * EOControl/EONSAddOns.h/m o added number accessors for NSString o added NSObject -performSelector:withObject:withObject:withObject: git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/gdl2/trunk@18221 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
parent
5f094d2bc2
commit
8656ecbacf
7 changed files with 193 additions and 6 deletions
19
ChangeLog
19
ChangeLog
|
@ -1,3 +1,22 @@
|
||||||
|
2003-11-28 Manuel Guesdon <mguesdon@orange-concept.com>
|
||||||
|
|
||||||
|
* EOAccess/EOAttribute.m:
|
||||||
|
o introducing new number types:
|
||||||
|
('u' for long long / int8 and 'U' for unsigned long long)
|
||||||
|
* EOAdaptors/Postgres95/Postgres95Adaptor.m:
|
||||||
|
o added int8, bigint
|
||||||
|
* EOAdaptors/Postgres95/Postgres95Channel.m:
|
||||||
|
o handling bigint
|
||||||
|
o fixed types for int2 and int8
|
||||||
|
* EOAdaptors/Postgres95/Postgres95Values.m:
|
||||||
|
o added missing number types
|
||||||
|
o introducing new number types:
|
||||||
|
('u' for long long / int8 and 'U' for unsigned long long)
|
||||||
|
* EOControl/EONSAddOns.h/m
|
||||||
|
o added number accessors for NSString
|
||||||
|
o added NSObject
|
||||||
|
-performSelector:withObject:withObject:withObject:
|
||||||
|
|
||||||
2003-10-24 David Ayers <d.ayers@inode.at>
|
2003-10-24 David Ayers <d.ayers@inode.at>
|
||||||
|
|
||||||
* EOControl/EONSAddOns.h (GDL2_BUFFER): Added experimental macro.
|
* EOControl/EONSAddOns.h (GDL2_BUFFER): Added experimental macro.
|
||||||
|
|
|
@ -1317,6 +1317,36 @@ return nexexp
|
||||||
if ([[self valueType] isEqualToString: @"i"] == YES)
|
if ([[self valueType] isEqualToString: @"i"] == YES)
|
||||||
*valueP = [NSNumber numberWithInt:
|
*valueP = [NSNumber numberWithInt:
|
||||||
[*valueP intValue]];
|
[*valueP intValue]];
|
||||||
|
else if ([_valueType isEqualToString: @"I"] == YES)
|
||||||
|
*valueP = [NSNumber numberWithUnsignedInt:
|
||||||
|
[*valueP unsignedIntValue]];
|
||||||
|
else if ([_valueType isEqualToString: @"c"] == YES)
|
||||||
|
*valueP = [NSNumber numberWithChar:
|
||||||
|
[*valueP intValue]];
|
||||||
|
else if ([_valueType isEqualToString: @"C"] == YES)
|
||||||
|
*valueP = [NSNumber numberWithUnsignedChar:
|
||||||
|
[*valueP unsignedIntValue]];
|
||||||
|
else if ([_valueType isEqualToString: @"s"] == YES)
|
||||||
|
*valueP = [NSNumber numberWithShort:
|
||||||
|
[*valueP shortValue]];
|
||||||
|
else if ([_valueType isEqualToString: @"S"] == YES)
|
||||||
|
*valueP = [NSNumber numberWithUnsignedShort:
|
||||||
|
[*valueP unsignedShortValue]];
|
||||||
|
else if ([_valueType isEqualToString: @"l"] == YES)
|
||||||
|
*valueP = [NSNumber numberWithLong:
|
||||||
|
[*valueP longValue]];
|
||||||
|
else if ([_valueType isEqualToString: @"L"] == YES)
|
||||||
|
*valueP = [NSNumber numberWithUnsignedLong:
|
||||||
|
[*valueP unsignedLongValue]];
|
||||||
|
else if ([_valueType isEqualToString: @"u"] == YES)
|
||||||
|
*valueP = [NSNumber numberWithLongLong:
|
||||||
|
[*valueP longLongValue]];
|
||||||
|
else if ([_valueType isEqualToString: @"U"] == YES)
|
||||||
|
*valueP = [NSNumber numberWithUnsignedLongLong:
|
||||||
|
[*valueP unsignedLongLongValue]];
|
||||||
|
else if ([_valueType isEqualToString: @"f"] == YES)
|
||||||
|
*valueP = [NSNumber numberWithFloat:
|
||||||
|
[*valueP floatValue]];
|
||||||
else
|
else
|
||||||
*valueP = [NSNumber numberWithDouble:
|
*valueP = [NSNumber numberWithDouble:
|
||||||
[*valueP doubleValue]];
|
[*valueP doubleValue]];
|
||||||
|
|
|
@ -175,7 +175,7 @@ static NSString *externalTypeNames[] = {
|
||||||
@"char", @"char2", @"char4", @"char8", @"char16", @"filename",
|
@"char", @"char2", @"char4", @"char8", @"char16", @"filename",
|
||||||
@"date", @"reltime", @"time", @"tinterval", @"abstime", @"timestamp",
|
@"date", @"reltime", @"time", @"tinterval", @"abstime", @"timestamp",
|
||||||
@"real", @"double precision", @"float4", @"float8",
|
@"real", @"double precision", @"float4", @"float8",
|
||||||
@"int4", @"int2",
|
@"bigint", @"int8", @"int4", @"int2",
|
||||||
@"oid", @"oid8", @"oidint2", @"oidint4", @"oidchar16",
|
@"oid", @"oid8", @"oidint2", @"oidint4", @"oidchar16",
|
||||||
@"varchar", @"bpchar",
|
@"varchar", @"bpchar",
|
||||||
@"numeric", @"decimal", @"cid", @"tid", @"xid",
|
@"numeric", @"decimal", @"cid", @"tid", @"xid",
|
||||||
|
@ -187,7 +187,7 @@ static NSString *internalTypeNames[] = {
|
||||||
@"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber",
|
@"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber",
|
||||||
@"NSCalendarDate", @"NSCalendarDate", @"NSCalendarDate", @"NSCalendarDate", @"NSCalendarDate", @"NSCalendarDate",
|
@"NSCalendarDate", @"NSCalendarDate", @"NSCalendarDate", @"NSCalendarDate", @"NSCalendarDate", @"NSCalendarDate",
|
||||||
@"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber",
|
@"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber",
|
||||||
@"NSNumber", @"NSNumber",
|
@"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber",
|
||||||
@"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber",
|
@"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber", @"NSNumber",
|
||||||
@"NSString", @"NSString",
|
@"NSString", @"NSString",
|
||||||
@"NSDecimalNumber", @"NSDecimalNumber", @"NSDecimalNumber", @"NSDecimalNumber", @"NSDecimalNumber",
|
@"NSDecimalNumber", @"NSDecimalNumber", @"NSDecimalNumber", @"NSDecimalNumber", @"NSDecimalNumber",
|
||||||
|
|
|
@ -1385,11 +1385,11 @@ each key
|
||||||
else if ([externalName isEqual: @"float8"])
|
else if ([externalName isEqual: @"float8"])
|
||||||
valueClass = @"NSNumber", valueType = @"d";
|
valueClass = @"NSNumber", valueType = @"d";
|
||||||
else if ([externalName isEqual: @"int2"])
|
else if ([externalName isEqual: @"int2"])
|
||||||
valueClass = @"NSNumber", valueType = @"i";
|
valueClass = @"NSNumber", valueType = @"s";
|
||||||
else if ([externalName isEqual: @"int4"])
|
else if ([externalName isEqual: @"int4"])
|
||||||
valueClass = @"NSNumber", valueType = @"i";
|
valueClass = @"NSNumber", valueType = @"i";
|
||||||
else if ([externalName isEqual: @"int8"])
|
else if ([externalName isEqual: @"int8"] || [externalName isEqual: @"bigint"])
|
||||||
valueClass = @"NSNumber", valueType = @"l";
|
valueClass = @"NSNumber", valueType = @"u";
|
||||||
else if ([externalName isEqual: @"oid"])
|
else if ([externalName isEqual: @"oid"])
|
||||||
valueClass = @"NSNumber", valueType = @"l";
|
valueClass = @"NSNumber", valueType = @"l";
|
||||||
else if ([externalName isEqual: @"varchar"])
|
else if ([externalName isEqual: @"varchar"])
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
/**
|
||||||
Postgres95Values.m
|
Postgres95Values.m
|
||||||
|
|
||||||
Copyright (C) 2000-2002 Free Software Foundation, Inc.
|
Copyright (C) 2000-2003 Free Software Foundation, Inc.
|
||||||
|
|
||||||
Author: Mirko Viviani <mirko.viviani@rccr.cremona.it
|
Author: Mirko Viviani <mirko.viviani@rccr.cremona.it
|
||||||
Date: February 2000
|
Date: February 2000
|
||||||
|
@ -54,6 +54,7 @@ RCS_ID("$Id$")
|
||||||
|
|
||||||
|
|
||||||
#include <EOAccess/EOAttribute.h>
|
#include <EOAccess/EOAttribute.h>
|
||||||
|
#include <EOControl/EONSAddOns.h>
|
||||||
|
|
||||||
#include <Postgres95EOAdaptor/Postgres95Adaptor.h>
|
#include <Postgres95EOAdaptor/Postgres95Adaptor.h>
|
||||||
#include <Postgres95EOAdaptor/Postgres95Channel.h>
|
#include <Postgres95EOAdaptor/Postgres95Channel.h>
|
||||||
|
@ -121,6 +122,26 @@ For efficiency reasons, the returned value is NOT autoreleased !
|
||||||
value = [[NSDecimalNumber alloc] initWithString: str];
|
value = [[NSDecimalNumber alloc] initWithString: str];
|
||||||
else if ([[attribute valueType] isEqualToString: @"i"])
|
else if ([[attribute valueType] isEqualToString: @"i"])
|
||||||
value = [[NSNumber alloc] initWithInt: [str intValue]];
|
value = [[NSNumber alloc] initWithInt: [str intValue]];
|
||||||
|
else if ([[attribute valueType] isEqualToString: @"I"])
|
||||||
|
value = [[NSNumber alloc] initWithUnsignedInt: [str unsignedIntValue]];
|
||||||
|
else if ([[attribute valueType] isEqualToString: @"c"])
|
||||||
|
value = [[NSNumber alloc] initWithChar: [str intValue]];
|
||||||
|
else if ([[attribute valueType] isEqualToString: @"C"])
|
||||||
|
value = [[NSNumber alloc] numberWithUnsignedChar: [str unsignedIntValue]];
|
||||||
|
else if ([[attribute valueType] isEqualToString: @"s"])
|
||||||
|
value = [[NSNumber alloc] initWithShort: [str shortValue]];
|
||||||
|
else if ([[attribute valueType] isEqualToString: @"S"])
|
||||||
|
value = [[NSNumber alloc] initWithUnsignedShort: [str unsignedShortValue]];
|
||||||
|
else if ([[attribute valueType] isEqualToString: @"l"])
|
||||||
|
value = [[NSNumber alloc] initWithLong: [str longValue]];
|
||||||
|
else if ([[attribute valueType] isEqualToString: @"L"])
|
||||||
|
value = [[NSNumber alloc] initWithUnsignedLong: [str unsignedLongValue]];
|
||||||
|
else if ([[attribute valueType] isEqualToString: @"u"])
|
||||||
|
value = [[NSNumber alloc] initWithLongLong: [str longLongValue]];
|
||||||
|
else if ([[attribute valueType] isEqualToString: @"U"])
|
||||||
|
value = [[NSNumber alloc] initWithUnsignedLongLong: [str unsignedLongLongValue]];
|
||||||
|
else if ([[attribute valueType] isEqualToString: @"f"])
|
||||||
|
value = [[NSNumber alloc] initWithFloat: [str floatValue]];
|
||||||
else
|
else
|
||||||
value = [[NSNumber alloc] initWithDouble: [str doubleValue]];
|
value = [[NSNumber alloc] initWithDouble: [str doubleValue]];
|
||||||
|
|
||||||
|
|
|
@ -103,4 +103,29 @@ GDL2GlobalRecursiveLock();
|
||||||
- (int)parsedFirstVersionSubstring;
|
- (int)parsedFirstVersionSubstring;
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
//Ayers: Review
|
||||||
|
/* Do not rely on these. */
|
||||||
|
@interface NSString (StringToNumber)
|
||||||
|
-(unsigned int)unsignedIntValue;
|
||||||
|
-(short)shortValue;
|
||||||
|
-(unsigned short)unsignedShortValue;
|
||||||
|
-(long)longValue;
|
||||||
|
-(unsigned long)unsignedLongValue;
|
||||||
|
-(long long)longLongValue;
|
||||||
|
-(unsigned long long)unsignedLongLongValue;
|
||||||
|
@end
|
||||||
|
|
||||||
|
@interface NSObject (PerformSelect3)
|
||||||
|
/**
|
||||||
|
* Causes the receiver to execute the method implementation corresponding
|
||||||
|
* to aSelector and returns the result.<br />
|
||||||
|
* The method must be one which takes three arguments and returns an object.
|
||||||
|
* <br />Raises NSInvalidArgumentException if given a null selector.
|
||||||
|
*/
|
||||||
|
- (id) performSelector: (SEL)aSelector
|
||||||
|
withObject: (id) object1
|
||||||
|
withObject: (id) object2
|
||||||
|
withObject: (id) object3;
|
||||||
|
|
||||||
|
@end
|
||||||
#endif /* __EONSAddOns_h__ */
|
#endif /* __EONSAddOns_h__ */
|
||||||
|
|
|
@ -623,3 +623,95 @@ static NSRecursiveLock *rlock = nil;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
|
@implementation NSString (StringToNumber)
|
||||||
|
-(unsigned int)unsignedIntValue
|
||||||
|
{
|
||||||
|
long v=atol([self lossyCString]);
|
||||||
|
if (v<0 || v >UINT_MAX)
|
||||||
|
{
|
||||||
|
[NSException raise: NSInvalidArgumentException
|
||||||
|
format: @"%ld is not an unsigned int",v];
|
||||||
|
};
|
||||||
|
return (unsigned int)v;
|
||||||
|
};
|
||||||
|
-(short)shortValue
|
||||||
|
{
|
||||||
|
int v=atoi([self lossyCString]);
|
||||||
|
if (v<SHRT_MIN || v>SHRT_MAX)
|
||||||
|
{
|
||||||
|
[NSException raise: NSInvalidArgumentException
|
||||||
|
format: @"%d is not a short",v];
|
||||||
|
};
|
||||||
|
return (short)v;
|
||||||
|
};
|
||||||
|
-(unsigned short)unsignedShortValue;
|
||||||
|
{
|
||||||
|
int v=atoi([self lossyCString]);
|
||||||
|
if (v<0 || v>USHRT_MAX)
|
||||||
|
{
|
||||||
|
[NSException raise: NSInvalidArgumentException
|
||||||
|
format: @"%d is not an unsigned short",v];
|
||||||
|
};
|
||||||
|
return (unsigned short)v;
|
||||||
|
};
|
||||||
|
|
||||||
|
-(long)longValue
|
||||||
|
{
|
||||||
|
return atol([self lossyCString]);
|
||||||
|
};
|
||||||
|
|
||||||
|
-(unsigned long)unsignedLongValue;
|
||||||
|
{
|
||||||
|
long long v=atoll([self lossyCString]);
|
||||||
|
if (v<0 || v>ULONG_MAX)
|
||||||
|
{
|
||||||
|
[NSException raise: NSInvalidArgumentException
|
||||||
|
format: @"%lld is not an unsigned long",v];
|
||||||
|
};
|
||||||
|
return (unsigned long)v;
|
||||||
|
};
|
||||||
|
|
||||||
|
-(long long)longLongValue
|
||||||
|
{
|
||||||
|
long long v=atoll([self lossyCString]);
|
||||||
|
return v;
|
||||||
|
};
|
||||||
|
|
||||||
|
-(unsigned long long)unsignedLongLongValue
|
||||||
|
{
|
||||||
|
return strtoull([self lossyCString],NULL,10);
|
||||||
|
};
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
||||||
|
@implementation NSObject (PerformSelect3)
|
||||||
|
//Ayers: Review (Do we really need this?)
|
||||||
|
/**
|
||||||
|
* Causes the receiver to execute the method implementation corresponding
|
||||||
|
* to aSelector and returns the result.<br />
|
||||||
|
* The method must be one which takes three arguments and returns an object.
|
||||||
|
* <br />Raises NSInvalidArgumentException if given a null selector.
|
||||||
|
*/
|
||||||
|
- (id) performSelector: (SEL)aSelector
|
||||||
|
withObject: (id) object1
|
||||||
|
withObject: (id) object2
|
||||||
|
withObject: (id) object3
|
||||||
|
{
|
||||||
|
IMP msg;
|
||||||
|
|
||||||
|
if (aSelector == 0)
|
||||||
|
[NSException raise: NSInvalidArgumentException
|
||||||
|
format: @"%@ null selector given", NSStringFromSelector(_cmd)];
|
||||||
|
|
||||||
|
msg = get_imp(GSObjCClass(self), aSelector);
|
||||||
|
if (!msg)
|
||||||
|
{
|
||||||
|
[NSException raise: NSGenericException
|
||||||
|
format: @"invalid selector passed to %s", sel_get_name(_cmd)];
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (*msg)(self, aSelector, object1, object2, object3);
|
||||||
|
}
|
||||||
|
|
||||||
|
@end
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue