Revision: 13870
          http://sourceforge.net/p/skim-app/code/13870
Author:   hofman
Date:     2023-12-10 15:56:16 +0000 (Sun, 10 Dec 2023)
Log Message:
-----------
Should be OK to initialize NSMapTable with non-object keys or values using objc 
API

Modified Paths:
--------------
    trunk/NSWindowController_SKExtensions.m
    trunk/SKMainDocument.m
    trunk/SKMainWindowController.m
    trunk/SKNotesDocument.m
    trunk/SKPDFSynchronizer.m

Modified: trunk/NSWindowController_SKExtensions.m
===================================================================
--- trunk/NSWindowController_SKExtensions.m     2023-12-10 09:24:04 UTC (rev 
13869)
+++ trunk/NSWindowController_SKExtensions.m     2023-12-10 15:56:16 UTC (rev 
13870)
@@ -43,10 +43,18 @@
 
 @implementation NSWindowController (SKExtensions)
 
+static NSUInteger pointSizeFunction(const void *item) { return 
sizeof(NSPoint); }
+static NSString *pointDescriptionFunction(const void *item) { return 
NSStringFromPoint(*(NSPointPointer)item); }
+
 - (void)setWindowFrameAutosaveNameOrCascade:(NSString *)name {
     static NSMapTable *nextWindowLocations = nil;
-    if (nextWindowLocations == nil)
-        nextWindowLocations = NSCreateMapTable(NSObjectMapKeyCallBacks, 
NSOwnedPointerMapValueCallBacks, 0);
+    if (nextWindowLocations == nil) {
+        NSPointerFunctions *keyPointerFunctions = [NSPointerFunctions 
pointerFunctionsWithOptions:NSPointerFunctionsStrongMemory | 
NSPointerFunctionsObjectPersonality];
+        NSPointerFunctions *valuePointerFunctions = [NSPointerFunctions 
pointerFunctionsWithOptions:NSPointerFunctionsMallocMemory | 
NSPointerFunctionsCopyIn | NSPointerFunctionsStructPersonality];
+        [valuePointerFunctions setSizeFunction:pointSizeFunction];
+        [valuePointerFunctions 
setDescriptionFunction:pointDescriptionFunction];
+        nextWindowLocations = [[NSMapTable alloc] 
initWithKeyPointerFunctions:keyPointerFunctions 
valuePointerFunctions:valuePointerFunctions capacity:0];
+    }
     
     NSPointPointer pointPtr = (NSPointPointer)NSMapGet(nextWindowLocations, 
name);
     NSPoint point;
@@ -59,9 +67,8 @@
     } else {
         point = *pointPtr;
     }
-    pointPtr = NSZoneMalloc(NSDefaultMallocZone(), sizeof(NSPoint));
-    *pointPtr = [[self window] cascadeTopLeftFromPoint:point];
-    NSMapInsert(nextWindowLocations, name, pointPtr);
+    point = [[self window] cascadeTopLeftFromPoint:point];
+    NSMapInsert(nextWindowLocations, name, &point);
 }
 
 - (BOOL)isNoteWindowController { return NO; }

Modified: trunk/SKMainDocument.m
===================================================================
--- trunk/SKMainDocument.m      2023-12-10 09:24:04 UTC (rev 13869)
+++ trunk/SKMainDocument.m      2023-12-10 15:56:16 UTC (rev 13870)
@@ -1153,7 +1153,7 @@
         
         if (NSEqualPoints(pageOrigin, NSZeroPoint) == NO) {
             if (offsets == nil)
-                offsets = NSCreateMapTable(NSIntegerMapKeyCallBacks, 
NSOwnedPointerMapValueCallBacks, 0);
+                offsets = [[NSMapTable alloc] 
initWithKeyOptions:NSPointerFunctionsOpaqueMemory | 
NSPointerFunctionsIntegerPersonality 
valueOptions:NSPointerFunctionsStrongMemory | 
NSPointerFunctionsObjectPersonality capacity:0];
             NSPointPointer offsetPtr = NSZoneMalloc(NSDefaultMallocZone(), 
sizeof(NSPoint));
             *offsetPtr = pageOrigin;
             NSMapInsert(offsets, (const void *)[page pageIndex], offsetPtr);

Modified: trunk/SKMainWindowController.m
===================================================================
--- trunk/SKMainWindowController.m      2023-12-10 09:24:04 UTC (rev 13869)
+++ trunk/SKMainWindowController.m      2023-12-10 15:56:16 UTC (rev 13870)
@@ -249,7 +249,8 @@
         dirtySnapshots = [[NSMutableArray alloc] init];
         pageLabels = [[NSMutableArray alloc] init];
         lastViewedPages = [[NSPointerArray alloc] 
initWithOptions:NSPointerFunctionsOpaqueMemory | 
NSPointerFunctionsIntegerPersonality];
-        rowHeights = NSCreateMapTable(NSObjectMapKeyCallBacks, 
NSIntegerMapValueCallBacks, 0);
+        rowHeights = [[NSMapTable alloc] 
initWithKeyOptions:NSPointerFunctionsStrongMemory | 
NSPointerFunctionsObjectPersonality valueOptions:NSPointerFunctionsOpaqueMemory 
| NSPointerFunctionsIntegerPersonality capacity:0];
+
         savedNormalSetup = [[NSMutableDictionary alloc] init];
         mwcFlags.leftSidePaneState = SKSidePaneStateThumbnail;
         mwcFlags.rightSidePaneState = SKSidePaneStateNote;

Modified: trunk/SKNotesDocument.m
===================================================================
--- trunk/SKNotesDocument.m     2023-12-10 09:24:04 UTC (rev 13869)
+++ trunk/SKNotesDocument.m     2023-12-10 15:56:16 UTC (rev 13870)
@@ -108,7 +108,7 @@
     if (self) {
         notes = [[NSArray alloc] init];
         pdfDocument = nil;
-        rowHeights = NSCreateMapTable(NSObjectMapKeyCallBacks, 
NSIntegerMapValueCallBacks, 0);
+        rowHeights = [[NSMapTable alloc] 
initWithKeyOptions:NSPointerFunctionsStrongMemory | 
NSPointerFunctionsObjectPersonality valueOptions:NSPointerFunctionsOpaqueMemory 
| NSPointerFunctionsIntegerPersonality capacity:0];
         windowRect = NSZeroRect;
         memset(&ndFlags, 0, sizeof(ndFlags));
         ndFlags.caseInsensitiveSearch = [[NSUserDefaults standardUserDefaults] 
boolForKey:SKCaseInsensitiveNoteSearchKey];

Modified: trunk/SKPDFSynchronizer.m
===================================================================
--- trunk/SKPDFSynchronizer.m   2023-12-10 09:24:04 UTC (rev 13869)
+++ trunk/SKPDFSynchronizer.m   2023-12-10 15:56:16 UTC (rev 13870)
@@ -236,7 +236,7 @@
     
     if ([pdfsyncString length]) {
         
-        NSMapTable *records = NSCreateMapTable(NSIntegerMapKeyCallBacks, 
NSObjectMapValueCallBacks, 0);
+        NSMapTable *records = [[NSMapTable alloc] 
initWithKeyOptions:NSPointerFunctionsOpaqueMemory | 
NSPointerFunctionsIntegerPersonality 
valueOptions:NSPointerFunctionsStrongMemory | 
NSPointerFunctionsObjectPersonality capacity:0];
         NSMutableArray *files = [[NSMutableArray alloc] init];
         NSString *file;
         NSInteger recordIndex, line, pageIndex;
@@ -339,7 +339,7 @@
             }
         }
         
-        NSFreeMapTable(records);
+        [record release];
         [files release];
         [sc release];
     }

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.



_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to