diff --git a/ChangeLog b/ChangeLog index cd973bc..ffbac0f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -37,6 +37,13 @@ (+newValueForDateType:length:attribute:): Do not depend on EOControl/EOPriv.m/h but on own private files. Improve optimizations. + + * EOAdaptors/Postgres95/Postgres95Values.m: Remove dependency + on EOAccess/EOAttributePriv.h and EOControl/EONSAddOns.h. + (attrRespondsToValueClass, attrRespondsToValueTypeChar): New + static locals. + (+initialize, +newValueForNumberType:length:attribute:): Remove + dependency and used static locals instead. 2005-02-18 Matt Rice diff --git a/EOAdaptors/Postgres95/Postgres95Values.m b/EOAdaptors/Postgres95/Postgres95Values.m index e88a363..f7f111f 100644 --- a/EOAdaptors/Postgres95/Postgres95Values.m +++ b/EOAdaptors/Postgres95/Postgres95Values.m @@ -54,8 +54,6 @@ RCS_ID("$Id$") #include -#include -#include #include "Postgres95EOAdaptor/Postgres95Adaptor.h" #include "Postgres95EOAdaptor/Postgres95Channel.h" @@ -70,8 +68,15 @@ void __postgres95_values_linking_function (void) { } +static BOOL attrRespondsToValueClass = NO; +static BOOL attrRespondsToValueTypeChar = NO; static NSStringEncoding LPSQLA_StringDefaultCStringEncoding; +@interface EOAttribute (private) +- (Class)_valueClass; +- (char)_valueTypeChar; +@end + @implementation Postgres95Values + (void) initialize @@ -81,6 +86,10 @@ static NSStringEncoding LPSQLA_StringDefaultCStringEncoding; { PSQLA_PrivInit(); + attrRespondsToValueClass + = [EOAttribute instancesRespondToSelector: @selector(_valueClass)]; + attrRespondsToValueTypeChar + = [EOAttribute instancesRespondToSelector: @selector(_valueTypeChar)]; LPSQLA_StringDefaultCStringEncoding = [NSString defaultCStringEncoding]; } }; @@ -142,7 +151,9 @@ to strlen(bytes) } else { - Class valueClass=[attribute _valueClass]; + Class valueClass = attrRespondsToValueClass + ? [attribute _valueClass] + : NSClassFromString ([attribute valueClassName]); if (valueClass==PSQLA_NSDecimalNumberClass) { @@ -156,7 +167,9 @@ to strlen(bytes) } else { - char valueTypeChar=[attribute _valueTypeChar]; + char valueTypeChar = attrRespondsToValueTypeChar + ? [attribute _valueTypeChar] + : [[attribute valueType] cString][0]; switch(valueTypeChar) { case 'i':