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