Revision: 26014 http://sourceforge.net/p/bibdesk/svn/26014 Author: hofman Date: 2021-05-20 16:00:21 +0000 (Thu, 20 May 2021) Log Message: ----------- Add class for array to use in IB
Modified Paths: -------------- trunk/bibdesk/Bibdesk.xcodeproj/project.pbxproj Added Paths: ----------- trunk/bibdesk/BDSKIBArray.h trunk/bibdesk/BDSKIBArray.m Added: trunk/bibdesk/BDSKIBArray.h =================================================================== --- trunk/bibdesk/BDSKIBArray.h (rev 0) +++ trunk/bibdesk/BDSKIBArray.h 2021-05-20 16:00:21 UTC (rev 26014) @@ -0,0 +1,48 @@ +// +// BDSKIBArray.h +// BibDesk +// + +/* + This software is Copyright (c) 2021 + Christiaan Hofman. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + - Neither the name of Christiaan Hofman nor the names of any + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import <Cocoa/Cocoa.h> + + +@interface BDSKIBArray : NSArray { + id object[9]; + unsigned long mutations; + +} +@property (nonatomic, retain) IBOutlet id object1, object2, object3, object4, object5, object6, object7, object8, object9; +@end Added: trunk/bibdesk/BDSKIBArray.m =================================================================== --- trunk/bibdesk/BDSKIBArray.m (rev 0) +++ trunk/bibdesk/BDSKIBArray.m 2021-05-20 16:00:21 UTC (rev 26014) @@ -0,0 +1,94 @@ +// +// BDSKIBArray.m +// BibDesk +// +// Created by Christiaan Hofman on 20/05/2021. +/* + This software is Copyright (c) 2021 + Christiaan Hofman. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + + - Neither the name of Christiaan Hofman nor the names of any + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "BDSKIBArray.h" + +@implementation BDSKIBArray + +static void setObjectAtIndex(id *object, id obj, NSUInteger i, unsigned long *mutationsPtr) { + if (object[i] != obj) { + [object[i] release]; + object[i] = [obj retain]; + (*mutationsPtr)++; + } +} + +#define SYNTHESIZE_OBJECT_ACCESSORS(i) \ +@dynamic object##i; \ +- (id)object##i { return object[i-1]; } \ +- (void)setObject##i:(id)obj { setObjectAtIndex(object, obj, i-1, &mutations); } + +SYNTHESIZE_OBJECT_ACCESSORS(1) +SYNTHESIZE_OBJECT_ACCESSORS(2) +SYNTHESIZE_OBJECT_ACCESSORS(3) +SYNTHESIZE_OBJECT_ACCESSORS(4) +SYNTHESIZE_OBJECT_ACCESSORS(5) +SYNTHESIZE_OBJECT_ACCESSORS(6) +SYNTHESIZE_OBJECT_ACCESSORS(7) +SYNTHESIZE_OBJECT_ACCESSORS(8) +SYNTHESIZE_OBJECT_ACCESSORS(9) + +- (void)dealloc { + NSUInteger i; + for (i = 0; i < 9; i++) + setObjectAtIndex(object, nil, i, &mutations); + [super dealloc]; +} + +- (NSUInteger)count { + NSUInteger i; + for (i = 0; i < 9; i++) + if (object[i] == nil) break; + return i; +} + +- (id)objectAtIndex:(NSUInteger)anIndex { + return object[anIndex]; +} + +- (NSUInteger)countByEnumeratingWithState:(NSFastEnumerationState *)state objects:(id *)stackbuf count:(NSUInteger)len { + if (state->state == 0) { + state->state = 1; + state->itemsPtr = object; + state->mutationsPtr = &mutations; + return [self count]; + } + return 0; +} + +@end Modified: trunk/bibdesk/Bibdesk.xcodeproj/project.pbxproj =================================================================== --- trunk/bibdesk/Bibdesk.xcodeproj/project.pbxproj 2021-05-20 06:31:20 UTC (rev 26013) +++ trunk/bibdesk/Bibdesk.xcodeproj/project.pbxproj 2021-05-20 16:00:21 UTC (rev 26014) @@ -88,6 +88,8 @@ CE0D24C9215A84F3001A3F47 /* NSScriptCommand_BDSKExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0D24C7215A84F3001A3F47 /* NSScriptCommand_BDSKExtensions.m */; }; CE0EB4440DCFDE8A0034DF92 /* NSInvocation_BDSKExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0EB4420DCFDE8A0034DF92 /* NSInvocation_BDSKExtensions.m */; }; CE0ECDAB0DE78619006EEDDB /* BDSKInspireParser.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0ECDA90DE78619006EEDDB /* BDSKInspireParser.m */; }; + CE0F91592656BE0800057A98 /* BDSKIBArray.h in Headers */ = {isa = PBXBuildFile; fileRef = CE0F91572656BE0800057A98 /* BDSKIBArray.h */; }; + CE0F915A2656BE0800057A98 /* BDSKIBArray.m in Sources */ = {isa = PBXBuildFile; fileRef = CE0F91582656BE0800057A98 /* BDSKIBArray.m */; }; CE11A2B40AE662EB008C47AC /* BDSKTextViewCompletionController.m in Sources */ = {isa = PBXBuildFile; fileRef = F98AA6800971E3F400184BD8 /* BDSKTextViewCompletionController.m */; }; CE11AC0B0AE7E0DC008C47AC /* BDSKScriptGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = CE11AC090AE7E0DC008C47AC /* BDSKScriptGroup.m */; }; CE11B0060AE8FD53008C47AC /* scriptGroup.tiff in Resources */ = {isa = PBXBuildFile; fileRef = CE11B0050AE8FD53008C47AC /* scriptGroup.tiff */; }; @@ -1317,6 +1319,8 @@ CE0EB4420DCFDE8A0034DF92 /* NSInvocation_BDSKExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSInvocation_BDSKExtensions.m; sourceTree = "<group>"; }; CE0ECDA80DE78619006EEDDB /* BDSKInspireParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BDSKInspireParser.h; sourceTree = "<group>"; }; CE0ECDA90DE78619006EEDDB /* BDSKInspireParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BDSKInspireParser.m; sourceTree = "<group>"; }; + CE0F91572656BE0800057A98 /* BDSKIBArray.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BDSKIBArray.h; sourceTree = "<group>"; }; + CE0F91582656BE0800057A98 /* BDSKIBArray.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BDSKIBArray.m; sourceTree = "<group>"; }; CE11AC080AE7E0DC008C47AC /* BDSKScriptGroup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BDSKScriptGroup.h; sourceTree = "<group>"; }; CE11AC090AE7E0DC008C47AC /* BDSKScriptGroup.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BDSKScriptGroup.m; sourceTree = "<group>"; }; CE11B0050AE8FD53008C47AC /* scriptGroup.tiff */ = {isa = PBXFileReference; lastKnownFileType = image.tiff; path = scriptGroup.tiff; sourceTree = "<group>"; }; @@ -2742,6 +2746,7 @@ F925352808FDFAE40045D563 /* BDSKFileSearchResult.m */, CE38FB8B091D94A100BCB69D /* BDSKFilter.m */, CEEFE6C00B0403E700668BB0 /* BDSKGroupsArray.m */, + CE0F91582656BE0800057A98 /* BDSKIBArray.m */, F911D7110CFE90050009C77B /* BDSKLinkedFile.m */, F94DE74A09CB46FF00B5FD51 /* BDSKPersistentSearch.m */, CEDBDE4A0F4C863500190AF5 /* BDSKPreferenceRecord.m */, @@ -3240,6 +3245,7 @@ CE80A8730FDAB27D0086A46C /* BDSKHighlightingPopUpButton.h */, 45DB3E8C0CAAFED5001EACDA /* BDSKHubmedParser.h */, CD6295331140DE03002E4751 /* BDSKIACRParser.h */, + CE0F91572656BE0800057A98 /* BDSKIBArray.h */, 454AC23B1086E07B00F2890A /* BDSKIEEEXploreParser.h */, CE3B682609D1B0190017D339 /* BDSKImagePopUpButton.h */, CE3B682809D1B0190017D339 /* BDSKImagePopUpButtonCell.h */, @@ -3710,6 +3716,7 @@ CE2A09CA2245997A00A8F31C /* BDSKCFCallBacks.h in Headers */, CE2A0A1C224599EF00A8F31C /* BDSKInspireParser.h in Headers */, CE2A09F4224599E100A8F31C /* BDSKFieldCollection.h in Headers */, + CE0F91592656BE0800057A98 /* BDSKIBArray.h in Headers */, CE2A0AD122459A4B00A8F31C /* NSFont_BDSKExtensions.h in Headers */, CE2A0A6722459A0A00A8F31C /* BDSKSearchGroup.h in Headers */, CE2A09F3224599E100A8F31C /* BDSKField.h in Headers */, @@ -4738,6 +4745,7 @@ 45DB3E500CAADFC3001EACDA /* BDSKCiteULikeParser.m in Sources */, 45DB3E520CAADFC3001EACDA /* NSXMLNode_BDSKExtensions.m in Sources */, 45DB3E8F0CAAFED5001EACDA /* BDSKHubmedParser.m in Sources */, + CE0F915A2656BE0800057A98 /* BDSKIBArray.m in Sources */, 45BB77540CAC74AE00F6299B /* BDSKGoogleScholarParser.m in Sources */, CE89618A0CBEB59800EA2D98 /* BDSKToken.m in Sources */, CE89618C0CBEB59800EA2D98 /* BDSKTypeTemplate.m in Sources */, This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Bibdesk-commit mailing list Bibdesk-commit@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-commit