]> err.no Git - sope/commitdiff
added NSDecimalNumber computeSumForKey
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Sat, 2 Dec 2006 17:32:46 +0000 (17:32 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Sat, 2 Dec 2006 17:32:46 +0000 (17:32 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@1384 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-core/EOControl/ChangeLog
sope-core/EOControl/EOKeyValueCoding.m
sope-core/EOControl/Version

index 8d8da17d00f427b1ec8fdf77eab390117ef3454d..92a267ccec6cf04d582808a843e8e39169148853 100644 (file)
@@ -1,3 +1,9 @@
+2006-12-02  Helge Hess  <helge.hess@opengroupware.org>
+
+       * EOKeyValueCoding.m: added NSDecimalNumber implementation for
+         -computeSumForKey: (TBD: implementations for the other methods)
+         (v4.5.69)
+
 2006-09-30  Helge Hess  <helge.hess@opengroupware.org>
 
        * EOKeyGlobalID.m: print a warning if a key-gid is created with a nil
index 6530635e60e58c1995bdbd91c93037cd521fc375..5e1cdb67ee269564b775ebb6c36346b843361a24 100644 (file)
@@ -867,6 +867,7 @@ static inline BOOL setValue(NSString* key, id instance, id value)
 - (id)computeSumForKey:(NSString *)_key {
   unsigned i, cc = [self count];
   id (*objAtIdx)(id, SEL, unsigned int);
+#if LIB_FOUNDATION_LIBRARY
   double sum;
 
   if (cc == 0) return [NSNumber numberWithDouble:0.0];
@@ -880,6 +881,28 @@ static inline BOOL setValue(NSString* key, id instance, id value)
     sum += [o doubleValue];
   }
   return [NSNumber numberWithDouble:sum];
+#else
+  NSDecimalNumber *n;
+  
+  n = [NSDecimalNumber zero]
+  if (cc == 0) return n;
+  
+  objAtIdx = (void*)[self methodForSelector:@selector(objectAtIndex:)];
+  
+  for (i = 0, sum = 0.0; i < cc; i++) {
+    register id o;
+    
+    o = objAtIdx(self, @selector(objectAtIndex:), i);
+
+    if ([o isKindOfClass:[NSDecimalNumber class]])
+      n = [n decimalNumberByAdding:o];
+    else {
+      n = [n decimalNumberByAdding:
+              [NSDecimalNumber numberWithDouble:[o doubleValue]]];
+    }
+  }
+  return n;
+#endif
 }
 
 - (id)computeAvgForKey:(NSString *)_key {
@@ -928,11 +951,11 @@ static inline BOOL setValue(NSString* key, id instance, id value)
   unsigned i, cc = [self count];
   id (*objAtIdx)(id, SEL, unsigned int);
   double min;
-
+  
   if (cc == 0) return nil;
   
   objAtIdx = (void *)[self methodForSelector:@selector(objectAtIndex:)];
-    
+  
   min = [objAtIdx(self, @selector(objectAtIndex:), 0) doubleValue];
   for (i = 1; i < cc; i++) {
     register double ov;
index f4e13957a4ebc7a675037bf52e6771a50ddc3cf9..0817bde00fe5355966fb89cffdb3fd5d27e62da4 100644 (file)
@@ -1,3 +1,3 @@
 # version file
 
-SUBMINOR_VERSION:=68
+SUBMINOR_VERSION:=69