ObjFW  Check-in [72837c3426]

Overview
Comment:Add OF(Mutable)Pair
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 72837c3426c5c397d4a0b614042c57132a6db85407734a75268bc9df48bfe80c
User & Date: js on 2017-09-05 21:47:59
Other Links: manifest | tags
Context
2017-09-05
22:02
Add OF(Mutable)Triple check-in: dc6c271897 user: js tags: trunk
21:47
Add OF(Mutable)Pair check-in: 72837c3426 user: js tags: trunk
2017-08-22
20:08
Add OF_PA_RISC and OF_PA_RISC_ASM defines check-in: 68b27968f7 user: js tags: trunk
Changes

Modified ObjFW.xcodeproj/project.pbxproj from [1958429fe9] to [ef4797c793].

691
692
693
694
695
696
697








698
699
700
701
702
703
704
		4B3D23E61337FCB000DD29B8 /* atomic.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBA36C411406AB700CBA3AC /* atomic.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3D23E71337FCB000DD29B8 /* base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3D236D1337FB5800DD29B8 /* base64.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3D23E81337FCB000DD29B8 /* macros.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBA36C511406AB700CBA3AC /* macros.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3D23E91337FCB000DD29B8 /* of_asprintf.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB50DCF12F863C700C9393F /* of_asprintf.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3D23EA1337FCB000DD29B8 /* threading.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B67998B1099E7C50041064A /* threading.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3D23EE1337FFD000DD29B8 /* of_asprintf.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB50DD012F863C700C9393F /* of_asprintf.m */; };
		4B3D5694139A617D0010A78F /* OFSerializationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B3D5693139A617D0010A78F /* OFSerializationTests.m */; };








		4B3ED7C21AF62C30004C8FF1 /* OFGetOptionFailedException.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3ED7C01AF62C30004C8FF1 /* OFGetOptionFailedException.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3ED7C31AF62C30004C8FF1 /* OFGetOptionFailedException.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B3ED7C11AF62C30004C8FF1 /* OFGetOptionFailedException.m */; };
		4B40EC1B189FE2650031E19E /* socket.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B40EC1A189FE2650031E19E /* socket.m */; };
		4B4116D01F21654200E78916 /* OFMutableURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B4116CD1F21654200E78916 /* OFMutableURL.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B4116D11F21654200E78916 /* OFMutableURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B4116CD1F21654200E78916 /* OFMutableURL.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B4116D21F21654200E78916 /* OFMutableURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B4116CE1F21654200E78916 /* OFMutableURL.m */; };
		4B4116D31F21654200E78916 /* OFMutableURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B4116CE1F21654200E78916 /* OFMutableURL.m */; };







>
>
>
>
>
>
>
>







691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
		4B3D23E61337FCB000DD29B8 /* atomic.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBA36C411406AB700CBA3AC /* atomic.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3D23E71337FCB000DD29B8 /* base64.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3D236D1337FB5800DD29B8 /* base64.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3D23E81337FCB000DD29B8 /* macros.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BBA36C511406AB700CBA3AC /* macros.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3D23E91337FCB000DD29B8 /* of_asprintf.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB50DCF12F863C700C9393F /* of_asprintf.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3D23EA1337FCB000DD29B8 /* threading.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B67998B1099E7C50041064A /* threading.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3D23EE1337FFD000DD29B8 /* of_asprintf.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB50DD012F863C700C9393F /* of_asprintf.m */; };
		4B3D5694139A617D0010A78F /* OFSerializationTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B3D5693139A617D0010A78F /* OFSerializationTests.m */; };
		4B3DE1271F5F4F2F0090AA3E /* OFMutablePair.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3DE1231F5F4F2F0090AA3E /* OFMutablePair.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3DE1281F5F4F2F0090AA3E /* OFMutablePair.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3DE1231F5F4F2F0090AA3E /* OFMutablePair.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3DE1291F5F4F2F0090AA3E /* OFMutablePair.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B3DE1241F5F4F2F0090AA3E /* OFMutablePair.m */; };
		4B3DE12A1F5F4F2F0090AA3E /* OFMutablePair.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B3DE1241F5F4F2F0090AA3E /* OFMutablePair.m */; };
		4B3DE12B1F5F4F2F0090AA3E /* OFPair.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3DE1251F5F4F2F0090AA3E /* OFPair.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3DE12C1F5F4F2F0090AA3E /* OFPair.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3DE1251F5F4F2F0090AA3E /* OFPair.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3DE12D1F5F4F2F0090AA3E /* OFPair.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B3DE1261F5F4F2F0090AA3E /* OFPair.m */; };
		4B3DE12E1F5F4F2F0090AA3E /* OFPair.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B3DE1261F5F4F2F0090AA3E /* OFPair.m */; };
		4B3ED7C21AF62C30004C8FF1 /* OFGetOptionFailedException.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B3ED7C01AF62C30004C8FF1 /* OFGetOptionFailedException.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B3ED7C31AF62C30004C8FF1 /* OFGetOptionFailedException.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B3ED7C11AF62C30004C8FF1 /* OFGetOptionFailedException.m */; };
		4B40EC1B189FE2650031E19E /* socket.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B40EC1A189FE2650031E19E /* socket.m */; };
		4B4116D01F21654200E78916 /* OFMutableURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B4116CD1F21654200E78916 /* OFMutableURL.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B4116D11F21654200E78916 /* OFMutableURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B4116CD1F21654200E78916 /* OFMutableURL.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4B4116D21F21654200E78916 /* OFMutableURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B4116CE1F21654200E78916 /* OFMutableURL.m */; };
		4B4116D31F21654200E78916 /* OFMutableURL.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B4116CE1F21654200E78916 /* OFMutableURL.m */; };
1324
1325
1326
1327
1328
1329
1330




1331
1332
1333
1334
1335
1336
1337
		4B3B0796166978780044E634 /* OFMapTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFMapTable.h; path = src/OFMapTable.h; sourceTree = "<group>"; };
		4B3B0797166978780044E634 /* OFMapTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFMapTable.m; path = src/OFMapTable.m; sourceTree = "<group>"; };
		4B3D236D1337FB5800DD29B8 /* base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = base64.h; path = src/base64.h; sourceTree = "<group>"; };
		4B3D236E1337FB5800DD29B8 /* base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = base64.m; path = src/base64.m; sourceTree = "<group>"; };
		4B3D23761337FBC800DD29B8 /* ObjFW.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ObjFW.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		4B3D23BB1337FC5800DD29B8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = misc/Info.plist; sourceTree = SOURCE_ROOT; };
		4B3D5693139A617D0010A78F /* OFSerializationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFSerializationTests.m; path = tests/OFSerializationTests.m; sourceTree = "<group>"; };




		4B3ED7C01AF62C30004C8FF1 /* OFGetOptionFailedException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFGetOptionFailedException.h; path = src/exceptions/OFGetOptionFailedException.h; sourceTree = "<group>"; };
		4B3ED7C11AF62C30004C8FF1 /* OFGetOptionFailedException.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFGetOptionFailedException.m; path = src/exceptions/OFGetOptionFailedException.m; sourceTree = "<group>"; };
		4B40EC1A189FE2650031E19E /* socket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = socket.m; path = src/socket.m; sourceTree = "<group>"; };
		4B4116CD1F21654200E78916 /* OFMutableURL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFMutableURL.h; path = src/OFMutableURL.h; sourceTree = "<group>"; };
		4B4116CE1F21654200E78916 /* OFMutableURL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFMutableURL.m; path = src/OFMutableURL.m; sourceTree = "<group>"; };
		4B4116CF1F21654200E78916 /* OFURL+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "OFURL+Private.h"; path = "src/OFURL+Private.h"; sourceTree = "<group>"; };
		4B44836B1D0497DE005D12A7 /* OFUndefinedKeyException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFUndefinedKeyException.h; path = src/exceptions/OFUndefinedKeyException.h; sourceTree = "<group>"; };







>
>
>
>







1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
		4B3B0796166978780044E634 /* OFMapTable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFMapTable.h; path = src/OFMapTable.h; sourceTree = "<group>"; };
		4B3B0797166978780044E634 /* OFMapTable.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFMapTable.m; path = src/OFMapTable.m; sourceTree = "<group>"; };
		4B3D236D1337FB5800DD29B8 /* base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = base64.h; path = src/base64.h; sourceTree = "<group>"; };
		4B3D236E1337FB5800DD29B8 /* base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = base64.m; path = src/base64.m; sourceTree = "<group>"; };
		4B3D23761337FBC800DD29B8 /* ObjFW.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ObjFW.framework; sourceTree = BUILT_PRODUCTS_DIR; };
		4B3D23BB1337FC5800DD29B8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = misc/Info.plist; sourceTree = SOURCE_ROOT; };
		4B3D5693139A617D0010A78F /* OFSerializationTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFSerializationTests.m; path = tests/OFSerializationTests.m; sourceTree = "<group>"; };
		4B3DE1231F5F4F2F0090AA3E /* OFMutablePair.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFMutablePair.h; path = src/OFMutablePair.h; sourceTree = "<group>"; };
		4B3DE1241F5F4F2F0090AA3E /* OFMutablePair.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFMutablePair.m; path = src/OFMutablePair.m; sourceTree = "<group>"; };
		4B3DE1251F5F4F2F0090AA3E /* OFPair.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFPair.h; path = src/OFPair.h; sourceTree = "<group>"; };
		4B3DE1261F5F4F2F0090AA3E /* OFPair.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFPair.m; path = src/OFPair.m; sourceTree = "<group>"; };
		4B3ED7C01AF62C30004C8FF1 /* OFGetOptionFailedException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFGetOptionFailedException.h; path = src/exceptions/OFGetOptionFailedException.h; sourceTree = "<group>"; };
		4B3ED7C11AF62C30004C8FF1 /* OFGetOptionFailedException.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFGetOptionFailedException.m; path = src/exceptions/OFGetOptionFailedException.m; sourceTree = "<group>"; };
		4B40EC1A189FE2650031E19E /* socket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = socket.m; path = src/socket.m; sourceTree = "<group>"; };
		4B4116CD1F21654200E78916 /* OFMutableURL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFMutableURL.h; path = src/OFMutableURL.h; sourceTree = "<group>"; };
		4B4116CE1F21654200E78916 /* OFMutableURL.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFMutableURL.m; path = src/OFMutableURL.m; sourceTree = "<group>"; };
		4B4116CF1F21654200E78916 /* OFURL+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "OFURL+Private.h"; path = "src/OFURL+Private.h"; sourceTree = "<group>"; };
		4B44836B1D0497DE005D12A7 /* OFUndefinedKeyException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFUndefinedKeyException.h; path = src/exceptions/OFUndefinedKeyException.h; sourceTree = "<group>"; };
2115
2116
2117
2118
2119
2120
2121


2122
2123
2124
2125
2126
2127
2128
				4B2B3E78140D430500EC2F7C /* OFMutableArray_adjacent.m */,
				4B1223111F23E6B300D9F8FF /* OFMutableData.h */,
				4B1223121F23E6B300D9F8FF /* OFMutableData.m */,
				4B6799711099E7C50041064A /* OFMutableDictionary.h */,
				4B6799721099E7C50041064A /* OFMutableDictionary.m */,
				4B2B3E79140D430500EC2F7C /* OFMutableDictionary_hashtable.h */,
				4B2B3E7A140D430500EC2F7C /* OFMutableDictionary_hashtable.m */,


				4B39844513D3AFB400E6F825 /* OFMutableSet.h */,
				4B39844613D3AFB400E6F825 /* OFMutableSet.m */,
				4BA85BC6140ECCE800E91D51 /* OFMutableSet_hashtable.h */,
				4BA85BC7140ECCE800E91D51 /* OFMutableSet_hashtable.m */,
				4B6799731099E7C50041064A /* OFMutableString.h */,
				4B6799741099E7C50041064A /* OFMutableString.m */,
				4B55254E147AA5DB0003BF47 /* OFMutableString_UTF8.h */,







>
>







2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
				4B2B3E78140D430500EC2F7C /* OFMutableArray_adjacent.m */,
				4B1223111F23E6B300D9F8FF /* OFMutableData.h */,
				4B1223121F23E6B300D9F8FF /* OFMutableData.m */,
				4B6799711099E7C50041064A /* OFMutableDictionary.h */,
				4B6799721099E7C50041064A /* OFMutableDictionary.m */,
				4B2B3E79140D430500EC2F7C /* OFMutableDictionary_hashtable.h */,
				4B2B3E7A140D430500EC2F7C /* OFMutableDictionary_hashtable.m */,
				4B3DE1231F5F4F2F0090AA3E /* OFMutablePair.h */,
				4B3DE1241F5F4F2F0090AA3E /* OFMutablePair.m */,
				4B39844513D3AFB400E6F825 /* OFMutableSet.h */,
				4B39844613D3AFB400E6F825 /* OFMutableSet.m */,
				4BA85BC6140ECCE800E91D51 /* OFMutableSet_hashtable.h */,
				4BA85BC7140ECCE800E91D51 /* OFMutableSet_hashtable.m */,
				4B6799731099E7C50041064A /* OFMutableString.h */,
				4B6799741099E7C50041064A /* OFMutableString.m */,
				4B55254E147AA5DB0003BF47 /* OFMutableString_UTF8.h */,
2143
2144
2145
2146
2147
2148
2149


2150
2151
2152
2153
2154
2155
2156
				4B6799781099E7C50041064A /* OFObject.m */,
				4BC176241D04963000C32718 /* OFObject+KeyValueCoding.h */,
				4BC176251D04963000C32718 /* OFObject+KeyValueCoding.m */,
				4BB25E82139C388A00F574EA /* OFObject+Serialization.h */,
				4BB25E83139C388A00F574EA /* OFObject+Serialization.m */,
				4BAFC166182EAA7800BE5E57 /* OFOptionsParser.h */,
				4BAFC167182EAA7800BE5E57 /* OFOptionsParser.m */,


				4B6799791099E7C50041064A /* OFPlugin.h */,
				4B67997A1099E7C50041064A /* OFPlugin.m */,
				4BB524BF143D1E4E0085FBCC /* OFProcess.h */,
				4BB524C0143D1E4E0085FBCC /* OFProcess.m */,
				4B6743FC163C395900EB1E59 /* OFRecursiveMutex.h */,
				4B6743FD163C395900EB1E59 /* OFRecursiveMutex.m */,
				4BEC83B719B7CB7100E4BB08 /* OFRIPEMD160Hash.h */,







>
>







2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
				4B6799781099E7C50041064A /* OFObject.m */,
				4BC176241D04963000C32718 /* OFObject+KeyValueCoding.h */,
				4BC176251D04963000C32718 /* OFObject+KeyValueCoding.m */,
				4BB25E82139C388A00F574EA /* OFObject+Serialization.h */,
				4BB25E83139C388A00F574EA /* OFObject+Serialization.m */,
				4BAFC166182EAA7800BE5E57 /* OFOptionsParser.h */,
				4BAFC167182EAA7800BE5E57 /* OFOptionsParser.m */,
				4B3DE1251F5F4F2F0090AA3E /* OFPair.h */,
				4B3DE1261F5F4F2F0090AA3E /* OFPair.m */,
				4B6799791099E7C50041064A /* OFPlugin.h */,
				4B67997A1099E7C50041064A /* OFPlugin.m */,
				4BB524BF143D1E4E0085FBCC /* OFProcess.h */,
				4BB524C0143D1E4E0085FBCC /* OFProcess.m */,
				4B6743FC163C395900EB1E59 /* OFRecursiveMutex.h */,
				4B6743FD163C395900EB1E59 /* OFRecursiveMutex.m */,
				4BEC83B719B7CB7100E4BB08 /* OFRIPEMD160Hash.h */,
2488
2489
2490
2491
2492
2493
2494

2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506

2507
2508
2509
2510
2511
2512
2513
				4B2C21FC1DA292BE00735907 /* OFMapTable.h in Headers */,
				4B2C21FD1DA292BE00735907 /* OFMD5Hash.h in Headers */,
				4B2C21FE1DA292BE00735907 /* OFMessagePackExtension.h in Headers */,
				4B2C21FF1DA292BE00735907 /* OFMessagePackRepresentation.h in Headers */,
				4B2C22001DA292BE00735907 /* OFMutableArray.h in Headers */,
				4B1223181F23E6C100D9F8FF /* OFMutableData.h in Headers */,
				4B2C22011DA292BE00735907 /* OFMutableDictionary.h in Headers */,

				4B2C22021DA292BE00735907 /* OFMutableSet.h in Headers */,
				4B2C22031DA292BE00735907 /* OFMutableString.h in Headers */,
				4BA842E71F35E53800292FC6 /* OFMutableTarArchiveEntry.h in Headers */,
				4B4116D11F21654200E78916 /* OFMutableURL.h in Headers */,
				4B92FDE01F35DFB5000D541D /* OFMutableZIPArchiveEntry.h in Headers */,
				4B2C22041DA292BE00735907 /* OFMutex.h in Headers */,
				4B2C22051DA292BE00735907 /* OFNull.h in Headers */,
				4B2C22061DA292BE00735907 /* OFNumber.h in Headers */,
				4B2C22071DA292BE00735907 /* OFObject.h in Headers */,
				4B2C22081DA292BE00735907 /* OFObject+KeyValueCoding.h in Headers */,
				4B2C22091DA292BE00735907 /* OFObject+Serialization.h in Headers */,
				4B2C220A1DA292BE00735907 /* OFOptionsParser.h in Headers */,

				4B5D70671DA2F7B400B3B2D7 /* OFPlugin.h in Headers */,
				4B2C220D1DA292BE00735907 /* OFRecursiveMutex.h in Headers */,
				4B2C220E1DA292BE00735907 /* OFRIPEMD160Hash.h in Headers */,
				4B2C220F1DA292BE00735907 /* OFRunLoop.h in Headers */,
				4B935D131E9A7DC3001F2957 /* OFSandbox.h in Headers */,
				4B2C22101DA292BE00735907 /* OFSeekableStream.h in Headers */,
				4B2C22111DA292BE00735907 /* OFSerialization.h in Headers */,







>












>







2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
				4B2C21FC1DA292BE00735907 /* OFMapTable.h in Headers */,
				4B2C21FD1DA292BE00735907 /* OFMD5Hash.h in Headers */,
				4B2C21FE1DA292BE00735907 /* OFMessagePackExtension.h in Headers */,
				4B2C21FF1DA292BE00735907 /* OFMessagePackRepresentation.h in Headers */,
				4B2C22001DA292BE00735907 /* OFMutableArray.h in Headers */,
				4B1223181F23E6C100D9F8FF /* OFMutableData.h in Headers */,
				4B2C22011DA292BE00735907 /* OFMutableDictionary.h in Headers */,
				4B3DE1281F5F4F2F0090AA3E /* OFMutablePair.h in Headers */,
				4B2C22021DA292BE00735907 /* OFMutableSet.h in Headers */,
				4B2C22031DA292BE00735907 /* OFMutableString.h in Headers */,
				4BA842E71F35E53800292FC6 /* OFMutableTarArchiveEntry.h in Headers */,
				4B4116D11F21654200E78916 /* OFMutableURL.h in Headers */,
				4B92FDE01F35DFB5000D541D /* OFMutableZIPArchiveEntry.h in Headers */,
				4B2C22041DA292BE00735907 /* OFMutex.h in Headers */,
				4B2C22051DA292BE00735907 /* OFNull.h in Headers */,
				4B2C22061DA292BE00735907 /* OFNumber.h in Headers */,
				4B2C22071DA292BE00735907 /* OFObject.h in Headers */,
				4B2C22081DA292BE00735907 /* OFObject+KeyValueCoding.h in Headers */,
				4B2C22091DA292BE00735907 /* OFObject+Serialization.h in Headers */,
				4B2C220A1DA292BE00735907 /* OFOptionsParser.h in Headers */,
				4B3DE12C1F5F4F2F0090AA3E /* OFPair.h in Headers */,
				4B5D70671DA2F7B400B3B2D7 /* OFPlugin.h in Headers */,
				4B2C220D1DA292BE00735907 /* OFRecursiveMutex.h in Headers */,
				4B2C220E1DA292BE00735907 /* OFRIPEMD160Hash.h in Headers */,
				4B2C220F1DA292BE00735907 /* OFRunLoop.h in Headers */,
				4B935D131E9A7DC3001F2957 /* OFSandbox.h in Headers */,
				4B2C22101DA292BE00735907 /* OFSeekableStream.h in Headers */,
				4B2C22111DA292BE00735907 /* OFSerialization.h in Headers */,
2717
2718
2719
2720
2721
2722
2723

2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735

2736
2737
2738
2739
2740
2741
2742
				4B3B0798166978780044E634 /* OFMapTable.h in Headers */,
				4B3D23CC1337FCB000DD29B8 /* OFMD5Hash.h in Headers */,
				4BCAA9AF1772432F003EF859 /* OFMessagePackExtension.h in Headers */,
				4B879A8E177231F000EBCEA4 /* OFMessagePackRepresentation.h in Headers */,
				4B3D23CD1337FCB000DD29B8 /* OFMutableArray.h in Headers */,
				4B1223151F23E6C000D9F8FF /* OFMutableData.h in Headers */,
				4B3D23CE1337FCB000DD29B8 /* OFMutableDictionary.h in Headers */,

				4B39844713D3AFB400E6F825 /* OFMutableSet.h in Headers */,
				4B3D23CF1337FCB000DD29B8 /* OFMutableString.h in Headers */,
				4BA842E61F35E53800292FC6 /* OFMutableTarArchiveEntry.h in Headers */,
				4B4116D01F21654200E78916 /* OFMutableURL.h in Headers */,
				4B92FDDF1F35DFB5000D541D /* OFMutableZIPArchiveEntry.h in Headers */,
				4B674403163C395900EB1E59 /* OFMutex.h in Headers */,
				4B511B7C139C0A34003764A5 /* OFNull.h in Headers */,
				4B3D23D01337FCB000DD29B8 /* OFNumber.h in Headers */,
				4B3D23D11337FCB000DD29B8 /* OFObject.h in Headers */,
				4BC176301D04963000C32718 /* OFObject+KeyValueCoding.h in Headers */,
				4BB25E88139C388A00F574EA /* OFObject+Serialization.h in Headers */,
				4BAFC168182EAA7800BE5E57 /* OFOptionsParser.h in Headers */,

				4B3D23D21337FCB000DD29B8 /* OFPlugin.h in Headers */,
				4BB524C1143D1E4E0085FBCC /* OFProcess.h in Headers */,
				4B674405163C395900EB1E59 /* OFRecursiveMutex.h in Headers */,
				4BEC83B919B7CB7100E4BB08 /* OFRIPEMD160Hash.h in Headers */,
				4B325EDD1605F3A0007836CA /* OFRunLoop.h in Headers */,
				4B935D121E9A7DC3001F2957 /* OFSandbox.h in Headers */,
				4B3D23D31337FCB000DD29B8 /* OFSeekableStream.h in Headers */,







>












>







2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
				4B3B0798166978780044E634 /* OFMapTable.h in Headers */,
				4B3D23CC1337FCB000DD29B8 /* OFMD5Hash.h in Headers */,
				4BCAA9AF1772432F003EF859 /* OFMessagePackExtension.h in Headers */,
				4B879A8E177231F000EBCEA4 /* OFMessagePackRepresentation.h in Headers */,
				4B3D23CD1337FCB000DD29B8 /* OFMutableArray.h in Headers */,
				4B1223151F23E6C000D9F8FF /* OFMutableData.h in Headers */,
				4B3D23CE1337FCB000DD29B8 /* OFMutableDictionary.h in Headers */,
				4B3DE1271F5F4F2F0090AA3E /* OFMutablePair.h in Headers */,
				4B39844713D3AFB400E6F825 /* OFMutableSet.h in Headers */,
				4B3D23CF1337FCB000DD29B8 /* OFMutableString.h in Headers */,
				4BA842E61F35E53800292FC6 /* OFMutableTarArchiveEntry.h in Headers */,
				4B4116D01F21654200E78916 /* OFMutableURL.h in Headers */,
				4B92FDDF1F35DFB5000D541D /* OFMutableZIPArchiveEntry.h in Headers */,
				4B674403163C395900EB1E59 /* OFMutex.h in Headers */,
				4B511B7C139C0A34003764A5 /* OFNull.h in Headers */,
				4B3D23D01337FCB000DD29B8 /* OFNumber.h in Headers */,
				4B3D23D11337FCB000DD29B8 /* OFObject.h in Headers */,
				4BC176301D04963000C32718 /* OFObject+KeyValueCoding.h in Headers */,
				4BB25E88139C388A00F574EA /* OFObject+Serialization.h in Headers */,
				4BAFC168182EAA7800BE5E57 /* OFOptionsParser.h in Headers */,
				4B3DE12B1F5F4F2F0090AA3E /* OFPair.h in Headers */,
				4B3D23D21337FCB000DD29B8 /* OFPlugin.h in Headers */,
				4BB524C1143D1E4E0085FBCC /* OFProcess.h in Headers */,
				4B674405163C395900EB1E59 /* OFRecursiveMutex.h in Headers */,
				4BEC83B919B7CB7100E4BB08 /* OFRIPEMD160Hash.h in Headers */,
				4B325EDD1605F3A0007836CA /* OFRunLoop.h in Headers */,
				4B935D121E9A7DC3001F2957 /* OFSandbox.h in Headers */,
				4B3D23D31337FCB000DD29B8 /* OFSeekableStream.h in Headers */,
3281
3282
3283
3284
3285
3286
3287

3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300

3301
3302
3303
3304
3305
3306
3307
				4B2C21461DA292BE00735907 /* OFMD5Hash.m in Sources */,
				4B2C21471DA292BE00735907 /* OFMessagePackExtension.m in Sources */,
				4B2C21481DA292BE00735907 /* OFMutableArray.m in Sources */,
				4B2C21491DA292BE00735907 /* OFMutableArray_adjacent.m in Sources */,
				4B1223191F23E6C100D9F8FF /* OFMutableData.m in Sources */,
				4B2C214A1DA292BE00735907 /* OFMutableDictionary.m in Sources */,
				4B2C214B1DA292BE00735907 /* OFMutableDictionary_hashtable.m in Sources */,

				4B2C214C1DA292BE00735907 /* OFMutableSet.m in Sources */,
				4B2C214D1DA292BE00735907 /* OFMutableSet_hashtable.m in Sources */,
				4B2C214E1DA292BE00735907 /* OFMutableString.m in Sources */,
				4B2C214F1DA292BE00735907 /* OFMutableString_UTF8.m in Sources */,
				4BA842E91F35E53800292FC6 /* OFMutableTarArchiveEntry.m in Sources */,
				4B4116D31F21654200E78916 /* OFMutableURL.m in Sources */,
				4B92FDE21F35DFBC000D541D /* OFMutableZIPArchiveEntry.m in Sources */,
				4B2C21501DA292BE00735907 /* OFMutex.m in Sources */,
				4B2C21511DA292BE00735907 /* OFNull.m in Sources */,
				4B2C21521DA292BE00735907 /* OFNumber.m in Sources */,
				4B2C21531DA292BE00735907 /* OFObject.m in Sources */,
				4B2C21541DA292BE00735907 /* OFObject+Serialization.m in Sources */,
				4B2C21551DA292BE00735907 /* OFOptionsParser.m in Sources */,

				4B5D70681DA2F7B400B3B2D7 /* OFPlugin.m in Sources */,
				4B2C21581DA292BE00735907 /* OFRecursiveMutex.m in Sources */,
				4B2C21591DA292BE00735907 /* OFRIPEMD160Hash.m in Sources */,
				4B2C215A1DA292BE00735907 /* OFRunLoop.m in Sources */,
				4B935D151E9A7DC3001F2957 /* OFSandbox.m in Sources */,
				4B2C215B1DA292BE00735907 /* OFSeekableStream.m in Sources */,
				4B2C215C1DA292BE00735907 /* OFSet.m in Sources */,







>













>







3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
				4B2C21461DA292BE00735907 /* OFMD5Hash.m in Sources */,
				4B2C21471DA292BE00735907 /* OFMessagePackExtension.m in Sources */,
				4B2C21481DA292BE00735907 /* OFMutableArray.m in Sources */,
				4B2C21491DA292BE00735907 /* OFMutableArray_adjacent.m in Sources */,
				4B1223191F23E6C100D9F8FF /* OFMutableData.m in Sources */,
				4B2C214A1DA292BE00735907 /* OFMutableDictionary.m in Sources */,
				4B2C214B1DA292BE00735907 /* OFMutableDictionary_hashtable.m in Sources */,
				4B3DE12A1F5F4F2F0090AA3E /* OFMutablePair.m in Sources */,
				4B2C214C1DA292BE00735907 /* OFMutableSet.m in Sources */,
				4B2C214D1DA292BE00735907 /* OFMutableSet_hashtable.m in Sources */,
				4B2C214E1DA292BE00735907 /* OFMutableString.m in Sources */,
				4B2C214F1DA292BE00735907 /* OFMutableString_UTF8.m in Sources */,
				4BA842E91F35E53800292FC6 /* OFMutableTarArchiveEntry.m in Sources */,
				4B4116D31F21654200E78916 /* OFMutableURL.m in Sources */,
				4B92FDE21F35DFBC000D541D /* OFMutableZIPArchiveEntry.m in Sources */,
				4B2C21501DA292BE00735907 /* OFMutex.m in Sources */,
				4B2C21511DA292BE00735907 /* OFNull.m in Sources */,
				4B2C21521DA292BE00735907 /* OFNumber.m in Sources */,
				4B2C21531DA292BE00735907 /* OFObject.m in Sources */,
				4B2C21541DA292BE00735907 /* OFObject+Serialization.m in Sources */,
				4B2C21551DA292BE00735907 /* OFOptionsParser.m in Sources */,
				4B3DE12E1F5F4F2F0090AA3E /* OFPair.m in Sources */,
				4B5D70681DA2F7B400B3B2D7 /* OFPlugin.m in Sources */,
				4B2C21581DA292BE00735907 /* OFRecursiveMutex.m in Sources */,
				4B2C21591DA292BE00735907 /* OFRIPEMD160Hash.m in Sources */,
				4B2C215A1DA292BE00735907 /* OFRunLoop.m in Sources */,
				4B935D151E9A7DC3001F2957 /* OFSandbox.m in Sources */,
				4B2C215B1DA292BE00735907 /* OFSeekableStream.m in Sources */,
				4B2C215C1DA292BE00735907 /* OFSet.m in Sources */,
3483
3484
3485
3486
3487
3488
3489

3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502

3503
3504
3505
3506
3507
3508
3509
				4B3D239A1337FC0D00DD29B8 /* OFMD5Hash.m in Sources */,
				4BCAA9B01772432F003EF859 /* OFMessagePackExtension.m in Sources */,
				4B3D239B1337FC0D00DD29B8 /* OFMutableArray.m in Sources */,
				4B2B3E82140D430500EC2F7C /* OFMutableArray_adjacent.m in Sources */,
				4B1223161F23E6C000D9F8FF /* OFMutableData.m in Sources */,
				4B3D239C1337FC0D00DD29B8 /* OFMutableDictionary.m in Sources */,
				4B2B3E84140D430500EC2F7C /* OFMutableDictionary_hashtable.m in Sources */,

				4B39844813D3AFB400E6F825 /* OFMutableSet.m in Sources */,
				4BA85BCD140ECCE800E91D51 /* OFMutableSet_hashtable.m in Sources */,
				4B3D239D1337FC0D00DD29B8 /* OFMutableString.m in Sources */,
				4B552553147AA5DB0003BF47 /* OFMutableString_UTF8.m in Sources */,
				4BA842E81F35E53800292FC6 /* OFMutableTarArchiveEntry.m in Sources */,
				4B4116D21F21654200E78916 /* OFMutableURL.m in Sources */,
				4B92FDE11F35DFBB000D541D /* OFMutableZIPArchiveEntry.m in Sources */,
				4B674404163C395900EB1E59 /* OFMutex.m in Sources */,
				4B511B7D139C0A34003764A5 /* OFNull.m in Sources */,
				4B3D239E1337FC0D00DD29B8 /* OFNumber.m in Sources */,
				4B3D239F1337FC0D00DD29B8 /* OFObject.m in Sources */,
				4BB25E89139C388A00F574EA /* OFObject+Serialization.m in Sources */,
				4BAFC169182EAA7800BE5E57 /* OFOptionsParser.m in Sources */,

				4B3D23A01337FC0D00DD29B8 /* OFPlugin.m in Sources */,
				4BB524C2143D1E4E0085FBCC /* OFProcess.m in Sources */,
				4B674406163C395900EB1E59 /* OFRecursiveMutex.m in Sources */,
				4BEC83BA19B7CB7100E4BB08 /* OFRIPEMD160Hash.m in Sources */,
				4B325EDE1605F3A0007836CA /* OFRunLoop.m in Sources */,
				4B935D141E9A7DC3001F2957 /* OFSandbox.m in Sources */,
				4B3D23A11337FC0D00DD29B8 /* OFSeekableStream.m in Sources */,







>













>







3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
				4B3D239A1337FC0D00DD29B8 /* OFMD5Hash.m in Sources */,
				4BCAA9B01772432F003EF859 /* OFMessagePackExtension.m in Sources */,
				4B3D239B1337FC0D00DD29B8 /* OFMutableArray.m in Sources */,
				4B2B3E82140D430500EC2F7C /* OFMutableArray_adjacent.m in Sources */,
				4B1223161F23E6C000D9F8FF /* OFMutableData.m in Sources */,
				4B3D239C1337FC0D00DD29B8 /* OFMutableDictionary.m in Sources */,
				4B2B3E84140D430500EC2F7C /* OFMutableDictionary_hashtable.m in Sources */,
				4B3DE1291F5F4F2F0090AA3E /* OFMutablePair.m in Sources */,
				4B39844813D3AFB400E6F825 /* OFMutableSet.m in Sources */,
				4BA85BCD140ECCE800E91D51 /* OFMutableSet_hashtable.m in Sources */,
				4B3D239D1337FC0D00DD29B8 /* OFMutableString.m in Sources */,
				4B552553147AA5DB0003BF47 /* OFMutableString_UTF8.m in Sources */,
				4BA842E81F35E53800292FC6 /* OFMutableTarArchiveEntry.m in Sources */,
				4B4116D21F21654200E78916 /* OFMutableURL.m in Sources */,
				4B92FDE11F35DFBB000D541D /* OFMutableZIPArchiveEntry.m in Sources */,
				4B674404163C395900EB1E59 /* OFMutex.m in Sources */,
				4B511B7D139C0A34003764A5 /* OFNull.m in Sources */,
				4B3D239E1337FC0D00DD29B8 /* OFNumber.m in Sources */,
				4B3D239F1337FC0D00DD29B8 /* OFObject.m in Sources */,
				4BB25E89139C388A00F574EA /* OFObject+Serialization.m in Sources */,
				4BAFC169182EAA7800BE5E57 /* OFOptionsParser.m in Sources */,
				4B3DE12D1F5F4F2F0090AA3E /* OFPair.m in Sources */,
				4B3D23A01337FC0D00DD29B8 /* OFPlugin.m in Sources */,
				4BB524C2143D1E4E0085FBCC /* OFProcess.m in Sources */,
				4B674406163C395900EB1E59 /* OFRecursiveMutex.m in Sources */,
				4BEC83BA19B7CB7100E4BB08 /* OFRIPEMD160Hash.m in Sources */,
				4B325EDE1605F3A0007836CA /* OFRunLoop.m in Sources */,
				4B935D141E9A7DC3001F2957 /* OFSandbox.m in Sources */,
				4B3D23A11337FC0D00DD29B8 /* OFSeekableStream.m in Sources */,

Modified src/Makefile from [8fdff9637f] to [111411ed9a].

34
35
36
37
38
39
40

41
42
43
44
45
46
47
48
49
50
51

52
53
54
55
56
57
58
       OFLocalization.m			\
       OFMapTable.m			\
       OFMD5Hash.m			\
       OFMessagePackExtension.m		\
       OFMutableArray.m			\
       OFMutableData.m			\
       OFMutableDictionary.m		\

       OFMutableSet.m			\
       OFMutableString.m		\
       OFMutableTarArchiveEntry.m	\
       OFMutableURL.m			\
       OFMutableZIPArchiveEntry.m	\
       OFNull.m				\
       OFNumber.m			\
       OFObject.m			\
       OFObject+KeyValueCoding.m	\
       OFObject+Serialization.m		\
       OFOptionsParser.m		\

       ${OFPROCESS_M}			\
       OFRIPEMD160Hash.m		\
       OFRunLoop.m			\
       OFSandbox.m			\
       OFSeekableStream.m		\
       OFSet.m				\
       OFSHA1Hash.m			\







>











>







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
       OFLocalization.m			\
       OFMapTable.m			\
       OFMD5Hash.m			\
       OFMessagePackExtension.m		\
       OFMutableArray.m			\
       OFMutableData.m			\
       OFMutableDictionary.m		\
       OFMutablePair.m			\
       OFMutableSet.m			\
       OFMutableString.m		\
       OFMutableTarArchiveEntry.m	\
       OFMutableURL.m			\
       OFMutableZIPArchiveEntry.m	\
       OFNull.m				\
       OFNumber.m			\
       OFObject.m			\
       OFObject+KeyValueCoding.m	\
       OFObject+Serialization.m		\
       OFOptionsParser.m		\
       OFPair.m				\
       ${OFPROCESS_M}			\
       OFRIPEMD160Hash.m		\
       OFRunLoop.m			\
       OFSandbox.m			\
       OFSeekableStream.m		\
       OFSet.m				\
       OFSHA1Hash.m			\

Added src/OFMutablePair.h version [8ce187fec7].









































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
/*
 * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017
 *   Jonathan Schleifer <js@heap.zone>
 *
 * All rights reserved.
 *
 * This file is part of ObjFW. It may be distributed under the terms of the
 * Q Public License 1.0, which can be found in the file LICENSE.QPL included in
 * the packaging of this file.
 *
 * Alternatively, it may be distributed under the terms of the GNU General
 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#import "OFPair.h"

OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFMutablePair OFMutablePair.h ObjFW/OFMutablePair.h
 *
 * @brief A class for storing a pair of two objects.
 */
@interface OFMutablePair OF_GENERIC(FirstType, SecondType):
    OFPair OF_GENERIC(FirstType, SecondType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define FirstType id
# define SecondType id
#endif
/*!
 * The first object of the pair.
 */
@property (readwrite, nonatomic, retain) FirstType firstObject;

/*!
 * The second object of the pair.
 */
@property (readwrite, nonatomic, retain) SecondType secondObject;

/*!
 * @brief Converts the mutable pair to an immutable pair.
 */
- (void)makeImmutable;
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# undef FirstType
# undef SecondType
#endif
@end

OF_ASSUME_NONNULL_END

Added src/OFMutablePair.m version [5794d68209].



































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/*
 * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017
 *   Jonathan Schleifer <js@heap.zone>
 *
 * All rights reserved.
 *
 * This file is part of ObjFW. It may be distributed under the terms of the
 * Q Public License 1.0, which can be found in the file LICENSE.QPL included in
 * the packaging of this file.
 *
 * Alternatively, it may be distributed under the terms of the GNU General
 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#import "OFMutablePair.h"

@implementation OFMutablePair
@dynamic firstObject, secondObject;

- (void)setFirstObject: (id)firstObject
{
	id old = _firstObject;
	_firstObject = [firstObject retain];
	[old release];
}

- (void)setSecondObject: (id)secondObject
{
	id old = _secondObject;
	_secondObject = [secondObject retain];
	[old release];
}

- copy
{
	OFMutablePair *copy = [self mutableCopy];

	[copy makeImmutable];

	return copy;
}

- (void)makeImmutable
{
	object_setClass(self, [OFPair class]);
}
@end

Added src/OFPair.h version [039325702d].





















































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/*
 * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017
 *   Jonathan Schleifer <js@heap.zone>
 *
 * All rights reserved.
 *
 * This file is part of ObjFW. It may be distributed under the terms of the
 * Q Public License 1.0, which can be found in the file LICENSE.QPL included in
 * the packaging of this file.
 *
 * Alternatively, it may be distributed under the terms of the GNU General
 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#import "OFObject.h"

OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFPair OFPair.h ObjFW/OFPair.h
 *
 * @brief A class for storing a pair of two objects.
 */
@interface OFPair OF_GENERIC(FirstType, SecondType): OFObject <OFCopying,
    OFMutableCopying>
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define FirstType id
# define SecondType id
#endif
{
	FirstType _firstObject;
	SecondType _secondObject;
}

/*!
 * The first object of the pair.
 */
@property (readonly, nonatomic, retain) FirstType firstObject;

/*!
 * The second object of the pair.
 */
@property (readonly, nonatomic, retain) SecondType secondObject;

/*!
 * @brief Creates a new OFPair with the specified objects.
 *
 * @param firstObject The first object for the pair
 * @param secondObject The second object for the pair
 * @return A new, autoreleased OFPair
 */
+ (instancetype)pairWithFirstObject: (FirstType)firstObject
		       secondObject: (SecondType)secondObject;

/*!
 * @brief Initializes an already allocated OFPair with the specified objects.
 *
 * @param firstObject The first object for the pair
 * @param secondObject The second object for the pair
 * @return An initialized OFPair
 */
- initWithFirstObject: (FirstType)firstObject
	 secondObject: (SecondType)secondObject;
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# undef FirstType
# undef SecondType
#endif
@end

OF_ASSUME_NONNULL_END

#import "OFMutablePair.h"

Added src/OFPair.m version [52a79e789f].





























































































































































































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
 * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017
 *   Jonathan Schleifer <js@heap.zone>
 *
 * All rights reserved.
 *
 * This file is part of ObjFW. It may be distributed under the terms of the
 * Q Public License 1.0, which can be found in the file LICENSE.QPL included in
 * the packaging of this file.
 *
 * Alternatively, it may be distributed under the terms of the GNU General
 * Public License, either version 2 or 3, which can be found in the file
 * LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
 * file.
 */

#import "OFPair.h"
#import "OFString.h"

@implementation OFPair
+ (instancetype)pairWithFirstObject: (id)firstObject
		       secondObject: (id)secondObject
{
	return [[[self alloc] initWithFirstObject: firstObject
				     secondObject: secondObject] autorelease];
}

- initWithFirstObject: (id)firstObject
	 secondObject: (id)secondObject
{
	self = [super init];

	@try {
		_firstObject = [firstObject retain];
		_secondObject = [secondObject retain];
	} @catch (id e) {
		[self release];
		@throw e;
	}

	return self;
}

- (void)dealloc
{
	[_firstObject release];
	[_secondObject release];

	[super dealloc];
}

- (id)firstObject
{
	return _firstObject;
}

- (id)secondObject
{
	return _secondObject;
}

- (bool)isEqual: (id)object
{
	OFPair *pair;

	if (![object isKindOfClass: [OFPair class]])
		return false;

	pair = object;

	if (![pair->_firstObject isEqual: _firstObject])
		return false;

	if (![pair->_secondObject isEqual: _secondObject])
		return false;

	return true;
}

- (uint32_t)hash
{
	uint32_t hash;

	OF_HASH_INIT(hash);

	OF_HASH_ADD_HASH(hash, [_firstObject hash]);
	OF_HASH_ADD_HASH(hash, [_secondObject hash]);

	OF_HASH_FINALIZE(hash);

	return hash;
}

- copy
{
	return [self retain];
}

- mutableCopy
{
	return [OFMutablePair pairWithFirstObject: _firstObject
				     secondObject: _secondObject];
}

- (OFString *)description
{
	return [OFString stringWithFormat: @"<<%@, %@>>",
					   _firstObject, _secondObject];
}
@end