ObjFW  Check-in [7c30d6a2e2]

Overview
Comment:Add OFCharacterSet
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 7c30d6a2e29114ac0e2ea0260ac2386cbf8f0e2842d2990b53b136ad12568f92
User & Date: js on 2017-11-05 18:01:21
Other Links: manifest | tags
Context
2017-11-05
18:06
Adjust OFObjectTests to OF_WARN_UNUSED_RESULT check-in: a66b075506 user: js tags: trunk
18:01
Add OFCharacterSet check-in: 7c30d6a2e2 user: js tags: trunk
02:58
Add OF_WARN_UNUSED_RESULT check-in: 7c79db860d user: js tags: trunk
Changes

Modified ObjFW.xcodeproj/project.pbxproj from [7cfbcb5cec] to [9afe42ac7c].

941
942
943
944
945
946
947














948
949
950
951
952
953
954
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968







+
+
+
+
+
+
+
+
+
+
+
+
+
+







		4BB4B54516775FF4002A2DCE /* OFHTTPClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB4B54016775FF4002A2DCE /* OFHTTPClient.m */; };
		4BB4B54616775FF4002A2DCE /* OFHTTPServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB4B54116775FF4002A2DCE /* OFHTTPServer.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4BB4B54716775FF4002A2DCE /* OFHTTPServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB4B54216775FF4002A2DCE /* OFHTTPServer.m */; };
		4BB4B54A16776094002A2DCE /* OFHTTPClientTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB4B54916776094002A2DCE /* OFHTTPClientTests.m */; };
		4BB524C1143D1E4E0085FBCC /* OFProcess.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB524BF143D1E4E0085FBCC /* OFProcess.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4BB524C2143D1E4E0085FBCC /* OFProcess.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB524C0143D1E4E0085FBCC /* OFProcess.m */; settings = {ATTRIBUTES = (Public, ); }; };
		4BB52CC717B8EA7F00B7EBF5 /* codepage_437.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB52CC617B8EA7F00B7EBF5 /* codepage_437.m */; };
		4BB99CDA1FAEC9DA00CC79A9 /* OFCharacterSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB99CD61FAEC9D900CC79A9 /* OFCharacterSet.m */; };
		4BB99CDB1FAEC9DA00CC79A9 /* OFCharacterSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB99CD61FAEC9D900CC79A9 /* OFCharacterSet.m */; };
		4BB99CDC1FAEC9DA00CC79A9 /* OFCharacterSet_bitset.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB99CD71FAEC9D900CC79A9 /* OFCharacterSet_bitset.h */; };
		4BB99CDD1FAEC9DA00CC79A9 /* OFCharacterSet_bitset.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB99CD71FAEC9D900CC79A9 /* OFCharacterSet_bitset.h */; };
		4BB99CDE1FAEC9DA00CC79A9 /* OFCharacterSet_bitset.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB99CD81FAEC9DA00CC79A9 /* OFCharacterSet_bitset.m */; };
		4BB99CDF1FAEC9DA00CC79A9 /* OFCharacterSet_bitset.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB99CD81FAEC9DA00CC79A9 /* OFCharacterSet_bitset.m */; };
		4BB99CE01FAEC9DA00CC79A9 /* OFCharacterSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB99CD91FAEC9DA00CC79A9 /* OFCharacterSet.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4BB99CE11FAEC9DA00CC79A9 /* OFCharacterSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB99CD91FAEC9DA00CC79A9 /* OFCharacterSet.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4BB99CE41FAF542000CC79A9 /* OFCharacterSet_range.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB99CE21FAF542000CC79A9 /* OFCharacterSet_range.h */; };
		4BB99CE51FAF542000CC79A9 /* OFCharacterSet_range.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BB99CE21FAF542000CC79A9 /* OFCharacterSet_range.h */; };
		4BB99CE61FAF542000CC79A9 /* OFCharacterSet_range.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB99CE31FAF542000CC79A9 /* OFCharacterSet_range.m */; };
		4BB99CE71FAF542000CC79A9 /* OFCharacterSet_range.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB99CE31FAF542000CC79A9 /* OFCharacterSet_range.m */; };
		4BB99CE91FAF77BC00CC79A9 /* OFCharacterSetTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB99CE81FAF77BC00CC79A9 /* OFCharacterSetTests.m */; };
		4BB99CEA1FAF77BC00CC79A9 /* OFCharacterSetTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BB99CE81FAF77BC00CC79A9 /* OFCharacterSetTests.m */; };
		4BC090441584F6760040640F /* OFInvalidJSONException.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC090421584F6760040640F /* OFInvalidJSONException.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4BC090451584F6760040640F /* OFInvalidJSONException.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BC090431584F6760040640F /* OFInvalidJSONException.m */; };
		4BC1762F1D04963000C32718 /* OFKeyValueCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC176231D04963000C32718 /* OFKeyValueCoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4BC176301D04963000C32718 /* OFObject+KeyValueCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC176241D04963000C32718 /* OFObject+KeyValueCoding.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4BC176311D04963000C32718 /* OFObject+KeyValueCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BC176251D04963000C32718 /* OFObject+KeyValueCoding.m */; };
		4BC176321D04963000C32718 /* OFTarArchive.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC176261D04963000C32718 /* OFTarArchive.h */; settings = {ATTRIBUTES = (Public, ); }; };
		4BC176331D04963000C32718 /* OFTarArchive.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BC176271D04963000C32718 /* OFTarArchive.m */; };
1687
1688
1689
1690
1691
1692
1693







1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721







+
+
+
+
+
+
+







		4BB4B54216775FF4002A2DCE /* OFHTTPServer.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFHTTPServer.m; path = src/OFHTTPServer.m; sourceTree = "<group>"; };
		4BB4B54916776094002A2DCE /* OFHTTPClientTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFHTTPClientTests.m; path = tests/OFHTTPClientTests.m; sourceTree = "<group>"; };
		4BB50DCF12F863C700C9393F /* of_asprintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = of_asprintf.h; path = src/of_asprintf.h; sourceTree = SOURCE_ROOT; };
		4BB50DD012F863C700C9393F /* of_asprintf.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = of_asprintf.m; path = src/of_asprintf.m; sourceTree = SOURCE_ROOT; };
		4BB524BF143D1E4E0085FBCC /* OFProcess.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFProcess.h; path = src/OFProcess.h; sourceTree = "<group>"; };
		4BB524C0143D1E4E0085FBCC /* OFProcess.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFProcess.m; path = src/OFProcess.m; sourceTree = "<group>"; };
		4BB52CC617B8EA7F00B7EBF5 /* codepage_437.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = codepage_437.m; path = src/encodings/codepage_437.m; sourceTree = "<group>"; };
		4BB99CD61FAEC9D900CC79A9 /* OFCharacterSet.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFCharacterSet.m; path = src/OFCharacterSet.m; sourceTree = "<group>"; };
		4BB99CD71FAEC9D900CC79A9 /* OFCharacterSet_bitset.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFCharacterSet_bitset.h; path = src/OFCharacterSet_bitset.h; sourceTree = "<group>"; };
		4BB99CD81FAEC9DA00CC79A9 /* OFCharacterSet_bitset.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFCharacterSet_bitset.m; path = src/OFCharacterSet_bitset.m; sourceTree = "<group>"; };
		4BB99CD91FAEC9DA00CC79A9 /* OFCharacterSet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFCharacterSet.h; path = src/OFCharacterSet.h; sourceTree = "<group>"; };
		4BB99CE21FAF542000CC79A9 /* OFCharacterSet_range.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFCharacterSet_range.h; path = src/OFCharacterSet_range.h; sourceTree = "<group>"; };
		4BB99CE31FAF542000CC79A9 /* OFCharacterSet_range.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFCharacterSet_range.m; path = src/OFCharacterSet_range.m; sourceTree = "<group>"; };
		4BB99CE81FAF77BC00CC79A9 /* OFCharacterSetTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFCharacterSetTests.m; path = tests/OFCharacterSetTests.m; sourceTree = "<group>"; };
		4BBA36C411406AB700CBA3AC /* atomic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = atomic.h; path = src/atomic.h; sourceTree = "<group>"; };
		4BBA36C511406AB700CBA3AC /* macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = macros.h; path = src/macros.h; sourceTree = "<group>"; };
		4BC090421584F6760040640F /* OFInvalidJSONException.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFInvalidJSONException.h; path = src/exceptions/OFInvalidJSONException.h; sourceTree = "<group>"; };
		4BC090431584F6760040640F /* OFInvalidJSONException.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OFInvalidJSONException.m; path = src/exceptions/OFInvalidJSONException.m; sourceTree = "<group>"; };
		4BC176231D04963000C32718 /* OFKeyValueCoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OFKeyValueCoding.h; path = src/OFKeyValueCoding.h; sourceTree = "<group>"; };
		4BC176241D04963000C32718 /* OFObject+KeyValueCoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "OFObject+KeyValueCoding.h"; path = "src/OFObject+KeyValueCoding.h"; sourceTree = "<group>"; };
		4BC176251D04963000C32718 /* OFObject+KeyValueCoding.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "OFObject+KeyValueCoding.m"; path = "src/OFObject+KeyValueCoding.m"; sourceTree = "<group>"; };
2130
2131
2132
2133
2134
2135
2136






2137
2138
2139
2140
2141
2142
2143
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170







+
+
+
+
+
+







				4B9BB7BB141CDE2D000AD1CC /* OFArray_subarray.h */,
				4B9BB7BC141CDE2D000AD1CC /* OFArray_subarray.m */,
				4B67995C1099E7C50041064A /* OFAutoreleasePool.h */,
				4B67995D1099E7C50041064A /* OFAutoreleasePool.m */,
				4B1473CA17E6391900B46BB8 /* OFAutoreleasePool+Private.h */,
				4BD86D801237A6C600ED9912 /* OFBlock.h */,
				4BD86D811237A6C600ED9912 /* OFBlock.m */,
				4BB99CD91FAEC9DA00CC79A9 /* OFCharacterSet.h */,
				4BB99CD61FAEC9D900CC79A9 /* OFCharacterSet.m */,
				4BB99CD71FAEC9D900CC79A9 /* OFCharacterSet_bitset.h */,
				4BB99CD81FAEC9DA00CC79A9 /* OFCharacterSet_bitset.m */,
				4BB99CE21FAF542000CC79A9 /* OFCharacterSet_range.h */,
				4BB99CE31FAF542000CC79A9 /* OFCharacterSet_range.m */,
				4BAF5F46123460C900F4E111 /* OFCollection.h */,
				4B6743F7163C395900EB1E59 /* OFCondition.h */,
				4B6743F8163C395900EB1E59 /* OFCondition.m */,
				4BE5F0D712DF4225005C7A0C /* OFConstantString.h */,
				4BE5F0D812DF4225005C7A0C /* OFConstantString.m */,
				4B45355113DCFE1E0037AB4D /* OFCountedSet.h */,
				4B45355213DCFE1E0037AB4D /* OFCountedSet.m */,
2427
2428
2429
2430
2431
2432
2433

2434
2435
2436
2437
2438
2439
2440
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468







+







			children = (
				4B6EF6831235359D0076B512 /* Plugin */,
				4BF33B4113380CB60059CEF7 /* Supporting Files */,
				4B6EF682123535960076B512 /* objc_sync */,
				4BA4846515CC9FAD00D75360 /* ForwardingTests.m */,
				4B6EF66E1235358D0076B512 /* OFArrayTests.m */,
				4BE5F0E412DF4259005C7A0C /* OFBlockTests.m */,
				4BB99CE81FAF77BC00CC79A9 /* OFCharacterSetTests.m */,
				4B6EF66F1235358D0076B512 /* OFDataTests.m */,
				4BE5F0E512DF4259005C7A0C /* OFDateTests.m */,
				4B6EF6701235358D0076B512 /* OFDictionaryTests.m */,
				4BF0DD731D44645D001D9949 /* OFHMACTests.m */,
				4BB4B54916776094002A2DCE /* OFHTTPClientTests.m */,
				4B2610C51D86305C001F16C9 /* OFHTTPCookieTests.m */,
				4B11D09B1EC901440094423D /* OFHTTPCookieManagerTests.m */,
2569
2570
2571
2572
2573
2574
2575

2576
2577
2578
2579
2580
2581
2582
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611







+







			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
				4B2C21D71DA292BE00735907 /* OFApplication.h in Headers */,
				4B2C21D81DA292BE00735907 /* OFArray.h in Headers */,
				4B2C21DA1DA292BE00735907 /* OFAutoreleasePool.h in Headers */,
				4B2C21DC1DA292BE00735907 /* OFBlock.h in Headers */,
				4BB99CE11FAEC9DA00CC79A9 /* OFCharacterSet.h in Headers */,
				4B2C21DD1DA292BE00735907 /* OFCollection.h in Headers */,
				4B2C21DE1DA292BE00735907 /* OFCondition.h in Headers */,
				4B2C21DF1DA292BE00735907 /* OFConstantString.h in Headers */,
				4B2C21E01DA292BE00735907 /* OFCountedSet.h in Headers */,
				4B2C21E11DA292BE00735907 /* OFCryptoHash.h in Headers */,
				4B2C21E21DA292BE00735907 /* OFData.h in Headers */,
				4B2C21E31DA292BE00735907 /* OFData+CryptoHashing.h in Headers */,
2763
2764
2765
2766
2767
2768
2769


2770
2771
2772
2773
2774
2775
2776
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807







+
+







				4B2C228C1DA292BE00735907 /* OFUnsupportedVersionException.h in Headers */,
				4B2C228D1DA292BE00735907 /* OFWriteFailedException.h in Headers */,
				4B2C22A91DA292BE00735907 /* config.h in Headers */,
				4B2C228E1DA292BE00735907 /* OFArray_adjacent.h in Headers */,
				4B2C228F1DA292BE00735907 /* OFArray_adjacentSubarray.h in Headers */,
				4B2C21D91DA292BE00735907 /* OFArray_subarray.h in Headers */,
				4B2C22901DA292BE00735907 /* OFAutoreleasePool+Private.h in Headers */,
				4BB99CDD1FAEC9DA00CC79A9 /* OFCharacterSet_bitset.h in Headers */,
				4BB99CE51FAF542000CC79A9 /* OFCharacterSet_range.h in Headers */,
				4B2C22911DA292BE00735907 /* OFCountedSet_hashtable.h in Headers */,
				4B1223171F23E6C100D9F8FF /* OFData+Private.h in Headers */,
				4B2C22921DA292BE00735907 /* OFDictionary_hashtable.h in Headers */,
				4B2C22931DA292BE00735907 /* OFINICategory+Private.h in Headers */,
				4B2C22941DA292BE00735907 /* OFKernelEventObserver+Private.h in Headers */,
				4B2C22951DA292BE00735907 /* OFKernelEventObserver_kqueue.h in Headers */,
				4B2C22961DA292BE00735907 /* OFKernelEventObserver_poll.h in Headers */,
2804
2805
2806
2807
2808
2809
2810

2811
2812
2813
2814
2815
2816
2817
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849







+







			isa = PBXHeadersBuildPhase;
			buildActionMask = 2147483647;
			files = (
				4B3D23BC1337FC8300DD29B8 /* OFApplication.h in Headers */,
				4B3D23BD1337FC8300DD29B8 /* OFArray.h in Headers */,
				4B3D23BE1337FC8300DD29B8 /* OFAutoreleasePool.h in Headers */,
				4B3D23BF1337FC8300DD29B8 /* OFBlock.h in Headers */,
				4BB99CE01FAEC9DA00CC79A9 /* OFCharacterSet.h in Headers */,
				4B3D23C01337FC8300DD29B8 /* OFCollection.h in Headers */,
				4B674400163C395900EB1E59 /* OFCondition.h in Headers */,
				4B3D23C11337FC8300DD29B8 /* OFConstantString.h in Headers */,
				4B45355313DCFE1E0037AB4D /* OFCountedSet.h in Headers */,
				4B3D23C91337FCB000DD29B8 /* OFCryptoHash.h in Headers */,
				4B3D23C21337FC8300DD29B8 /* OFData.h in Headers */,
				4B3D23C31337FC8300DD29B8 /* OFData+CryptoHashing.h in Headers */,
2999
3000
3001
3002
3003
3004
3005


3006
3007
3008
3009
3010
3011
3012
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046







+
+







				4BA4846215CC9F1E00D75360 /* OFUnsupportedVersionException.h in Headers */,
				4B55A116133AC24600B58A93 /* OFWriteFailedException.h in Headers */,
				4BDF37B51338055600F9A81A /* config.h in Headers */,
				4B2B3E7D140D430500EC2F7C /* OFArray_adjacent.h in Headers */,
				4B9BB7BD141CDE2D000AD1CC /* OFArray_adjacentSubarray.h in Headers */,
				4B9BB7BF141CDE2D000AD1CC /* OFArray_subarray.h in Headers */,
				4B1473CB17E6391900B46BB8 /* OFAutoreleasePool+Private.h in Headers */,
				4BB99CDC1FAEC9DA00CC79A9 /* OFCharacterSet_bitset.h in Headers */,
				4BB99CE41FAF542000CC79A9 /* OFCharacterSet_range.h in Headers */,
				4BA85BCA140ECCE800E91D51 /* OFCountedSet_hashtable.h in Headers */,
				4B1223141F23E6C000D9F8FF /* OFData+Private.h in Headers */,
				4B2B3E7F140D430500EC2F7C /* OFDictionary_hashtable.h in Headers */,
				4B06855518B2AD3800FC731A /* OFINICategory+Private.h in Headers */,
				4B0EA9231898690E00F573A4 /* OFKernelEventObserver+Private.h in Headers */,
				4B0EA91B1898690E00F573A4 /* OFKernelEventObserver_kqueue.h in Headers */,
				4B0EA91D1898690E00F573A4 /* OFKernelEventObserver_poll.h in Headers */,
3363
3364
3365
3366
3367
3368
3369



3370
3371
3372
3373
3374
3375
3376
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413







+
+
+







				4B2C211F1DA292BE00735907 /* OFApplication.m in Sources */,
				4B2C21201DA292BE00735907 /* OFArray.m in Sources */,
				4B2C21211DA292BE00735907 /* OFArray_adjacent.m in Sources */,
				4B2C21221DA292BE00735907 /* OFArray_adjacentSubarray.m in Sources */,
				4B2C21231DA292BE00735907 /* OFArray_subarray.m in Sources */,
				4B2C21241DA292BE00735907 /* OFAutoreleasePool.m in Sources */,
				4B2C21261DA292BE00735907 /* OFBlock.m in Sources */,
				4BB99CDB1FAEC9DA00CC79A9 /* OFCharacterSet.m in Sources */,
				4BB99CDF1FAEC9DA00CC79A9 /* OFCharacterSet_bitset.m in Sources */,
				4BB99CE71FAF542000CC79A9 /* OFCharacterSet_range.m in Sources */,
				4B2C21271DA292BE00735907 /* OFCondition.m in Sources */,
				4B2C21281DA292BE00735907 /* OFConstantString.m in Sources */,
				4B2C21291DA292BE00735907 /* OFCountedSet.m in Sources */,
				4B2C212A1DA292BE00735907 /* OFCountedSet_hashtable.m in Sources */,
				4B2C212B1DA292BE00735907 /* OFData.m in Sources */,
				4B2C212C1DA292BE00735907 /* OFData+CryptoHashing.m in Sources */,
				4B2C212D1DA292BE00735907 /* OFData+MessagePackValue.m in Sources */,
3573
3574
3575
3576
3577
3578
3579



3580
3581
3582
3583
3584
3585
3586
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626







+
+
+







				4B3D238B1337FC0D00DD29B8 /* OFApplication.m in Sources */,
				4B3D238C1337FC0D00DD29B8 /* OFArray.m in Sources */,
				4B2B3E7E140D430500EC2F7C /* OFArray_adjacent.m in Sources */,
				4B9BB7BE141CDE2D000AD1CC /* OFArray_adjacentSubarray.m in Sources */,
				4B9BB7C0141CDE2D000AD1CC /* OFArray_subarray.m in Sources */,
				4B3D238D1337FC0D00DD29B8 /* OFAutoreleasePool.m in Sources */,
				4B3D238E1337FC0D00DD29B8 /* OFBlock.m in Sources */,
				4BB99CDA1FAEC9DA00CC79A9 /* OFCharacterSet.m in Sources */,
				4BB99CDE1FAEC9DA00CC79A9 /* OFCharacterSet_bitset.m in Sources */,
				4BB99CE61FAF542000CC79A9 /* OFCharacterSet_range.m in Sources */,
				4B674401163C395900EB1E59 /* OFCondition.m in Sources */,
				4B3D238F1337FC0D00DD29B8 /* OFConstantString.m in Sources */,
				4B45355413DCFE1E0037AB4D /* OFCountedSet.m in Sources */,
				4BA85BCB140ECCE800E91D51 /* OFCountedSet_hashtable.m in Sources */,
				4B3D23901337FC0D00DD29B8 /* OFData.m in Sources */,
				4B3D23911337FC0D00DD29B8 /* OFData+CryptoHashing.m in Sources */,
				4B879A8D177231F000EBCEA4 /* OFData+MessagePackValue.m in Sources */,
3788
3789
3790
3791
3792
3793
3794

3795
3796
3797
3798
3799
3800
3801
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842







+







		4B76F4711DA2C2BB00CFF831 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				4BD9CA001DA2C5FC00E5AD52 /* ForwardingTests.m in Sources */,
				4BD9CA011DA2C5FE00E5AD52 /* OFArrayTests.m in Sources */,
				4BD9CA021DA2C60200E5AD52 /* OFBlockTests.m in Sources */,
				4BB99CEA1FAF77BC00CC79A9 /* OFCharacterSetTests.m in Sources */,
				4BD9CA031DA2C60400E5AD52 /* OFDataTests.m in Sources */,
				4BD9CA041DA2C60700E5AD52 /* OFDateTests.m in Sources */,
				4BD9CA051DA2C60900E5AD52 /* OFDictionaryTests.m in Sources */,
				4BD9CA061DA2C60B00E5AD52 /* OFHMACTests.m in Sources */,
				4BD9CA071DA2C60E00E5AD52 /* OFHTTPClientTests.m in Sources */,
				4BD9CA081DA2C61900E5AD52 /* OFHTTPCookieTests.m in Sources */,
				4B11D09D1EC901440094423D /* OFHTTPCookieManagerTests.m in Sources */,
3836
3837
3838
3839
3840
3841
3842

3843
3844
3845
3846
3847
3848
3849
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891







+







		4BF33AEC133807310059CEF7 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				4BA4846615CC9FAD00D75360 /* ForwardingTests.m in Sources */,
				4BF33AFC133807A20059CEF7 /* OFArrayTests.m in Sources */,
				4BF33AFD133807A20059CEF7 /* OFBlockTests.m in Sources */,
				4BB99CE91FAF77BC00CC79A9 /* OFCharacterSetTests.m in Sources */,
				4BF33AFE133807A20059CEF7 /* OFDataTests.m in Sources */,
				4BF33AFF133807A20059CEF7 /* OFDateTests.m in Sources */,
				4BF33B00133807A20059CEF7 /* OFDictionaryTests.m in Sources */,
				4BF0DD741D44645D001D9949 /* OFHMACTests.m in Sources */,
				4BB4B54A16776094002A2DCE /* OFHTTPClientTests.m in Sources */,
				4B2610C61D86305C001F16C9 /* OFHTTPCookieTests.m in Sources */,
				4B11D09C1EC901440094423D /* OFHTTPCookieManagerTests.m in Sources */,

Modified src/Makefile from [b704d58ad2] to [3eed873b17].

10
11
12
13
14
15
16

17
18
19
20
21
22
23
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24







+







LIB_MINOR = ${OBJFW_LIB_MINOR}
FRAMEWORK = ObjFW.framework

SRCS = OFApplication.m			\
       OFArray.m			\
       OFAutoreleasePool.m		\
       OFBlock.m			\
       OFCharacterSet.m			\
       OFConstantString.m		\
       OFCountedSet.m			\
       OFData.m				\
       OFData+CryptoHashing.m		\
       OFData+MessagePackValue.m	\
       OFDate.m				\
       OFDictionary.m			\
153
154
155
156
157
158
159


160
161
162
163
164
165
166
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169







+
+







	    objfw-defs.h			\
	    platform.h				\
	    ${USE_INCLUDES_ATOMIC}

SRCS += OFArray_adjacent.m		\
	OFArray_adjacentSubarray.m	\
	OFArray_subarray.m		\
	OFCharacterSet_bitset.m		\
	OFCharacterSet_range.m		\
	OFCountedSet_hashtable.m	\
	OFDictionary_hashtable.m	\
	OFMutableArray_adjacent.m	\
	OFMutableDictionary_hashtable.m	\
	OFMutableSet_hashtable.m	\
	OFMutableString_UTF8.m		\
	OFSet_hashtable.m		\

Added src/OFCharacterSet.h version [b4e9d14055].












































































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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/*
 * 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"
#import "OFString.h"

OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFCharacterSet OFCharacterSet.h ObjFW/OFCharacterSet.h
 *
 * @brief A class cluster representing a character set.
 */
@interface OFCharacterSet: OFObject
/*!
 * @brief Creates a new character set containing the characters of the
 *	  specified string.
 *
 * @param characters The characters for the character set
 * @return A new OFCharacterSet
 */
+ (instancetype)characterSetWithCharactersInString: (OFString *)characters;

/*!
 * @brief Creates a new character set containing the characters in the specified
 *	  range.
 *
 * @param range The range of characters for the character set
 * @return A new OFCharacterSet
 */
+ (instancetype)characterSetWithRange: (of_range_t)range;

/*!
 * @brief Initializes an already allocated character set with the characters of
 *	  the specified string.
 *
 * @param characters The characters for the character set
 * @return An initialized OFCharacterSet
 */
- (instancetype)initWithCharactersInString: (OFString *)characters;

/*!
 * @brief Initializes an already allocated character set with the characters in
 *	  the specified range.
 *
 * @param range The range of characters for the character set
 * @return An initialized OFCharacterSet
 */
- (instancetype)initWithRange: (of_range_t)range;

/*!
 * @brief Returns whether the specified character is a member of the character
 *	  set.
 *
 * @param character The character that is checked for being a member of the
 *		    character set
 * @return Whether the specified character is a member of the character set.
 */
- (bool)characterIsMember: (of_unichar_t)character;
@end

OF_ASSUME_NONNULL_END

Added src/OFCharacterSet.m version [21dcb32047].






























































































































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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/*
 * 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.
 */

#include "config.h"

#import "OFCharacterSet.h"
#import "OFCharacterSet_bitset.h"
#import "OFCharacterSet_range.h"

static struct {
	Class isa;
} placeholder;

@interface OFCharacterSet_placeholder: OFCharacterSet
@end

@implementation OFCharacterSet_placeholder
- (instancetype)init
{
	return (id)[[OFCharacterSet_bitset alloc] init];
}

- (instancetype)initWithCharactersInString: (OFString *)characters
{
	return (id)[[OFCharacterSet_bitset alloc]
	    initWithCharactersInString: characters];
}

- (instancetype)initWithRange: (of_range_t)range
{
	return (id)[[OFCharacterSet_range alloc] initWithRange: range];
}

- (instancetype)retain
{
	return self;
}

- (instancetype)autorelease
{
	return self;
}

- (void)release
{
}

- (void)dealloc
{
	OF_DEALLOC_UNSUPPORTED
}
@end

@implementation OFCharacterSet
+ (void)initialize
{
	if (self != [OFCharacterSet class])
		return;

	placeholder.isa = [OFCharacterSet_placeholder class];
}

+ (instancetype)alloc
{
	if (self == [OFCharacterSet class])
		return (id)&placeholder;

	return [super alloc];
}

+ (instancetype)characterSetWithCharactersInString: (OFString *)characters
{
	return [[[self alloc] initWithCharactersInString: characters]
	    autorelease];
}

+ (instancetype)characterSetWithRange: (of_range_t)range
{
	return [[[self alloc] initWithRange: range] autorelease];
}

- (instancetype)init
{
	if ([self isMemberOfClass: [OFCharacterSet class]]) {
		@try {
			[self doesNotRecognizeSelector: _cmd];
		} @catch (id e) {
			[self release];
			@throw e;
		}

		abort();
	}

	return [super init];
}

- (instancetype)initWithCharactersInString: (OFString *)characters
{
	OF_INVALID_INIT_METHOD
}

- (instancetype)initWithRange: (of_range_t)range
{
	OF_INVALID_INIT_METHOD
}

- (bool)characterIsMember: (of_unichar_t)character
{
	OF_UNRECOGNIZED_SELECTOR
}
@end

Added src/OFCharacterSet_bitset.h version [56b321110a].





























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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/*
 * 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 "OFCharacterSet.h"

OF_ASSUME_NONNULL_BEGIN

@interface OFCharacterSet_bitset: OFCharacterSet
{
	unsigned char *_bitset;
	size_t _size;
}
@end

OF_ASSUME_NONNULL_END

Added src/OFCharacterSet_bitset.m version [5c8e4572f4].









































































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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/*
 * 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.
 */

#include "config.h"

#import "OFCharacterSet_bitset.h"
#import "OFString.h"

#import "OFOutOfRangeException.h"

@implementation OFCharacterSet_bitset
- (instancetype)initWithCharactersInString: (OFString *)string
{
	self = [super init];

	@try {
		void *pool = objc_autoreleasePoolPush();
		const of_unichar_t *characters = [string characters];
		size_t length = [string length];

		for (size_t i = 0; i < length; i++) {
			of_unichar_t c = characters[i];

			if (c / 8 >= _size) {
				size_t newSize;

				if (UINT32_MAX - c < 1)
					@throw [OFOutOfRangeException
					    exception];

				newSize = OF_ROUND_UP_POW2(8, c + 1) / 8;

				_bitset = [self resizeMemory: _bitset
							size: newSize];
				memset(_bitset + _size, '\0', newSize - _size);

				_size = newSize;
			}

			of_bitset_set(_bitset, c);
		}

		objc_autoreleasePoolPop(pool);
	} @catch (id e) {
		[self release];
		@throw e;
	}

	return self;
}

- (bool)characterIsMember: (of_unichar_t)character
{
	if (character / 8 >= _size)
		return false;

	return of_bitset_isset(_bitset, character);
}
@end

Added src/OFCharacterSet_range.h version [0cb05fe3fa].




























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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/*
 * 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 "OFCharacterSet.h"

OF_ASSUME_NONNULL_BEGIN

@interface OFCharacterSet_range: OFCharacterSet
{
	of_range_t _range;
}
@end

OF_ASSUME_NONNULL_END

Added src/OFCharacterSet_range.m version [53db2a4c2e].
















































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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/*
 * 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.
 */

#include "config.h"

#import "OFCharacterSet_range.h"
#import "OFString.h"

#import "OFOutOfRangeException.h"

@implementation OFCharacterSet_range
- (instancetype)initWithRange: (of_range_t)range
{
	self = [super init];

	@try {
		if (SIZE_MAX - range.location < range.length)
			@throw [OFOutOfRangeException exception];

		_range = range;
	} @catch (id e) {
		[self release];
		@throw e;
	}

	return self;
}

- (bool)characterIsMember: (of_unichar_t)character
{
	return (character >= _range.location &&
	    character < _range.location + _range.length);
}
@end

Modified src/ObjFW.h from [f1eac88a2f] to [64ad36595d].

15
16
17
18
19
20
21

22
23
24
25
26
27
28
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29







+







 */

#import "OFObject.h"
#import "OFBlock.h"

#import "OFAutoreleasePool.h"
#import "OFString.h"
#import "OFCharacterSet.h"

#import "OFData.h"
#import "OFArray.h"

#import "OFList.h"
#import "OFSortedList.h"

Modified src/macros.h from [66bafa72fb] to [4089255adf].

764
765
766
767
768
769
770
771

772
773
774
775
776
777

778
779
780
781
782
783

784
785
786
787
788
789
790
764
765
766
767
768
769
770

771
772
773
774
775
776

777
778
779
780
781
782

783
784
785
786
787
788
789
790







-
+





-
+





-
+







		OF_HASH_ADD(hash, (otherCopy >> 24) & 0xFF);	\
		OF_HASH_ADD(hash, (otherCopy >> 16) & 0xFF);	\
		OF_HASH_ADD(hash, (otherCopy >>  8) & 0xFF);	\
		OF_HASH_ADD(hash, otherCopy & 0xFF);		\
	}

static OF_INLINE bool
of_bitset_isset(uint8_t *_Nonnull storage, size_t idx)
of_bitset_isset(unsigned char *_Nonnull storage, size_t idx)
{
	return storage[idx / 8] & (1 << (idx % 8));
}

static OF_INLINE void
of_bitset_set(uint8_t *_Nonnull storage, size_t idx)
of_bitset_set(unsigned char *_Nonnull storage, size_t idx)
{
	storage[idx / 8] |= (1 << (idx % 8));
}

static OF_INLINE void
of_bitset_clear(uint8_t *_Nonnull storage, size_t idx)
of_bitset_clear(unsigned char *_Nonnull storage, size_t idx)
{
	storage[idx / 8] &= ~(1 << (idx % 8));
}

static OF_INLINE char *_Nullable
of_strdup(const char *_Nonnull string)
{

Modified tests/Makefile from [f674c5c6e9] to [5879b5f371].

1
2
3
4
5
6
7
8
9
10
11
12
13

14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21













+







include ../extra.mk

SUBDIRS = ${TESTPLUGIN}

CLEAN = EBOOT.PBP		\
	boot.dol		\
	${PROG_NOINST}.arm9	\
	${PROG_NOINST}.nds

PROG_NOINST = tests${PROG_SUFFIX}
SRCS = ForwardingTests.m		\
       OFArrayTests.m			\
       ${OFBLOCKTESTS_M}		\
       OFCharacterSetTests.m		\
       OFDataTests.m			\
       OFDateTests.m			\
       OFDictionaryTests.m		\
       OFHTTPCookieTests.m		\
       OFHTTPCookieManagerTests.m	\
       OFInvocationTests.m		\
       OFJSONTests.m			\

Added tests/OFCharacterSetTests.m version [d40eda3b19].































































































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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
/*
 * 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.
 */

#include "config.h"

#import "OFCharacterSet.h"
#import "OFCharacterSet_bitset.h"
#import "OFCharacterSet_range.h"
#import "OFAutoreleasePool.h"

#import "TestsAppDelegate.h"

static OFString *module = nil;

@interface SimpleCharacterSet: OFCharacterSet
@end

@implementation SimpleCharacterSet
- (bool)characterIsMember: (of_unichar_t)character
{
	return (character % 2 == 0);
}
@end

@implementation TestsAppDelegate (OFCharacterSetTests)
- (void)characterSetTests
{
	OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init];
	OFCharacterSet *cs;
	bool ok;

	module = @"OFCharacterSet";

	cs = [[[SimpleCharacterSet alloc] init] autorelease];

	ok = true;
	for (of_unichar_t c = 0; c < 65536; c++) {
		if (c % 2 == 0) {
			if (![cs characterIsMember: c])
				ok = false;
		} else if ([cs characterIsMember: c])
			ok = false;
	}
	TEST(@"-[characterIsMember:]", ok);

	module = @"OFCharacterSet_bitset";

	TEST(@"+[characterSetWithCharactersInString:]",
	    (cs = [OFCharacterSet characterSetWithCharactersInString:
	    @"0123456789"]) &&
	    [cs isKindOfClass: [OFCharacterSet_bitset class]])

	ok = true;
	for (of_unichar_t c = 0; c < 65536; c++) {
		if (c >= '0' && c <= '9') {
			if (![cs characterIsMember: c])
				ok = false;
		} else if ([cs characterIsMember: c])
			ok = false;
	}
	TEST(@"-[characterIsMember:]", ok);

	module = @"OFCharacterSet_range";

	TEST(@"+[characterSetWithRange:]",
	    (cs = [OFCharacterSet characterSetWithRange: of_range('0', 10)]) &&
	    [cs isKindOfClass: [OFCharacterSet_range class]])

	ok = true;
	for (of_unichar_t c = 0; c < 65536; c++) {
		if (c >= '0' && c <= '9') {
			if (![cs characterIsMember: c])
				ok = false;
		} else if ([cs characterIsMember: c])
			ok = false;
	}
	TEST(@"-[characterIsMember:]", ok);

	[pool drain];
}
@end

Modified tests/TestsAppDelegate.h from [33527ebc5b] to [c87559403c].

75
76
77
78
79
80
81




82
83
84
85
86
87
88
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92







+
+
+
+







@interface TestsAppDelegate (OFArrayTests)
- (void)arrayTests;
@end

@interface TestsAppDelegate (OFBlockTests)
- (void)blockTests;
@end

@interface TestsAppDelegate (OFCharacterSetTests)
- (void)characterSetTests;
@end

@interface TestsAppDelegate (OFDataTests)
- (void)dataTests;
@end

@interface TestsAppDelegate (OFDateTests)
- (void)dateTests;

Modified tests/TestsAppDelegate.m from [44ee73c52a] to [32055328b2].

376
377
378
379
380
381
382

383
384
385
386
387
388
389
390

391
392
393
394
395
396
397
376
377
378
379
380
381
382
383
384
385
386

387
388
389
390
391
392
393
394
395
396
397
398







+



-




+







#endif
#if defined(OF_WII) && defined(OF_HAVE_FILES)
	[[OFFileManager defaultManager]
	    changeCurrentDirectoryPath: @"/apps/objfw-tests"];
#endif

	[self runtimeTests];
	[self objectTests];
	[self methodSignatureTests];
	[self invocationTests];
	[self forwardingTests];
	[self objectTests];
#ifdef OF_HAVE_BLOCKS
	[self blockTests];
#endif
	[self stringTests];
	[self characterSetTests];
	[self dataTests];
	[self arrayTests];
	[self dictionaryTests];
	[self listTests];
	[self setTests];
	[self dateTests];
	[self numberTests];