ObjFW  Check-in [496695d778]

Overview
Comment:Either restrict subclassing or reserve ivar space

This allows ABI stability with the fragile ABI.

Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 496695d778679f81278054928ffcfe582e35e77dddd229be51cc5869ab21fa85
User & Date: js on 2019-09-29 19:35:38
Other Links: manifest | tags
Context
2019-09-29
19:38
Fix incorrectly increased library version check-in: 9b97be3ec8 user: js tags: trunk
19:35
Either restrict subclassing or reserve ivar space check-in: 496695d778 user: js tags: trunk
15:58
Remove OFAutoreleasePool check-in: 09be825f88 user: js tags: trunk
Changes

Modified src/OFASN1BitString.h from [e158879bfe] to [95faab1673].

22
23
24
25
26
27
28

29
30
31
32
33
34
35
OF_ASSUME_NONNULL_BEGIN

@class OFData;

/*!
 * @brief An ASN.1 BitString.
 */

@interface OFASN1BitString: OFObject <OFASN1DERRepresentation>
{
	OFData *_bitStringValue;
	size_t _bitStringLength;
}

/*!







>







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
OF_ASSUME_NONNULL_BEGIN

@class OFData;

/*!
 * @brief An ASN.1 BitString.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFASN1BitString: OFObject <OFASN1DERRepresentation>
{
	OFData *_bitStringValue;
	size_t _bitStringLength;
}

/*!

Modified src/OFASN1Boolean.h from [bbfa3b2e00] to [e3f3ef71bd].

20
21
22
23
24
25
26

27
28
29
30
31
32
33
#import "OFASN1Value.h"

OF_ASSUME_NONNULL_BEGIN

/*!
 * @brief An ASN.1 Boolean.
 */

@interface OFASN1Boolean: OFObject <OFASN1DERRepresentation>
{
	bool _booleanValue;
}

/*!
 * @brief The Boolean value.







>







20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#import "OFASN1Value.h"

OF_ASSUME_NONNULL_BEGIN

/*!
 * @brief An ASN.1 Boolean.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFASN1Boolean: OFObject <OFASN1DERRepresentation>
{
	bool _booleanValue;
}

/*!
 * @brief The Boolean value.

Modified src/OFASN1Enumerated.h from [1bbc558259] to [57303b37e8].

19
20
21
22
23
24
25

26
27
28
29
30
31
32
#import "OFASN1Value.h"

OF_ASSUME_NONNULL_BEGIN

/*!
 * @brief An ASN.1 Enumerated.
 */

@interface OFASN1Enumerated: OFObject
{
	intmax_t _integerValue;
}

/*!
 * @brief The integer value.







>







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#import "OFASN1Value.h"

OF_ASSUME_NONNULL_BEGIN

/*!
 * @brief An ASN.1 Enumerated.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFASN1Enumerated: OFObject
{
	intmax_t _integerValue;
}

/*!
 * @brief The integer value.

Modified src/OFASN1IA5String.h from [7f046db22f] to [2dc26128e4].

21
22
23
24
25
26
27

28
29
30
31
32
33
34
OF_ASSUME_NONNULL_BEGIN

@class OFString;

/*!
 * @brief An ASN.1 IA5String.
 */

@interface OFASN1IA5String: OFObject
{
	OFString *_IA5StringValue;
}

/*!
 * @brief The IA5String value.







>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
OF_ASSUME_NONNULL_BEGIN

@class OFString;

/*!
 * @brief An ASN.1 IA5String.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFASN1IA5String: OFObject
{
	OFString *_IA5StringValue;
}

/*!
 * @brief The IA5String value.

Modified src/OFASN1Integer.h from [1787c0819c] to [750cb161c4].

19
20
21
22
23
24
25

26
27
28
29
30
31
32
#import "OFASN1Value.h"

OF_ASSUME_NONNULL_BEGIN

/*!
 * @brief An ASN.1 Integer.
 */

@interface OFASN1Integer: OFObject
{
	intmax_t _integerValue;
}

/*!
 * @brief The Integer value.







>







19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#import "OFASN1Value.h"

OF_ASSUME_NONNULL_BEGIN

/*!
 * @brief An ASN.1 Integer.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFASN1Integer: OFObject
{
	intmax_t _integerValue;
}

/*!
 * @brief The Integer value.

Modified src/OFASN1NumericString.h from [0728c17a9c] to [9b3578e8e9].

21
22
23
24
25
26
27

28
29
30
31
32
33
34
OF_ASSUME_NONNULL_BEGIN

@class OFString;

/*!
 * @brief An ASN.1 NumericString.
 */

@interface OFASN1NumericString: OFObject
{
	OFString *_numericStringValue;
}

/*!
 * @brief The NumericString value.







>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
OF_ASSUME_NONNULL_BEGIN

@class OFString;

/*!
 * @brief An ASN.1 NumericString.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFASN1NumericString: OFObject
{
	OFString *_numericStringValue;
}

/*!
 * @brief The NumericString value.

Modified src/OFASN1ObjectIdentifier.h from [2e8623fcd6] to [6b96b42139].

22
23
24
25
26
27
28

29
30
31
32
33
34
35

@class OFArray OF_GENERIC(ObjetType);
@class OFNumber;

/*!
 * @brief An ASN.1 ObjectIdentifier.
 */

@interface OFASN1ObjectIdentifier: OFObject
{
	OFArray OF_GENERIC(OFNumber *) *_subidentifiers;
}

/*!
 * @brief The subidentifiers of the ObjectIdentifier.







>







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

@class OFArray OF_GENERIC(ObjetType);
@class OFNumber;

/*!
 * @brief An ASN.1 ObjectIdentifier.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFASN1ObjectIdentifier: OFObject
{
	OFArray OF_GENERIC(OFNumber *) *_subidentifiers;
}

/*!
 * @brief The subidentifiers of the ObjectIdentifier.

Modified src/OFASN1OctetString.h from [c214a23949] to [10995e894c].

21
22
23
24
25
26
27

28
29
30
31
32
33
34
OF_ASSUME_NONNULL_BEGIN

@class OFData;

/*!
 * @brief An ASN.1 OctetString.
 */

@interface OFASN1OctetString: OFObject
{
	OFData *_octetStringValue;
}

/*!
 * @brief The OctetString value.







>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
OF_ASSUME_NONNULL_BEGIN

@class OFData;

/*!
 * @brief An ASN.1 OctetString.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFASN1OctetString: OFObject
{
	OFData *_octetStringValue;
}

/*!
 * @brief The OctetString value.

Modified src/OFASN1PrintableString.h from [95fd360121] to [acd9d38f09].

21
22
23
24
25
26
27

28
29
30
31
32
33
34
OF_ASSUME_NONNULL_BEGIN

@class OFString;

/*!
 * @brief An ASN.1 PrintableString.
 */

@interface OFASN1PrintableString: OFObject
{
	OFString *_printableStringValue;
}

/*!
 * @brief The PrintableString value.







>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
OF_ASSUME_NONNULL_BEGIN

@class OFString;

/*!
 * @brief An ASN.1 PrintableString.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFASN1PrintableString: OFObject
{
	OFString *_printableStringValue;
}

/*!
 * @brief The PrintableString value.

Modified src/OFASN1UTF8String.h from [8773fa600a] to [49619d1ec5].

21
22
23
24
25
26
27

28
29
30
31
32
33
34
OF_ASSUME_NONNULL_BEGIN

@class OFString;

/*!
 * @brief An ASN.1 UTF8String.
 */

@interface OFASN1UTF8String: OFObject
{
	OFString *_UTF8StringValue;
}

/*!
 * @brief The UTF8String value.







>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
OF_ASSUME_NONNULL_BEGIN

@class OFString;

/*!
 * @brief An ASN.1 UTF8String.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFASN1UTF8String: OFObject
{
	OFString *_UTF8StringValue;
}

/*!
 * @brief The UTF8String value.

Modified src/OFASN1Value.h from [a17482039e] to [82f404c6bc].

68
69
70
71
72
73
74

75
76
77
78
79
80
81
	/*! IA5String */
	OF_ASN1_TAG_NUMBER_IA5_STRING	     = 0x16
} of_asn1_tag_number_t;

/*!
 * @brief A class representing an ASN.1 value.
 */

@interface OFASN1Value: OFObject
{
	of_asn1_tag_class_t _tagClass;
	of_asn1_tag_number_t _tagNumber;
	bool _constructed;
	OFData *_DEREncodedContents;
}







>







68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
	/*! IA5String */
	OF_ASN1_TAG_NUMBER_IA5_STRING	     = 0x16
} of_asn1_tag_number_t;

/*!
 * @brief A class representing an ASN.1 value.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFASN1Value: OFObject
{
	of_asn1_tag_class_t _tagClass;
	of_asn1_tag_number_t _tagNumber;
	bool _constructed;
	OFData *_DEREncodedContents;
}

Modified src/OFAdjacentArray.h from [6f24e09a18] to [cebe5ad233].

17
18
19
20
21
22
23

24
25
26
27
28
29
30

#import "OFArray.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMutableData;


@interface OFAdjacentArray: OFArray
{
	OFMutableData *_array;
}
@end

OF_ASSUME_NONNULL_END







>







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

#import "OFArray.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMutableData;

OF_SUBCLASSING_RESTRICTED
@interface OFAdjacentArray: OFArray
{
	OFMutableData *_array;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFAdjacentSubarray.h from [089d0764c2] to [bd17bec51a].

15
16
17
18
19
20
21

22
23
24
25
 * file.
 */

#import "OFSubarray.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFAdjacentSubarray: OFSubarray
@end

OF_ASSUME_NONNULL_END







>




15
16
17
18
19
20
21
22
23
24
25
26
 * file.
 */

#import "OFSubarray.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFAdjacentSubarray: OFSubarray
@end

OF_ASSUME_NONNULL_END

Modified src/OFApplication.h from [f18dce4f34] to [537950f969].

118
119
120
121
122
123
124

125
126
127
128
129
130
131
 *
 * @brief A class which represents the application as an object.
 *
 * In order to create a new OFApplication, you should create a class conforming
 * to the optional @ref OFApplicationDelegate protocol and put
 * `OF_APPLICATION_DELEGATE(NameOfYourClass)` in the .m file of that class.
 */

@interface OFApplication: OFObject
{
	OFString *_programName;
	OFArray OF_GENERIC(OFString *) *_arguments;
	OFMutableDictionary OF_GENERIC(OFString *, OFString *) *_environment;
	int *_argc;
	char ***_argv;







>







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
 *
 * @brief A class which represents the application as an object.
 *
 * In order to create a new OFApplication, you should create a class conforming
 * to the optional @ref OFApplicationDelegate protocol and put
 * `OF_APPLICATION_DELEGATE(NameOfYourClass)` in the .m file of that class.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFApplication: OFObject
{
	OFString *_programName;
	OFArray OF_GENERIC(OFString *) *_arguments;
	OFMutableDictionary OF_GENERIC(OFString *, OFString *) *_environment;
	int *_argc;
	char ***_argv;

Modified src/OFArray.h from [f7419d3b33] to [72663abff1].

88
89
90
91
92
93
94




95
96
97
98
99
100
101
 * @brief An abstract class for storing objects in an array.
 *
 * @note Subclasses must implement @ref count and @ref objectAtIndex:.
 */
@interface OFArray OF_GENERIC(ObjectType): OFObject <OFCopying,
    OFMutableCopying, OFCollection, OFSerialization, OFJSONRepresentation,
    OFMessagePackRepresentation>




#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif
/*!
 * @brief The objects of the array as a C array.
 *
 * The result is valid until the autorelease pool is released. If you want to







>
>
>
>







88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
 * @brief An abstract class for storing objects in an array.
 *
 * @note Subclasses must implement @ref count and @ref objectAtIndex:.
 */
@interface OFArray OF_GENERIC(ObjectType): OFObject <OFCopying,
    OFMutableCopying, OFCollection, OFSerialization, OFJSONRepresentation,
    OFMessagePackRepresentation>
{
	OF_RESERVE_IVARS(4)
}

#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif
/*!
 * @brief The objects of the array as a C array.
 *
 * The result is valid until the autorelease pool is released. If you want to

Modified src/OFBitSetCharacterSet.h from [354358342b] to [0f5e448e50].

15
16
17
18
19
20
21

22
23
24
25
26
27
28
29
 * file.
 */

#import "OFCharacterSet.h"

OF_ASSUME_NONNULL_BEGIN


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

OF_ASSUME_NONNULL_END







>








15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
 * file.
 */

#import "OFCharacterSet.h"

OF_ASSUME_NONNULL_BEGIN

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

OF_ASSUME_NONNULL_END

Modified src/OFBlock.h from [ace9ad8531] to [83c8b8b8fe].

27
28
29
30
31
32
33

34
35
36

37
38
39

40
41
42
43
 * @brief The class for all blocks, since all blocks are also objects.
 */
@interface OFBlock: OFObject
+ (instancetype)alloc OF_UNAVAILABLE;
- (instancetype)init OF_UNAVAILABLE;
@end


@interface OFStackBlock: OFBlock
@end


@interface OFGlobalBlock: OFBlock
@end


@interface OFMallocBlock: OFBlock
@end

OF_ASSUME_NONNULL_END







>



>



>




27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 * @brief The class for all blocks, since all blocks are also objects.
 */
@interface OFBlock: OFObject
+ (instancetype)alloc OF_UNAVAILABLE;
- (instancetype)init OF_UNAVAILABLE;
@end

OF_SUBCLASSING_RESTRICTED
@interface OFStackBlock: OFBlock
@end

OF_SUBCLASSING_RESTRICTED
@interface OFGlobalBlock: OFBlock
@end

OF_SUBCLASSING_RESTRICTED
@interface OFMallocBlock: OFBlock
@end

OF_ASSUME_NONNULL_END

Modified src/OFBytesValue.h from [064f02062a] to [12d8c96477].

15
16
17
18
19
20
21

22
23
24
25
26
27
28
29
30
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFBytesValue: OFValue
{
	size_t _size;
	void *_bytes;
	const char *_objCType;
}
@end

OF_ASSUME_NONNULL_END







>









15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFBytesValue: OFValue
{
	size_t _size;
	void *_bytes;
	const char *_objCType;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFCharacterSet.h from [f46e129e3b] to [de7fc1853c].

24
25
26
27
28
29
30




31
32
33
34
35
36
37
 * @class OFCharacterSet OFCharacterSet.h ObjFW/OFCharacterSet.h
 *
 * @brief A class cluster representing a character set.
 *
 * @note Subclasses must implement @ref characterIsMember:.
 */
@interface OFCharacterSet: OFObject




#ifdef OF_HAVE_CLASS_PROPERTIES
@property (class, readonly, nonatomic) OFCharacterSet *whitespaceCharacterSet;
#endif

/*!
 * @brief The inverted set, containing only the characters that do not exist in
 *	  the receiver.







>
>
>
>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 * @class OFCharacterSet OFCharacterSet.h ObjFW/OFCharacterSet.h
 *
 * @brief A class cluster representing a character set.
 *
 * @note Subclasses must implement @ref characterIsMember:.
 */
@interface OFCharacterSet: OFObject
{
	OF_RESERVE_IVARS(4)
}

#ifdef OF_HAVE_CLASS_PROPERTIES
@property (class, readonly, nonatomic) OFCharacterSet *whitespaceCharacterSet;
#endif

/*!
 * @brief The inverted set, containing only the characters that do not exist in
 *	  the receiver.

Modified src/OFColor.h from [edab75bee1] to [e931392faa].

23
24
25
26
27
28
29

30
31
32
33
34
35
36
 * @class OFColor OFColor.h ObjFW/OFColor.h
 *
 * @brief A class for storing a color.
 */
@interface OFColor: OFObject
{
	float _red, _green, _blue, _alpha;

}

/*!
 * @brief Creates a new color with the specified red, green, blue and alpha
 *	  value.
 *
 * @param red The red value of the color, between 0.0 and 1.0







>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 * @class OFColor OFColor.h ObjFW/OFColor.h
 *
 * @brief A class for storing a color.
 */
@interface OFColor: OFObject
{
	float _red, _green, _blue, _alpha;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Creates a new color with the specified red, green, blue and alpha
 *	  value.
 *
 * @param red The red value of the color, between 0.0 and 1.0

Modified src/OFCondition.h from [71a90ae1ff] to [d3391d482d].

24
25
26
27
28
29
30

31
32
33
34
35
36
37
@class OFDate;

/*!
 * @class OFCondition OFCondition.h ObjFW/OFCondition.h
 *
 * @brief A class implementing a condition variable for thread synchronization.
 */

@interface OFCondition: OFMutex
{
	of_condition_t _condition;
	bool _conditionInitialized;
}

/*!







>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@class OFDate;

/*!
 * @class OFCondition OFCondition.h ObjFW/OFCondition.h
 *
 * @brief A class implementing a condition variable for thread synchronization.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFCondition: OFMutex
{
	of_condition_t _condition;
	bool _conditionInitialized;
}

/*!

Modified src/OFConstantString.h from [1c96b5dc8b] to [c489056f79].

31
32
33
34
35
36
37

38
39
40
41
42
43
44
45
#endif

/*!
 * @class OFConstantString OFConstantString.h ObjFW/OFConstantString.h
 *
 * @brief A class for storing constant strings using the `@""` literal.
 */

@interface OFConstantString: OFString
{
	char *_cString;
	unsigned int _cStringLength;
}
@end

OF_ASSUME_NONNULL_END







>








31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#endif

/*!
 * @class OFConstantString OFConstantString.h ObjFW/OFConstantString.h
 *
 * @brief A class for storing constant strings using the `@""` literal.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFConstantString: OFString
{
	char *_cString;
	unsigned int _cStringLength;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFCountedMapTableSet.h from [425da1187b] to [54cdfe273c].

17
18
19
20
21
22
23

24
25
26
27
28
29
30

#import "OFCountedSet.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMapTable;


@interface OFCountedMapTableSet: OFCountedSet
{
	OFMapTable *_mapTable;
}
@end

OF_ASSUME_NONNULL_END







>







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

#import "OFCountedSet.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMapTable;

OF_SUBCLASSING_RESTRICTED
@interface OFCountedMapTableSet: OFCountedSet
{
	OFMapTable *_mapTable;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFCountedSet.h from [4abf7110e4] to [2ecebf0177].

44
45
46
47
48
49
50




51
52
53
54
55
56
57
 *	 of @ref OFSet and @ref OFMutableSet that need to be implemented.
 */
@interface OFCountedSet OF_GENERIC(ObjectType):
    OFMutableSet OF_GENERIC(ObjectType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif




/*!
 * @brief Returns how often the object is in the set.
 *
 * @return How often the object is in the set
 */
- (size_t)countForObject: (ObjectType)object;








>
>
>
>







44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
 *	 of @ref OFSet and @ref OFMutableSet that need to be implemented.
 */
@interface OFCountedSet OF_GENERIC(ObjectType):
    OFMutableSet OF_GENERIC(ObjectType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Returns how often the object is in the set.
 *
 * @return How often the object is in the set
 */
- (size_t)countForObject: (ObjectType)object;

Modified src/OFDNSResolver.h from [3356c8f51e] to [7a80eed2c3].

117
118
119
120
121
122
123

124
125
126
127
128
129
130
 * @brief A class for resolving DNS names.
 *
 * @note If you change any of the properties, make sure to set
 *	 @ref configReloadInterval to 0, as otherwise your changes will be
 *	 reverted back to the system configuration on the next periodic config
 *	 reload.
 */

@interface OFDNSResolver: OFObject
{
	OFDictionary OF_GENERIC(OFString *, OFArray OF_GENERIC(OFString *) *)
	    *_staticHosts;
	OFArray OF_GENERIC(OFString *) *_nameServers;
	OFString *_Nullable _localDomain;
	OFArray OF_GENERIC(OFString *) *_searchDomains;







>







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
 * @brief A class for resolving DNS names.
 *
 * @note If you change any of the properties, make sure to set
 *	 @ref configReloadInterval to 0, as otherwise your changes will be
 *	 reverted back to the system configuration on the next periodic config
 *	 reload.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFDNSResolver: OFObject
{
	OFDictionary OF_GENERIC(OFString *, OFArray OF_GENERIC(OFString *) *)
	    *_staticHosts;
	OFArray OF_GENERIC(OFString *) *_nameServers;
	OFString *_Nullable _localDomain;
	OFArray OF_GENERIC(OFString *) *_searchDomains;

Modified src/OFDNSResourceRecord.h from [4893d76bc3] to [2ea810b61f].

73
74
75
76
77
78
79

80
81
82
83
84
85
86
 */
@interface OFDNSResourceRecord: OFObject <OFCopying>
{
	OFString *_name;
	of_dns_resource_record_class_t _recordClass;
	of_dns_resource_record_type_t _recordType;
	uint32_t _TTL;

}

/**
 * @brief The domain name to which the resource record belongs.
 */
@property (readonly, nonatomic) OFString *name;








>







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
 */
@interface OFDNSResourceRecord: OFObject <OFCopying>
{
	OFString *_name;
	of_dns_resource_record_class_t _recordClass;
	of_dns_resource_record_type_t _recordType;
	uint32_t _TTL;
	OF_RESERVE_IVARS(4)
}

/**
 * @brief The domain name to which the resource record belongs.
 */
@property (readonly, nonatomic) OFString *name;

117
118
119
120
121
122
123

124
125
126
127
128
129
130
@end

/*!
 * @class OFADNSResourceRecord OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an A DNS resource record.
 */

@interface OFADNSResourceRecord: OFDNSResourceRecord
{
	of_socket_address_t _address;
}

/*!
 * @brief The IPv4 address of the resource record.







>







118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
@end

/*!
 * @class OFADNSResourceRecord OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an A DNS resource record.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFADNSResourceRecord: OFDNSResourceRecord
{
	of_socket_address_t _address;
}

/*!
 * @brief The IPv4 address of the resource record.
152
153
154
155
156
157
158

159
160
161
162
163
164
165

/*!
 * @class OFAAAADNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class represenging a DNS resource record.
 */

@interface OFAAAADNSResourceRecord: OFDNSResourceRecord
{
	of_socket_address_t _address;
}

/*!
 * @brief The IPv6 address of the resource record.







>







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

/*!
 * @class OFAAAADNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class represenging a DNS resource record.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFAAAADNSResourceRecord: OFDNSResourceRecord
{
	of_socket_address_t _address;
}

/*!
 * @brief The IPv6 address of the resource record.
187
188
189
190
191
192
193

194
195
196
197
198
199
200

/*!
 * @class OFCNAMEDNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing a CNAME DNS resource record.
 */

@interface OFCNAMEDNSResourceRecord: OFDNSResourceRecord
{
	OFString *_alias;
}

/*!
 * @brief The alias of the resource record.







>







190
191
192
193
194
195
196
197
198
199
200
201
202
203
204

/*!
 * @class OFCNAMEDNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing a CNAME DNS resource record.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFCNAMEDNSResourceRecord: OFDNSResourceRecord
{
	OFString *_alias;
}

/*!
 * @brief The alias of the resource record.
224
225
226
227
228
229
230

231
232
233
234
235
236
237

/*!
 * @class OFHINFODNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an HINFO DNS resource record.
 */

@interface OFHINFODNSResourceRecord: OFDNSResourceRecord
{
	OFString *_CPU, *_OS;
}

/*!
 * @brief The CPU of the host info of the resource record.







>







228
229
230
231
232
233
234
235
236
237
238
239
240
241
242

/*!
 * @class OFHINFODNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an HINFO DNS resource record.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFHINFODNSResourceRecord: OFDNSResourceRecord
{
	OFString *_CPU, *_OS;
}

/*!
 * @brief The CPU of the host info of the resource record.
268
269
270
271
272
273
274

275
276
277
278
279
280
281

/*!
 * @class OFMXDNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an MX DNS resource record.
 */

@interface OFMXDNSResourceRecord: OFDNSResourceRecord
{
	uint16_t _preference;
	OFString *_mailExchange;
}

/*!







>







273
274
275
276
277
278
279
280
281
282
283
284
285
286
287

/*!
 * @class OFMXDNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an MX DNS resource record.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFMXDNSResourceRecord: OFDNSResourceRecord
{
	uint16_t _preference;
	OFString *_mailExchange;
}

/*!
313
314
315
316
317
318
319

320
321
322
323
324
325
326

/*!
 * @class OFNSDNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an NS DNS resource record.
 */

@interface OFNSDNSResourceRecord: OFDNSResourceRecord
{
	OFString *_authoritativeHost;
}

/*!
 * @brief The authoritative host of the resource record.







>







319
320
321
322
323
324
325
326
327
328
329
330
331
332
333

/*!
 * @class OFNSDNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an NS DNS resource record.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFNSDNSResourceRecord: OFDNSResourceRecord
{
	OFString *_authoritativeHost;
}

/*!
 * @brief The authoritative host of the resource record.
350
351
352
353
354
355
356

357
358
359
360
361
362
363

/*!
 * @class OFPTRDNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing a PTR DNS resource record.
 */

@interface OFPTRDNSResourceRecord: OFDNSResourceRecord
{
	OFString *_domainName;
}

/*!
 * @brief The domain name of the resource record.







>







357
358
359
360
361
362
363
364
365
366
367
368
369
370
371

/*!
 * @class OFPTRDNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing a PTR DNS resource record.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFPTRDNSResourceRecord: OFDNSResourceRecord
{
	OFString *_domainName;
}

/*!
 * @brief The domain name of the resource record.
387
388
389
390
391
392
393

394
395
396
397
398
399
400

/*!
 * @class OFRPNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an RP DNS resource record.
 */

@interface OFRPDNSResourceRecord: OFDNSResourceRecord
{
	OFString *_mailbox, *_TXTDomainName;
}

/*!
 * @brief The mailbox of the responsible person of the resource record.







>







395
396
397
398
399
400
401
402
403
404
405
406
407
408
409

/*!
 * @class OFRPNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an RP DNS resource record.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFRPDNSResourceRecord: OFDNSResourceRecord
{
	OFString *_mailbox, *_TXTDomainName;
}

/*!
 * @brief The mailbox of the responsible person of the resource record.
433
434
435
436
437
438
439

440
441
442
443
444
445
446

/*!
 * @class OFSOADNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an SOA DNS resource record.
 */

@interface OFSOADNSResourceRecord: OFDNSResourceRecord
{
	OFString *_primaryNameServer, *_responsiblePerson;
	uint32_t _serialNumber, _refreshInterval, _retryInterval;
	uint32_t _expirationInterval, _minTTL;
}








>







442
443
444
445
446
447
448
449
450
451
452
453
454
455
456

/*!
 * @class OFSOADNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an SOA DNS resource record.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFSOADNSResourceRecord: OFDNSResourceRecord
{
	OFString *_primaryNameServer, *_responsiblePerson;
	uint32_t _serialNumber, _refreshInterval, _retryInterval;
	uint32_t _expirationInterval, _minTTL;
}

514
515
516
517
518
519
520

521
522
523
524
525
526
527

/*!
 * @class OFSRVDNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an SRV DNS resource record.
 */

@interface OFSRVDNSResourceRecord: OFDNSResourceRecord
{
	uint16_t _priority, _weight;
	OFString *_target;
	uint16_t _port;
}








>







524
525
526
527
528
529
530
531
532
533
534
535
536
537
538

/*!
 * @class OFSRVDNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing an SRV DNS resource record.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFSRVDNSResourceRecord: OFDNSResourceRecord
{
	uint16_t _priority, _weight;
	OFString *_target;
	uint16_t _port;
}

572
573
574
575
576
577
578

579
580
581
582
583
584
585

/*!
 * @class OFTXTDNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing a TXT DNS resource record.
 */

@interface OFTXTDNSResourceRecord: OFDNSResourceRecord
{
	OFData *_textData;
}

/*!
 * @brief The text of the resource record.







>







583
584
585
586
587
588
589
590
591
592
593
594
595
596
597

/*!
 * @class OFTXTDNSResourceRecord \
 *	  OFDNSResourceRecord.h ObjFW/OFDNSResourceRecord.h
 *
 * @brief A class representing a TXT DNS resource record.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFTXTDNSResourceRecord: OFDNSResourceRecord
{
	OFData *_textData;
}

/*!
 * @brief The text of the resource record.

Modified src/OFData.h from [9bdd1398b6] to [75aaa591fe].

39
40
41
42
43
44
45

46
47
48
49
50
51
52
@interface OFData: OFObject <OFCopying, OFMutableCopying, OFComparing,
    OFSerialization, OFMessagePackRepresentation>
{
	unsigned char *_items;
	size_t _count, _itemSize;
	bool _freeWhenDone;
	OFData *_parentData;

}

/*!
 * @brief The size of a single item in the OFData in bytes.
 */
@property (readonly, nonatomic) size_t itemSize;








>







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
@interface OFData: OFObject <OFCopying, OFMutableCopying, OFComparing,
    OFSerialization, OFMessagePackRepresentation>
{
	unsigned char *_items;
	size_t _count, _itemSize;
	bool _freeWhenDone;
	OFData *_parentData;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The size of a single item in the OFData in bytes.
 */
@property (readonly, nonatomic) size_t itemSize;

Modified src/OFDate.h from [1c9dc17f4c] to [ef356199a7].

25
26
27
28
29
30
31

32
33
34
35
36
37
38
@class OFConstantString;

/*!
 * @class OFDate OFDate.h ObjFW/OFDate.h
 *
 * @brief A class for storing, accessing and comparing dates.
 */

@interface OFDate: OFObject <OFCopying, OFComparing, OFSerialization,
    OFMessagePackRepresentation>
{
	of_time_interval_t _seconds;
}

#ifdef OF_HAVE_CLASS_PROPERTIES







>







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@class OFConstantString;

/*!
 * @class OFDate OFDate.h ObjFW/OFDate.h
 *
 * @brief A class for storing, accessing and comparing dates.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFDate: OFObject <OFCopying, OFComparing, OFSerialization,
    OFMessagePackRepresentation>
{
	of_time_interval_t _seconds;
}

#ifdef OF_HAVE_CLASS_PROPERTIES

Modified src/OFDictionary.h from [2fc9d82347] to [0bdd64401a].

58
59
60
61
62
63
64




65
66
67
68
69
70
71
@interface OFDictionary OF_GENERIC(KeyType, ObjectType): OFObject <OFCopying,
    OFMutableCopying, OFCollection, OFSerialization, OFJSONRepresentation,
    OFMessagePackRepresentation>
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define KeyType id
# define ObjectType id
#endif




/*!
 * @brief An array of all keys.
 */
@property (readonly, nonatomic) OFArray OF_GENERIC(KeyType) *allKeys;

/*!
 * @brief An array of all objects.







>
>
>
>







58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
@interface OFDictionary OF_GENERIC(KeyType, ObjectType): OFObject <OFCopying,
    OFMutableCopying, OFCollection, OFSerialization, OFJSONRepresentation,
    OFMessagePackRepresentation>
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define KeyType id
# define ObjectType id
#endif
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief An array of all keys.
 */
@property (readonly, nonatomic) OFArray OF_GENERIC(KeyType) *allKeys;

/*!
 * @brief An array of all objects.

Modified src/OFDimensionValue.h from [506e11e7af] to [4f99589b0d].

15
16
17
18
19
20
21

22
23
24
25
26
27
28
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFDimensionValue: OFValue
{
	of_dimension_t _dimension;
}
@end

OF_ASSUME_NONNULL_END







>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFDimensionValue: OFValue
{
	of_dimension_t _dimension;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFEnumerator.h from [5d33d7fcc0] to [1264743def].

92
93
94
95
96
97
98




99
100
101
102
103
104
105
 *
 * @brief A class which provides methods to enumerate through collections.
 */
@interface OFEnumerator OF_GENERIC(ObjectType): OFObject <OFFastEnumeration>
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif




/*!
 * @brief Returns the next object or `nil` if there is none left.
 *
 * @return The next object or `nil` if there is none left
 */
- (nullable ObjectType)nextObject;








>
>
>
>







92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
 *
 * @brief A class which provides methods to enumerate through collections.
 */
@interface OFEnumerator OF_GENERIC(ObjectType): OFObject <OFFastEnumeration>
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Returns the next object or `nil` if there is none left.
 *
 * @return The next object or `nil` if there is none left
 */
- (nullable ObjectType)nextObject;

Modified src/OFEpollKernelEventObserver.h from [a52cc0d821] to [82f0a9bae6].

17
18
19
20
21
22
23

24
25
26
27
28
29
30
31

#import "OFKernelEventObserver.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMapTable;


@interface OFEpollKernelEventObserver: OFKernelEventObserver
{
	int _epfd;
	OFMapTable *_FDToEvents;
}
@end

OF_ASSUME_NONNULL_END







>








17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

#import "OFKernelEventObserver.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMapTable;

OF_SUBCLASSING_RESTRICTED
@interface OFEpollKernelEventObserver: OFKernelEventObserver
{
	int _epfd;
	OFMapTable *_FDToEvents;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFFile.h from [5cdb803aa0] to [7b7e5b1049].

32
33
34
35
36
37
38

39
40
41
42
43
44
45
@class OFURL;

/*!
 * @class OFFile OFFile.h ObjFW/OFFile.h
 *
 * @brief A class which provides methods to read and write files.
 */

@interface OFFile: OFSeekableStream
#ifdef OF_FILE_HANDLE_IS_FD
    <OFReadyForReadingObserving, OFReadyForWritingObserving>
#endif
{
	of_file_handle_t _handle;
	bool _atEndOfStream;







>







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
@class OFURL;

/*!
 * @class OFFile OFFile.h ObjFW/OFFile.h
 *
 * @brief A class which provides methods to read and write files.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFFile: OFSeekableStream
#ifdef OF_FILE_HANDLE_IS_FD
    <OFReadyForReadingObserving, OFReadyForWritingObserving>
#endif
{
	of_file_handle_t _handle;
	bool _atEndOfStream;

Modified src/OFFileManager.h from [daabb28b95] to [105f32a771].

238
239
240
241
242
243
244



245
246
247
248
249
250
251

/*!
 * @class OFFileManager OFFileManager.h ObjFW/OFFileManager.h
 *
 * @brief A class which provides management for files, e.g. reading contents of
 *	  directories, deleting files, renaming files, etc.
 */



@interface OFFileManager: OFObject
#ifdef OF_HAVE_CLASS_PROPERTIES
@property (class, readonly, nonatomic) OFFileManager *defaultManager;
#endif

#ifdef OF_HAVE_FILES
/*!







>
>
>







238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254

/*!
 * @class OFFileManager OFFileManager.h ObjFW/OFFileManager.h
 *
 * @brief A class which provides management for files, e.g. reading contents of
 *	  directories, deleting files, renaming files, etc.
 */
#ifndef OF_FILE_MANAGER_M
OF_SUBCLASSING_RESTRICTED
#endif
@interface OFFileManager: OFObject
#ifdef OF_HAVE_CLASS_PROPERTIES
@property (class, readonly, nonatomic) OFFileManager *defaultManager;
#endif

#ifdef OF_HAVE_FILES
/*!

Modified src/OFFileManager.m from [5c4544e132] to [1b86de4488].

12
13
14
15
16
17
18


19
20
21
22
23
24
25
 * 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"



#include <errno.h>
#include <limits.h>
#include "unistd_wrapper.h"

#import "platform.h"








>
>







12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 * 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"

#define OF_FILE_MANAGER_M

#include <errno.h>
#include <limits.h>
#include "unistd_wrapper.h"

#import "platform.h"

Modified src/OFFileURLHandler.h from [4c8d0c729e] to [fd0c855548].

15
16
17
18
19
20
21

22
23
24
25
26
 * file.
 */

#import "OFURLHandler.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFFileURLHandler: OFURLHandler
+ (bool)of_directoryExistsAtPath: (OFString *)path;
@end

OF_ASSUME_NONNULL_END







>





15
16
17
18
19
20
21
22
23
24
25
26
27
 * file.
 */

#import "OFURLHandler.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFFileURLHandler: OFURLHandler
+ (bool)of_directoryExistsAtPath: (OFString *)path;
@end

OF_ASSUME_NONNULL_END

Modified src/OFGZIPStream.h from [61111b955d] to [3973ccf74c].

24
25
26
27
28
29
30

31
32
33
34
35
36
37

/*!
 * @class OFGZIPStream OFGZIPStream.h ObjFW/OFGZIPStream.h
 *
 * @brief A class that handles GZIP compression and decompression transparently
 *	  for an underlying stream.
 */

@interface OFGZIPStream: OFStream
{
	OFStream *_stream;
	OFInflateStream *_Nullable _inflateStream;
	enum of_gzip_stream_state {
		OF_GZIP_STREAM_ID1,
		OF_GZIP_STREAM_ID2,







>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

/*!
 * @class OFGZIPStream OFGZIPStream.h ObjFW/OFGZIPStream.h
 *
 * @brief A class that handles GZIP compression and decompression transparently
 *	  for an underlying stream.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFGZIPStream: OFStream
{
	OFStream *_stream;
	OFInflateStream *_Nullable _inflateStream;
	enum of_gzip_stream_state {
		OF_GZIP_STREAM_ID1,
		OF_GZIP_STREAM_ID2,

Modified src/OFHMAC.h from [f906bf7f17] to [c85420d05a].

21
22
23
24
25
26
27

28
29
30
31
32
33
34
OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFHMAC OFHMAC.h ObjFW/OFHMAC.h
 *
 * @brief A class which provides methods to calculate an HMAC.
 */

@interface OFHMAC: OFObject
{
	Class <OFCryptoHash> _hashClass;
	id <OFCryptoHash> _Nullable _outerHash, _innerHash;
	id <OFCryptoHash> _Nullable _outerHashCopy, _innerHashCopy;
	bool _calculated;
}







>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFHMAC OFHMAC.h ObjFW/OFHMAC.h
 *
 * @brief A class which provides methods to calculate an HMAC.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFHMAC: OFObject
{
	Class <OFCryptoHash> _hashClass;
	id <OFCryptoHash> _Nullable _outerHash, _innerHash;
	id <OFCryptoHash> _Nullable _outerHashCopy, _innerHashCopy;
	bool _calculated;
}

Modified src/OFHTTPClient.h from [ec1691a772] to [e516a827e2].

136
137
138
139
140
141
142

143
144
145
146
147
148
149
@end

/*!
 * @class OFHTTPClient OFHTTPClient.h ObjFW/OFHTTPClient.h
 *
 * @brief A class for performing HTTP requests.
 */

@interface OFHTTPClient: OFObject
{
#ifdef OF_HTTPCLIENT_M
@public
#endif
	OFObject <OFHTTPClientDelegate> *_Nullable _delegate;
	bool _insecureRedirectsAllowed, _inProgress;







>







136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
@end

/*!
 * @class OFHTTPClient OFHTTPClient.h ObjFW/OFHTTPClient.h
 *
 * @brief A class for performing HTTP requests.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFHTTPClient: OFObject
{
#ifdef OF_HTTPCLIENT_M
@public
#endif
	OFObject <OFHTTPClientDelegate> *_Nullable _delegate;
	bool _insecureRedirectsAllowed, _inProgress;

Modified src/OFHTTPCookie.h from [de4eb9913d] to [e642b0f59d].

33
34
35
36
37
38
39

40
41
42
43
44
45
46
 */
@interface OFHTTPCookie: OFObject <OFCopying>
{
	OFString *_name, *_value, *_domain, *_path;
	OFDate *_Nullable _expires;
	bool _secure, _HTTPOnly;
	OFMutableArray OF_GENERIC(OFString *) *_extensions;

}

/*!
 * @brief The name of the cookie.
 */
@property (copy, nonatomic) OFString *name;








>







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 */
@interface OFHTTPCookie: OFObject <OFCopying>
{
	OFString *_name, *_value, *_domain, *_path;
	OFDate *_Nullable _expires;
	bool _secure, _HTTPOnly;
	OFMutableArray OF_GENERIC(OFString *) *_extensions;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The name of the cookie.
 */
@property (copy, nonatomic) OFString *name;

Modified src/OFHTTPCookieManager.h from [c6413b38bf] to [8c7af02c16].

25
26
27
28
29
30
31

32
33
34
35
36
37
38
@class OFURL;

/*!
 * @class OFHTTPCookieManager OFHTTPCookieManager.h ObjFW/OFHTTPCookieManager.h
 *
 * @brief A class for managing cookies for multiple domains.
 */

@interface OFHTTPCookieManager: OFObject
{
	OFMutableArray OF_GENERIC(OFHTTPCookie *) *_cookies;
}

/*!
 * @brief All cookies known to the cookie manager.







>







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@class OFURL;

/*!
 * @class OFHTTPCookieManager OFHTTPCookieManager.h ObjFW/OFHTTPCookieManager.h
 *
 * @brief A class for managing cookies for multiple domains.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFHTTPCookieManager: OFObject
{
	OFMutableArray OF_GENERIC(OFHTTPCookie *) *_cookies;
}

/*!
 * @brief All cookies known to the cookie manager.

Modified src/OFHTTPRequest.h from [b110c8f2e2] to [9466bbaa67].

72
73
74
75
76
77
78

79
80
81
82
83
84
85
@interface OFHTTPRequest: OFObject <OFCopying>
{
	OFURL *_URL;
	of_http_request_method_t _method;
	of_http_request_protocol_version_t _protocolVersion;
	OFDictionary OF_GENERIC(OFString *, OFString *) *_Nullable _headers;
	of_socket_address_t _remoteAddress;

}

/*!
 * @brief The URL of the HTTP request.
 */
@property (copy, nonatomic) OFURL *URL;








>







72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
@interface OFHTTPRequest: OFObject <OFCopying>
{
	OFURL *_URL;
	of_http_request_method_t _method;
	of_http_request_protocol_version_t _protocolVersion;
	OFDictionary OF_GENERIC(OFString *, OFString *) *_Nullable _headers;
	of_socket_address_t _remoteAddress;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The URL of the HTTP request.
 */
@property (copy, nonatomic) OFURL *URL;

Modified src/OFHTTPResponse.h from [14b68dfcaa] to [4def471fb7].

29
30
31
32
33
34
35

36
37
38
39
40
41
42
 * @brief A class for representing an HTTP request reply as a stream.
 */
@interface OFHTTPResponse: OFStream
{
	of_http_request_protocol_version_t _protocolVersion;
	short _statusCode;
	OFDictionary OF_GENERIC(OFString *, OFString *) *_headers;

}

/*!
 * @brief The protocol version of the HTTP request reply.
 */
@property (nonatomic) of_http_request_protocol_version_t protocolVersion;








>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 * @brief A class for representing an HTTP request reply as a stream.
 */
@interface OFHTTPResponse: OFStream
{
	of_http_request_protocol_version_t _protocolVersion;
	short _statusCode;
	OFDictionary OF_GENERIC(OFString *, OFString *) *_headers;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The protocol version of the HTTP request reply.
 */
@property (nonatomic) of_http_request_protocol_version_t protocolVersion;

Modified src/OFHTTPServer.h from [3394497349] to [cd787cb48e].

86
87
88
89
90
91
92

93
94
95
96
97
98
99
@end

/*!
 * @class OFHTTPServer OFHTTPServer.h ObjFW/OFHTTPServer.h
 *
 * @brief A class for creating a simple HTTP server inside of applications.
 */

@interface OFHTTPServer: OFObject
{
	OFString *_Nullable _host;
	uint16_t _port;
	bool _usesTLS;
	OFString *_Nullable _certificateFile, *_Nullable _privateKeyFile;
	const char *_Nullable _privateKeyPassphrase;







>







86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
@end

/*!
 * @class OFHTTPServer OFHTTPServer.h ObjFW/OFHTTPServer.h
 *
 * @brief A class for creating a simple HTTP server inside of applications.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFHTTPServer: OFObject
{
	OFString *_Nullable _host;
	uint16_t _port;
	bool _usesTLS;
	OFString *_Nullable _certificateFile, *_Nullable _privateKeyFile;
	const char *_Nullable _privateKeyPassphrase;

Modified src/OFHTTPURLHandler.h from [9220399ab4] to [8c0000bba5].

15
16
17
18
19
20
21

22
23
24
25
 * file.
 */

#import "OFURLHandler.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFHTTPURLHandler: OFURLHandler
@end

OF_ASSUME_NONNULL_END







>




15
16
17
18
19
20
21
22
23
24
25
26
 * file.
 */

#import "OFURLHandler.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFHTTPURLHandler: OFURLHandler
@end

OF_ASSUME_NONNULL_END

Modified src/OFINICategory.h from [a52c1059f2] to [cfca4456a9].

24
25
26
27
28
29
30

31
32
33
34
35
36
37
@class OFString;

/*!
 * @class OFINICategory OFINICategory.h ObjFW/OFINICategory.h
 *
 * @brief A class for representing a category of an INI file.
 */

@interface OFINICategory: OFObject
{
	OFString *_name;
	OFMutableArray *_lines;
}

/*!







>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@class OFString;

/*!
 * @class OFINICategory OFINICategory.h ObjFW/OFINICategory.h
 *
 * @brief A class for representing a category of an INI file.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFINICategory: OFObject
{
	OFString *_name;
	OFMutableArray *_lines;
}

/*!

Modified src/OFINIFile.h from [772b56ea19] to [71d6c12d86].

24
25
26
27
28
29
30

31
32
33
34
35
36
37
@class OFMutableArray OF_GENERIC(ObjectType);

/*!
 * @class OFINIFile OFINIFile.h ObjFW/OFINIFile.h
 *
 * @brief A class for reading, creating and modifying INI files.
 */

@interface OFINIFile: OFObject
{
	OFMutableArray OF_GENERIC(OFINICategory *) *_categories;
}

/*!
 * @brief Creates a new OFINIFile with the contents of the specified file.







>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
@class OFMutableArray OF_GENERIC(ObjectType);

/*!
 * @class OFINIFile OFINIFile.h ObjFW/OFINIFile.h
 *
 * @brief A class for reading, creating and modifying INI files.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFINIFile: OFObject
{
	OFMutableArray OF_GENERIC(OFINICategory *) *_categories;
}

/*!
 * @brief Creates a new OFINIFile with the contents of the specified file.

Modified src/OFINIFileSettings.h from [0f40811c1f] to [bae8a4f75c].

18
19
20
21
22
23
24

25
26
27
28
29
30
31
32
#import "OFSettings.h"

OF_ASSUME_NONNULL_BEGIN

@class OFString;
@class OFINIFile;


@interface OFINIFileSettings: OFSettings
{
	OFString *_filePath;
	OFINIFile *_INIFile;
}
@end

OF_ASSUME_NONNULL_END







>








18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#import "OFSettings.h"

OF_ASSUME_NONNULL_BEGIN

@class OFString;
@class OFINIFile;

OF_SUBCLASSING_RESTRICTED
@interface OFINIFileSettings: OFSettings
{
	OFString *_filePath;
	OFINIFile *_INIFile;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFInflate64Stream.h from [7e95b67f65] to [7497e2c385].

27
28
29
30
31
32
33

34
35
36
37
38
39
40
 *
 * @note This class only conforms to OFReadyForReadingObserving if the
 *	 underlying stream does so, too.
 *
 * @brief A class that handles Deflate decompression transparently for an
 *	  underlying stream.
 */

@interface OFInflate64Stream: OFStream <OFReadyForReadingObserving>
{
#ifdef OF_INFLATE64_STREAM_M
@public
#endif
	OFStream *_stream;
	unsigned char _buffer[OF_INFLATE64_STREAM_BUFFER_SIZE];







>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 *
 * @note This class only conforms to OFReadyForReadingObserving if the
 *	 underlying stream does so, too.
 *
 * @brief A class that handles Deflate decompression transparently for an
 *	  underlying stream.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFInflate64Stream: OFStream <OFReadyForReadingObserving>
{
#ifdef OF_INFLATE64_STREAM_M
@public
#endif
	OFStream *_stream;
	unsigned char _buffer[OF_INFLATE64_STREAM_BUFFER_SIZE];

Modified src/OFInflateStream.h from [ba3144156c] to [a451ce0366].

27
28
29
30
31
32
33

34
35
36
37
38
39
40
 *
 * @note This class only conforms to OFReadyForReadingObserving if the
 *	 underlying stream does so, too.
 *
 * @brief A class that handles Deflate decompression transparently for an
 *	  underlying stream.
 */

@interface OFInflateStream: OFStream <OFReadyForReadingObserving>
{
#ifdef OF_INFLATE_STREAM_M
@public
#endif
	OFStream *_stream;
	unsigned char _buffer[OF_INFLATE_STREAM_BUFFER_SIZE];







>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 *
 * @note This class only conforms to OFReadyForReadingObserving if the
 *	 underlying stream does so, too.
 *
 * @brief A class that handles Deflate decompression transparently for an
 *	  underlying stream.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFInflateStream: OFStream <OFReadyForReadingObserving>
{
#ifdef OF_INFLATE_STREAM_M
@public
#endif
	OFStream *_stream;
	unsigned char _buffer[OF_INFLATE_STREAM_BUFFER_SIZE];

Modified src/OFIntrospection.h from [29246596c0] to [f4fdf94694].

42
43
44
45
46
47
48

49
50
51
52
53
54
55
 * @brief A class for describing a method.
 */
@interface OFMethod: OFObject
{
	SEL _selector;
	OFString *_name;
	const char *_typeEncoding;

}

/*!
 * @brief The selector of the method.
 */
@property (readonly, nonatomic) SEL selector;








>







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 * @brief A class for describing a method.
 */
@interface OFMethod: OFObject
{
	SEL _selector;
	OFString *_name;
	const char *_typeEncoding;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The selector of the method.
 */
@property (readonly, nonatomic) SEL selector;

72
73
74
75
76
77
78

79
80
81
82
83
84
85
 * @brief A class for describing a property.
 */
@interface OFProperty: OFObject
{
	OFString *_name;
	unsigned int _attributes;
	OFString *_Nullable _getter, *_Nullable _setter, *_Nullable _iVar;

}

/*!
 * @brief The name of the property.
 */
@property (readonly, nonatomic) OFString *name;








>







73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
 * @brief A class for describing a property.
 */
@interface OFProperty: OFObject
{
	OFString *_name;
	unsigned int _attributes;
	OFString *_Nullable _getter, *_Nullable _setter, *_Nullable _iVar;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The name of the property.
 */
@property (readonly, nonatomic) OFString *name;

126
127
128
129
130
131
132

133
134
135
136
137
138
139
 * @brief A class for describing an instance variable.
 */
@interface OFInstanceVariable: OFObject
{
	OFString *_name;
	const char *_typeEncoding;
	ptrdiff_t _offset;

}

/*!
 * @brief The name of the instance variable.
 */
@property (readonly, nonatomic) OFString *name;








>







128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
 * @brief A class for describing an instance variable.
 */
@interface OFInstanceVariable: OFObject
{
	OFString *_name;
	const char *_typeEncoding;
	ptrdiff_t _offset;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The name of the instance variable.
 */
@property (readonly, nonatomic) OFString *name;

151
152
153
154
155
156
157

158
159
160
161
162
163
164
@end

/*!
 * @class OFIntrospection OFIntrospection.h ObjFW/OFIntrospection.h
 *
 * @brief A class for introspecting classes.
 */

@interface OFIntrospection: OFObject
{
	OFMutableArray OF_GENERIC(OFMethod *) *_classMethods;
	OFMutableArray OF_GENERIC(OFMethod *) *_instanceMethods;
	OFMutableArray OF_GENERIC(OFProperty *) *_properties;
	OFMutableArray OF_GENERIC(OFInstanceVariable *) *_instanceVariables;
}







>







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

/*!
 * @class OFIntrospection OFIntrospection.h ObjFW/OFIntrospection.h
 *
 * @brief A class for introspecting classes.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFIntrospection: OFObject
{
	OFMutableArray OF_GENERIC(OFMethod *) *_classMethods;
	OFMutableArray OF_GENERIC(OFMethod *) *_instanceMethods;
	OFMutableArray OF_GENERIC(OFProperty *) *_properties;
	OFMutableArray OF_GENERIC(OFInstanceVariable *) *_instanceVariables;
}

Modified src/OFInvertedCharacterSet.h from [e78ee993d6] to [1f748d556a].

15
16
17
18
19
20
21

22
23
24
25
26
27
28
29
30
31
32
 * file.
 */

#import "OFCharacterSet.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFInvertedCharacterSet: OFCharacterSet
{
	OFCharacterSet *_characterSet;
	bool (*_characterIsMember)(id, SEL, of_unichar_t);
}

- (instancetype)of_initWithCharacterSet: (OFCharacterSet *)characterSet
    OF_METHOD_FAMILY(init);
@end

OF_ASSUME_NONNULL_END







>











15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 * file.
 */

#import "OFCharacterSet.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFInvertedCharacterSet: OFCharacterSet
{
	OFCharacterSet *_characterSet;
	bool (*_characterIsMember)(id, SEL, of_unichar_t);
}

- (instancetype)of_initWithCharacterSet: (OFCharacterSet *)characterSet
    OF_METHOD_FAMILY(init);
@end

OF_ASSUME_NONNULL_END

Modified src/OFInvocation.h from [26aac59c99] to [8d5d38dc1e].

41
42
43
44
45
46
47

48
49
50
51
52
53
54
 * @brief A class for storing and accessing invocations, and invoking them.
 */
@interface OFInvocation: OFObject
{
	OFMethodSignature *_methodSignature;
	OFMutableArray OF_GENERIC(OFMutableData *) *_arguments;
	OFMutableData *_returnValue;

}

/*!
 * @brief The method signature for the invocation.
 */
@property (readonly, nonatomic) OFMethodSignature *methodSignature;








>







41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 * @brief A class for storing and accessing invocations, and invoking them.
 */
@interface OFInvocation: OFObject
{
	OFMethodSignature *_methodSignature;
	OFMutableArray OF_GENERIC(OFMutableData *) *_arguments;
	OFMutableData *_returnValue;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The method signature for the invocation.
 */
@property (readonly, nonatomic) OFMethodSignature *methodSignature;

Modified src/OFKernelEventObserver.h from [97255f4a8b] to [b2d4e300e7].

137
138
139
140
141
142
143

144
145
146
147
148
149
150
	OFMutex *_mutex;
#endif
	OFMutableData *_queueActions;
	OFMutableArray *_queueObjects;
#ifdef OF_AMIGAOS
	ULONG _execSignalMask;
#endif

}

/*!
 * @brief The delegate for the OFKernelEventObserver.
 */
@property OF_NULLABLE_PROPERTY (assign, nonatomic)
    id <OFKernelEventObserverDelegate> delegate;







>







137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
	OFMutex *_mutex;
#endif
	OFMutableData *_queueActions;
	OFMutableArray *_queueObjects;
#ifdef OF_AMIGAOS
	ULONG _execSignalMask;
#endif
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The delegate for the OFKernelEventObserver.
 */
@property OF_NULLABLE_PROPERTY (assign, nonatomic)
    id <OFKernelEventObserverDelegate> delegate;

Modified src/OFKqueueKernelEventObserver.h from [93173a129b] to [04d72570f9].

17
18
19
20
21
22
23

24
25
26
27
28
29
30

#import "OFKernelEventObserver.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMutableArray OF_GENERIC(ObjectType);


@interface OFKqueueKernelEventObserver: OFKernelEventObserver
{
	int _kernelQueue;
}
@end

OF_ASSUME_NONNULL_END







>







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

#import "OFKernelEventObserver.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMutableArray OF_GENERIC(ObjectType);

OF_SUBCLASSING_RESTRICTED
@interface OFKqueueKernelEventObserver: OFKernelEventObserver
{
	int _kernelQueue;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFLHAArchive.h from [667a6061aa] to [98e95db909].

25
26
27
28
29
30
31

32
33
34
35
36
37
38
@class OFStream;

/*!
 * @class OFLHAArchive OFLHAArchive.h ObjFW/OFLHAArchive.h
 *
 * @brief A class for accessing and manipulating LHA files.
 */

@interface OFLHAArchive: OFObject
{
	OFStream *_stream;
	enum {
		OF_LHA_ARCHIVE_MODE_READ,
		OF_LHA_ARCHIVE_MODE_WRITE,
		OF_LHA_ARCHIVE_MODE_APPEND







>







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@class OFStream;

/*!
 * @class OFLHAArchive OFLHAArchive.h ObjFW/OFLHAArchive.h
 *
 * @brief A class for accessing and manipulating LHA files.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFLHAArchive: OFObject
{
	OFStream *_stream;
	enum {
		OF_LHA_ARCHIVE_MODE_READ,
		OF_LHA_ARCHIVE_MODE_WRITE,
		OF_LHA_ARCHIVE_MODE_APPEND

Modified src/OFLHAArchiveEntry.h from [4b4440a6ad] to [a2fc14bd84].

43
44
45
46
47
48
49

50
51
52
53
54
55
56
	uint16_t _CRC16;
	uint8_t _operatingSystemIdentifier;
	OFString *_Nullable _fileComment;
	OFNumber *_Nullable _mode, *_Nullable _UID, *_Nullable _GID;
	OFString *_Nullable _owner, *_Nullable _group;
	OFDate *_Nullable _modificationDate;
	OFMutableArray OF_GENERIC(OFData *) *_extensions;

}

/*!
 * @brief The file name of the entry.
 */
@property (readonly, copy, nonatomic) OFString *fileName;








>







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
	uint16_t _CRC16;
	uint8_t _operatingSystemIdentifier;
	OFString *_Nullable _fileComment;
	OFNumber *_Nullable _mode, *_Nullable _UID, *_Nullable _GID;
	OFString *_Nullable _owner, *_Nullable _group;
	OFDate *_Nullable _modificationDate;
	OFMutableArray OF_GENERIC(OFData *) *_extensions;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The file name of the entry.
 */
@property (readonly, copy, nonatomic) OFString *fileName;

Modified src/OFLHADecompressingStream.h from [1fd5de7afc] to [e5a15c8e0b].

17
18
19
20
21
22
23

24
25
26
27
28
29
30

#import "OFStream.h"

OF_ASSUME_NONNULL_BEGIN

#define OF_LHA_DECOMPRESSING_STREAM_BUFFER_SIZE 4096


@interface OFLHADecompressingStream: OFStream
{
@public
	OFStream *_stream;
	uint8_t _distanceBits, _dictionaryBits;
	unsigned char _buffer[OF_LHA_DECOMPRESSING_STREAM_BUFFER_SIZE];
	uint32_t _bytesConsumed;







>







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

#import "OFStream.h"

OF_ASSUME_NONNULL_BEGIN

#define OF_LHA_DECOMPRESSING_STREAM_BUFFER_SIZE 4096

OF_SUBCLASSING_RESTRICTED
@interface OFLHADecompressingStream: OFStream
{
@public
	OFStream *_stream;
	uint8_t _distanceBits, _dictionaryBits;
	unsigned char _buffer[OF_LHA_DECOMPRESSING_STREAM_BUFFER_SIZE];
	uint32_t _bytesConsumed;

Modified src/OFList.h from [6b57b93ef4] to [c1be030244].

51
52
53
54
55
56
57

58
59
60
61
62
63
64
# define ObjectType id
#endif
{
	of_list_object_t *_Nullable _firstListObject;
	of_list_object_t *_Nullable _lastListObject;
	size_t _count;
	unsigned long  _mutations;

}

/*!
 * @brief The first list object of the list.
 */
@property OF_NULLABLE_PROPERTY (readonly, nonatomic)
    of_list_object_t *firstListObject;







>







51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# define ObjectType id
#endif
{
	of_list_object_t *_Nullable _firstListObject;
	of_list_object_t *_Nullable _lastListObject;
	size_t _count;
	unsigned long  _mutations;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The first list object of the list.
 */
@property OF_NULLABLE_PROPERTY (readonly, nonatomic)
    of_list_object_t *firstListObject;

Modified src/OFLocale.h from [42395bf4fa] to [fac49fcae1].

39
40
41
42
43
44
45

46
47
48
49
50
51
52
@class OFDictionary OF_GENERIC(KeyType, ObjectType);

/*!
 * @class OFLocale OFLocale.h ObjFW/OFLocale.h
 *
 * @brief A class for querying the locale and retrieving localized strings.
 */

@interface OFLocale: OFObject
{
	OFString *_Nullable _language, *_Nullable _territory;
	of_string_encoding_t _encoding;
	OFString *_decimalPoint;
	OFMutableArray OF_GENERIC(OFDictionary OF_GENERIC(OFString *, id) *)
	    *_localizedStrings;







>







39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
@class OFDictionary OF_GENERIC(KeyType, ObjectType);

/*!
 * @class OFLocale OFLocale.h ObjFW/OFLocale.h
 *
 * @brief A class for querying the locale and retrieving localized strings.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFLocale: OFObject
{
	OFString *_Nullable _language, *_Nullable _territory;
	of_string_encoding_t _encoding;
	OFString *_decimalPoint;
	OFMutableArray OF_GENERIC(OFDictionary OF_GENERIC(OFString *, id) *)
	    *_localizedStrings;

Modified src/OFMD5Hash.h from [2507db3e19] to [7bc2b1da3f].

22
23
24
25
26
27
28

29
30
31
32
33
34
35
@class OFSecureData;

/*!
 * @class OFMD5Hash OFMD5Hash.h ObjFW/OFMD5Hash.h
 *
 * @brief A class which provides methods to create an MD5 hash.
 */

@interface OFMD5Hash: OFObject <OFCryptoHash>
{
	OFSecureData *_iVarsData;
	struct of_md5_hash_ivars {
		uint32_t state[4];
		uint64_t bits;
		union of_md5_hash_buffer {







>







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@class OFSecureData;

/*!
 * @class OFMD5Hash OFMD5Hash.h ObjFW/OFMD5Hash.h
 *
 * @brief A class which provides methods to create an MD5 hash.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFMD5Hash: OFObject <OFCryptoHash>
{
	OFSecureData *_iVarsData;
	struct of_md5_hash_ivars {
		uint32_t state[4];
		uint64_t bits;
		union of_md5_hash_buffer {

Modified src/OFMapTable.h from [1f1f29d31e] to [b6dd6c63b6].

66
67
68
69
70
71
72

73
74
75
76
77
78
79

/*!
 * @class OFMapTable OFMapTable.h ObjFW/OFMapTable.h
 *
 * @brief A class similar to OFDictionary, but providing more options how keys
 *	  and objects should be retained, released, compared and hashed.
 */

@interface OFMapTable: OFObject <OFCopying, OFFastEnumeration>
{
	of_map_table_functions_t _keyFunctions, _objectFunctions;
	struct of_map_table_bucket *_Nonnull *_Nullable _buckets;
	uint32_t _count, _capacity;
	uint8_t _rotate;
	unsigned long _mutations;







>







66
67
68
69
70
71
72
73
74
75
76
77
78
79
80

/*!
 * @class OFMapTable OFMapTable.h ObjFW/OFMapTable.h
 *
 * @brief A class similar to OFDictionary, but providing more options how keys
 *	  and objects should be retained, released, compared and hashed.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFMapTable: OFObject <OFCopying, OFFastEnumeration>
{
	of_map_table_functions_t _keyFunctions, _objectFunctions;
	struct of_map_table_bucket *_Nonnull *_Nullable _buckets;
	uint32_t _count, _capacity;
	uint8_t _rotate;
	unsigned long _mutations;

Modified src/OFMapTableDictionary.h from [c6f471998e] to [e4b08c07d4].

18
19
20
21
22
23
24

25
26
27
28
29
30
31
32
33
#import "OFDictionary.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMapTable;
@class OFMapTableEnumerator;


@interface OFMapTableDictionary: OFDictionary
{
	OFMapTable *_mapTable;
}

- (instancetype)initWithCapacity: (size_t)capacity;
@end

OF_ASSUME_NONNULL_END







>









18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#import "OFDictionary.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMapTable;
@class OFMapTableEnumerator;

OF_SUBCLASSING_RESTRICTED
@interface OFMapTableDictionary: OFDictionary
{
	OFMapTable *_mapTable;
}

- (instancetype)initWithCapacity: (size_t)capacity;
@end

OF_ASSUME_NONNULL_END

Modified src/OFMapTableSet.h from [955e132003] to [87db5f22c7].

17
18
19
20
21
22
23

24
25
26
27
28
29
30
31
32

#import "OFSet.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMapTable;


@interface OFMapTableSet: OFSet
{
	OFMapTable *_mapTable;
}

- (instancetype)initWithCapacity: (size_t)capacity;
@end

OF_ASSUME_NONNULL_END







>









17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

#import "OFSet.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMapTable;

OF_SUBCLASSING_RESTRICTED
@interface OFMapTableSet: OFSet
{
	OFMapTable *_mapTable;
}

- (instancetype)initWithCapacity: (size_t)capacity;
@end

OF_ASSUME_NONNULL_END

Modified src/OFMessagePackExtension.h from [947608cec6] to [bdf36008e7].

29
30
31
32
33
34
35

36
37
38
39
40
41
42
 * @brief A class for representing the MessagePack extension type.
 */
@interface OFMessagePackExtension: OFObject <OFMessagePackRepresentation,
    OFCopying>
{
	int8_t _type;
	OFData *_data;

}

/*!
 * @brief The MessagePack extension type.
 */
@property (readonly, nonatomic) int8_t type;








>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 * @brief A class for representing the MessagePack extension type.
 */
@interface OFMessagePackExtension: OFObject <OFMessagePackRepresentation,
    OFCopying>
{
	int8_t _type;
	OFData *_data;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The MessagePack extension type.
 */
@property (readonly, nonatomic) int8_t type;

Modified src/OFMethodSignature.h from [35a14e0813] to [18c94d6350].

26
27
28
29
30
31
32

33
34
35
36
37
38
39
 *
 * @brief A class for parsing type encodings and accessing them.
 */
@interface OFMethodSignature: OFObject
{
	char *_types;
	OFMutableData *_typesPointers, *_offsets;

}

/*!
 * @brief The number of arguments of the method.
 */
@property (readonly, nonatomic) size_t numberOfArguments;








>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 *
 * @brief A class for parsing type encodings and accessing them.
 */
@interface OFMethodSignature: OFObject
{
	char *_types;
	OFMutableData *_typesPointers, *_offsets;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The number of arguments of the method.
 */
@property (readonly, nonatomic) size_t numberOfArguments;

Modified src/OFMutableAdjacentArray.h from [ba9ae1bdf2] to [51288ab7a0].

17
18
19
20
21
22
23

24
25
26
27
28
29
30
31

#import "OFArray.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMutableData;


@interface OFMutableAdjacentArray: OFMutableArray
{
	OFMutableData *_array;
	unsigned long _mutations;
}
@end

OF_ASSUME_NONNULL_END







>








17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

#import "OFArray.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMutableData;

OF_SUBCLASSING_RESTRICTED
@interface OFMutableAdjacentArray: OFMutableArray
{
	OFMutableData *_array;
	unsigned long _mutations;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFMutableArray.h from [97f317cd8c] to [34a09a316e].

42
43
44
45
46
47
48




49
50
51
52
53
54
55
 *	 @ref replaceObjectAtIndex:withObject:, @ref removeObjectAtIndex: as
 *	 well as all methods of @ref OFArray that need to be implemented.
 */
@interface OFMutableArray OF_GENERIC(ObjectType): OFArray OF_GENERIC(ObjectType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif




/*!
 * @brief Creates a new OFMutableArray with enough memory to hold the specified
 *	  number of objects.
 *
 * @param capacity The initial capacity for the OFMutableArray
 * @return A new autoreleased OFMutableArray
 */







>
>
>
>







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
 *	 @ref replaceObjectAtIndex:withObject:, @ref removeObjectAtIndex: as
 *	 well as all methods of @ref OFArray that need to be implemented.
 */
@interface OFMutableArray OF_GENERIC(ObjectType): OFArray OF_GENERIC(ObjectType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Creates a new OFMutableArray with enough memory to hold the specified
 *	  number of objects.
 *
 * @param capacity The initial capacity for the OFMutableArray
 * @return A new autoreleased OFMutableArray
 */

Modified src/OFMutableData.h from [5a53632ba0] to [ad7c91dbcd].

26
27
28
29
30
31
32

33
34
35
36
37
38
39
 * @class OFMutableData OFMutableData.h ObjFW/OFMutableData.h
 *
 * @brief A class for storing and manipulating arbitrary data in an array.
 */
@interface OFMutableData: OFData
{
	size_t _capacity;

}

/*!
 * @brief All items of the OFMutableData as a C array.
 *
 * @warning The pointer is only valid until the OFMutableData is changed!
 *







>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 * @class OFMutableData OFMutableData.h ObjFW/OFMutableData.h
 *
 * @brief A class for storing and manipulating arbitrary data in an array.
 */
@interface OFMutableData: OFData
{
	size_t _capacity;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief All items of the OFMutableData as a C array.
 *
 * @warning The pointer is only valid until the OFMutableData is changed!
 *

Modified src/OFMutableDictionary.h from [43070c71d1] to [e6550bad92].

43
44
45
46
47
48
49




50
51
52
53
54
55
56
 */
@interface OFMutableDictionary OF_GENERIC(KeyType, ObjectType):
    OFDictionary OF_GENERIC(KeyType, ObjectType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define KeyType id
# define ObjectType id
#endif




/*!
 * @brief Creates a new OFMutableDictionary with enough memory to hold the
 *	  specified number of objects.
 *
 * @param capacity The initial capacity for the OFMutableDictionary
 * @return A new autoreleased OFMutableDictionary
 */







>
>
>
>







43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
 */
@interface OFMutableDictionary OF_GENERIC(KeyType, ObjectType):
    OFDictionary OF_GENERIC(KeyType, ObjectType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define KeyType id
# define ObjectType id
#endif
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Creates a new OFMutableDictionary with enough memory to hold the
 *	  specified number of objects.
 *
 * @param capacity The initial capacity for the OFMutableDictionary
 * @return A new autoreleased OFMutableDictionary
 */

Modified src/OFMutableLHAArchiveEntry.h from [25550d850c] to [35040236c1].

22
23
24
25
26
27
28



29
30
31
32
33
34
35
/*!
 * @class OFMutableLHAArchiveEntry \
 *	  OFMutableLHAArchiveEntry.h ObjFW/OFMutableLHAArchiveEntry.h
 *
 * @brief A class which represents a mutable entry in an LHA archive.
 */
@interface OFMutableLHAArchiveEntry: OFLHAArchiveEntry




/*!
 * @brief The file name of the entry.
 */
@property (readwrite, copy, nonatomic) OFString *fileName;

/*!







>
>
>







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*!
 * @class OFMutableLHAArchiveEntry \
 *	  OFMutableLHAArchiveEntry.h ObjFW/OFMutableLHAArchiveEntry.h
 *
 * @brief A class which represents a mutable entry in an LHA archive.
 */
@interface OFMutableLHAArchiveEntry: OFLHAArchiveEntry
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The file name of the entry.
 */
@property (readwrite, copy, nonatomic) OFString *fileName;

/*!

Modified src/OFMutableMapTableDictionary.h from [dec5e52f1e] to [4d2fb14c64].

17
18
19
20
21
22
23

24
25
26
27
28
29
30

#import "OFDictionary.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMapTable;


@interface OFMutableMapTableDictionary: OFMutableDictionary
{
	OFMapTable *_mapTable;
}
@end

OF_ASSUME_NONNULL_END







>







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

#import "OFDictionary.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMapTable;

OF_SUBCLASSING_RESTRICTED
@interface OFMutableMapTableDictionary: OFMutableDictionary
{
	OFMapTable *_mapTable;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFMutableMapTableSet.h from [59911fabdb] to [184041bad3].

17
18
19
20
21
22
23

24
25
26
27
28
29
30

#import "OFMutableSet.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMapTable;


@interface OFMutableMapTableSet: OFMutableSet
{
	OFMapTable *_mapTable;
}
@end

OF_ASSUME_NONNULL_END







>







17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

#import "OFMutableSet.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMapTable;

OF_SUBCLASSING_RESTRICTED
@interface OFMutableMapTableSet: OFMutableSet
{
	OFMapTable *_mapTable;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFMutablePair.h from [6bb98de460] to [243eba2a1e].

26
27
28
29
30
31
32




33
34
35
36
37
38
39
 */
@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




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

/*!
 * @brief The second object of the pair.







>
>
>
>







26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 */
@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
{
	OF_RESERVE_IVARS(4)
}

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

/*!
 * @brief The second object of the pair.

Modified src/OFMutableSet.h from [9b1889a14f] to [ec355518ec].

27
28
29
30
31
32
33




34
35
36
37
38
39
40
 * @note Subclasses must implement @ref addObject:, @ref removeObject: as well
 *	 as all methods of @ref OFSet that need to be implemented.
 */
@interface OFMutableSet OF_GENERIC(ObjectType): OFSet OF_GENERIC(ObjectType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif




/*!
 * @brief Creates a new OFMutableSet with enough memory to hold the specified
 *	  number of objects.
 *
 * @param capacity The initial capacity for the OFMutableSet
 * @return A new autoreleased OFMutableSet
 */







>
>
>
>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 * @note Subclasses must implement @ref addObject:, @ref removeObject: as well
 *	 as all methods of @ref OFSet that need to be implemented.
 */
@interface OFMutableSet OF_GENERIC(ObjectType): OFSet OF_GENERIC(ObjectType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Creates a new OFMutableSet with enough memory to hold the specified
 *	  number of objects.
 *
 * @param capacity The initial capacity for the OFMutableSet
 * @return A new autoreleased OFMutableSet
 */

Modified src/OFMutableString.h from [b9fb78b26e] to [721df996ad].

21
22
23
24
25
26
27




28
29
30
31
32
33
34

/*!
 * @class OFMutableString OFString.h ObjFW/OFString.h
 *
 * @brief A class for storing and modifying strings.
 */
@interface OFMutableString: OFString




/*!
 * @brief Sets the character at the specified index.
 *
 * @param character The character to set
 * @param index The index where to set the character
 */
- (void)setCharacter: (of_unichar_t)character







>
>
>
>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

/*!
 * @class OFMutableString OFString.h ObjFW/OFString.h
 *
 * @brief A class for storing and modifying strings.
 */
@interface OFMutableString: OFString
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Sets the character at the specified index.
 *
 * @param character The character to set
 * @param index The index where to set the character
 */
- (void)setCharacter: (of_unichar_t)character

Modified src/OFMutableTarArchiveEntry.h from [301e1d8433] to [199bc4c41d].

22
23
24
25
26
27
28



29
30
31
32
33
34
35
/*!
 * @class OFMutableTarArchiveEntry \
 *	  OFMutableTarArchiveEntry.h ObjFW/OFMutableTarArchiveEntry.h
 *
 * @brief A class which represents a mutable entry of a tar archive.
 */
@interface OFMutableTarArchiveEntry: OFTarArchiveEntry




/*!
 * @brief The file name of the entry.
 */
@property (readwrite, copy, nonatomic) OFString *fileName;

/*!







>
>
>







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
/*!
 * @class OFMutableTarArchiveEntry \
 *	  OFMutableTarArchiveEntry.h ObjFW/OFMutableTarArchiveEntry.h
 *
 * @brief A class which represents a mutable entry of a tar archive.
 */
@interface OFMutableTarArchiveEntry: OFTarArchiveEntry
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The file name of the entry.
 */
@property (readwrite, copy, nonatomic) OFString *fileName;

/*!

Modified src/OFMutableTriple.h from [5621e7a8f4] to [524e2b7c05].

27
28
29
30
31
32
33




34
35
36
37
38
39
40
@interface OFMutableTriple OF_GENERIC(FirstType, SecondType, ThirdType):
    OFTriple OF_GENERIC(FirstType, SecondType, ThirdType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define FirstType id
# define SecondType id
# define ThirdType id
#endif




/*!
 * @brief The first object of the triple.
 */
@property (readwrite, nonatomic, retain) FirstType firstObject;

/*!
 * @brief The second object of the triple.







>
>
>
>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
@interface OFMutableTriple OF_GENERIC(FirstType, SecondType, ThirdType):
    OFTriple OF_GENERIC(FirstType, SecondType, ThirdType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define FirstType id
# define SecondType id
# define ThirdType id
#endif
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The first object of the triple.
 */
@property (readwrite, nonatomic, retain) FirstType firstObject;

/*!
 * @brief The second object of the triple.

Modified src/OFMutableURL.h from [eff60f9cda] to [3f13123c95].

21
22
23
24
25
26
27




28
29
30
31
32
33
34

/*!
 * @class OFMutableURL OFMutableURL.h ObjFW/OFMutableURL.h
 *
 * @brief A class for parsing URLs and accessing parts of it.
 */
@interface OFMutableURL: OFURL




/*!
 * @brief The scheme part of the URL.
 */
@property OF_NULLABLE_PROPERTY (readwrite, copy, nonatomic) OFString *scheme;

/*!
 * @brief The scheme part of the URL in URL-encoded form.







>
>
>
>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

/*!
 * @class OFMutableURL OFMutableURL.h ObjFW/OFMutableURL.h
 *
 * @brief A class for parsing URLs and accessing parts of it.
 */
@interface OFMutableURL: OFURL
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The scheme part of the URL.
 */
@property OF_NULLABLE_PROPERTY (readwrite, copy, nonatomic) OFString *scheme;

/*!
 * @brief The scheme part of the URL in URL-encoded form.

Modified src/OFMutableUTF8String.h from [039b0313df] to [bde0a714b5].

16
17
18
19
20
21
22

23
24
25
26
27
28
29
30
31
 */

#import "OFMutableString.h"
#import "OFUTF8String.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFMutableUTF8String: OFMutableString
{
@public
	struct of_string_utf8_ivars *restrict _s;
	struct of_string_utf8_ivars _storage;
}
@end

OF_ASSUME_NONNULL_END







>









16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 */

#import "OFMutableString.h"
#import "OFUTF8String.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFMutableUTF8String: OFMutableString
{
@public
	struct of_string_utf8_ivars *restrict _s;
	struct of_string_utf8_ivars _storage;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFMutableZIPArchiveEntry.h from [a5c9bd1076] to [860ca60c8f].

23
24
25
26
27
28
29



30
31
32
33
34
35
36
 * @class OFMutableZIPArchiveEntry \
 *	  OFMutableZIPArchiveEntry.h ObjFW/OFMutableZIPArchiveEntry.h
 *
 * @brief A class which represents a mutable entry in the central directory of
 *	  a ZIP archive.
 */
@interface OFMutableZIPArchiveEntry: OFZIPArchiveEntry




/*!
 * @brief The file name of the entry.
 */
@property (readwrite, copy, nonatomic) OFString *fileName;

/*!







>
>
>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
 * @class OFMutableZIPArchiveEntry \
 *	  OFMutableZIPArchiveEntry.h ObjFW/OFMutableZIPArchiveEntry.h
 *
 * @brief A class which represents a mutable entry in the central directory of
 *	  a ZIP archive.
 */
@interface OFMutableZIPArchiveEntry: OFZIPArchiveEntry
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The file name of the entry.
 */
@property (readwrite, copy, nonatomic) OFString *fileName;

/*!

Modified src/OFMutex.h from [4b8e64a2be] to [4ff73c2003].

28
29
30
31
32
33
34

35
36
37
38
39
40
41
42
43
44
45
 * @brief A class for creating mutual exclusions.
 */
@interface OFMutex: OFObject <OFLocking>
{
	of_mutex_t _mutex;
	bool _initialized;
	OFString *_Nullable _name;

}

/*!
 * @brief Creates a new mutex.
 *
 * @return A new autoreleased mutex.
 */
+ (instancetype)mutex;
@end

OF_ASSUME_NONNULL_END







>











28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 * @brief A class for creating mutual exclusions.
 */
@interface OFMutex: OFObject <OFLocking>
{
	of_mutex_t _mutex;
	bool _initialized;
	OFString *_Nullable _name;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Creates a new mutex.
 *
 * @return A new autoreleased mutex.
 */
+ (instancetype)mutex;
@end

OF_ASSUME_NONNULL_END

Modified src/OFNonretainedObjectValue.h from [c355b53946] to [36f80cbb4e].

15
16
17
18
19
20
21

22
23
24
25
26
27
28
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFNonretainedObjectValue: OFValue
{
	id _object;
}
@end

OF_ASSUME_NONNULL_END







>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFNonretainedObjectValue: OFValue
{
	id _object;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFNumber.h from [3047242909] to [1367656c87].

112
113
114
115
116
117
118

119
120
121
122
123
124
125
} of_number_type_t;

/*!
 * @class OFNumber OFNumber.h ObjFW/OFNumber.h
 *
 * @brief Provides a way to store a number in an object.
 */

@interface OFNumber: OFValue <OFComparing, OFSerialization,
    OFJSONRepresentation, OFMessagePackRepresentation>
{
	union of_number_value {
		bool		   bool_;
		signed char	   sChar;
		signed short	   sShort;







>







112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
} of_number_type_t;

/*!
 * @class OFNumber OFNumber.h ObjFW/OFNumber.h
 *
 * @brief Provides a way to store a number in an object.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFNumber: OFValue <OFComparing, OFSerialization,
    OFJSONRepresentation, OFMessagePackRepresentation>
{
	union of_number_value {
		bool		   bool_;
		signed char	   sChar;
		signed short	   sShort;

Modified src/OFOptionsParser.h from [7b666b9bba] to [9b4ca8e1fd].

62
63
64
65
66
67
68

69
70
71
72
73
74
75
} of_options_parser_option_t;

/*!
 * @class OFOptionsParser OFOptionsParser.h ObjFW/OFOptionsParser.h
 *
 * @brief A class for parsing the program options specified on the command line.
 */

@interface OFOptionsParser: OFObject
{
	of_options_parser_option_t *_options;
	OFMapTable *_longOptions;
	OFArray OF_GENERIC(OFString *) *_arguments;
	size_t _index, _subIndex;
	of_unichar_t _lastOption;







>







62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
} of_options_parser_option_t;

/*!
 * @class OFOptionsParser OFOptionsParser.h ObjFW/OFOptionsParser.h
 *
 * @brief A class for parsing the program options specified on the command line.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFOptionsParser: OFObject
{
	of_options_parser_option_t *_options;
	OFMapTable *_longOptions;
	OFArray OF_GENERIC(OFString *) *_arguments;
	size_t _index, _subIndex;
	of_unichar_t _lastOption;

Modified src/OFPair.h from [a91c3b2a6f] to [cd107d57db].

29
30
31
32
33
34
35

36
37
38
39
40
41
42
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define FirstType id
# define SecondType id
#endif
{
	FirstType _Nullable _firstObject;
	SecondType _Nullable _secondObject;

}

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







>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define FirstType id
# define SecondType id
#endif
{
	FirstType _Nullable _firstObject;
	SecondType _Nullable _secondObject;
	OF_RESERVE_IVARS(4)
}

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

Modified src/OFPlugin.h from [82c185a058] to [cb3a1304f8].

37
38
39
40
41
42
43

44
45
46
47
48
49
50
 * @class OFPlugin OFPlugin.h ObjFW/OFPlugin.h
 *
 * @brief Provides a system for loading plugins at runtime.
 */
@interface OFPlugin: OFObject
{
	of_plugin_handle_t _handle;

}

/*!
 * @brief Loads a plugin from a file.
 *
 * @param path Path to the plugin file. The suffix is appended automatically.
 * @return The loaded plugin







>







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 * @class OFPlugin OFPlugin.h ObjFW/OFPlugin.h
 *
 * @brief Provides a system for loading plugins at runtime.
 */
@interface OFPlugin: OFObject
{
	of_plugin_handle_t _handle;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Loads a plugin from a file.
 *
 * @param path Path to the plugin file. The suffix is appended automatically.
 * @return The loaded plugin

Modified src/OFPointValue.h from [ee56f0af65] to [88e07dfeed].

15
16
17
18
19
20
21

22
23
24
25
26
27
28
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFPointValue: OFValue
{
	of_point_t _point;
}
@end

OF_ASSUME_NONNULL_END







>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFPointValue: OFValue
{
	of_point_t _point;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFPointerValue.h from [c394de6a61] to [bc4ae528fd].

15
16
17
18
19
20
21

22
23
24
25
26
27
28
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFPointerValue: OFValue
{
	void *_pointer;
}
@end

OF_ASSUME_NONNULL_END







>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFPointerValue: OFValue
{
	void *_pointer;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFPollKernelEventObserver.h from [aa8c14235f] to [2770775881].

17
18
19
20
21
22
23

24
25
26
27
28
29
30
31
32

#import "OFKernelEventObserver.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMutableData;


@interface OFPollKernelEventObserver: OFKernelEventObserver
{
	OFMutableData *_FDs;
	int _maxFD;
	id __unsafe_unretained *_FDToObject;
}
@end

OF_ASSUME_NONNULL_END







>









17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

#import "OFKernelEventObserver.h"

OF_ASSUME_NONNULL_BEGIN

@class OFMutableData;

OF_SUBCLASSING_RESTRICTED
@interface OFPollKernelEventObserver: OFKernelEventObserver
{
	OFMutableData *_FDs;
	int _maxFD;
	id __unsafe_unretained *_FDToObject;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFProcess.h from [7c50dd3a7c] to [df8e9272e3].

42
43
44
45
46
47
48

49
50
51
52
53
54
55
@class OFDictionary OF_GENERIC(KeyType, ObjectType);

/*!
 * @class OFProcess OFProcess.h ObjFW/OFProcess.h
 *
 * @brief A class for stream-like communication with a newly created process.
 */

@interface OFProcess: OFStream
#ifndef OF_WINDOWS
    <OFReadyForReadingObserving, OFReadyForWritingObserving>
#endif
{
#ifndef OF_WINDOWS
	pid_t _pid;







>







42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
@class OFDictionary OF_GENERIC(KeyType, ObjectType);

/*!
 * @class OFProcess OFProcess.h ObjFW/OFProcess.h
 *
 * @brief A class for stream-like communication with a newly created process.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFProcess: OFStream
#ifndef OF_WINDOWS
    <OFReadyForReadingObserving, OFReadyForWritingObserving>
#endif
{
#ifndef OF_WINDOWS
	pid_t _pid;

Modified src/OFRIPEMD160Hash.h from [4b27eef996] to [8064412ceb].

22
23
24
25
26
27
28

29
30
31
32
33
34
35
@class OFSecureData;

/*!
 * @class OFRIPEMD160Hash OFRIPEMD160Hash.h ObjFW/OFRIPEMD160Hash.h
 *
 * @brief A class which provides methods to create a RIPEMD-160 hash.
 */

@interface OFRIPEMD160Hash: OFObject <OFCryptoHash>
{
	OFSecureData *_iVarsData;
	struct of_ripemd160_hash_ivars {
		uint32_t state[5];
		uint64_t bits;
		union of_ripemd160_hash_buffer {







>







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@class OFSecureData;

/*!
 * @class OFRIPEMD160Hash OFRIPEMD160Hash.h ObjFW/OFRIPEMD160Hash.h
 *
 * @brief A class which provides methods to create a RIPEMD-160 hash.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFRIPEMD160Hash: OFObject <OFCryptoHash>
{
	OFSecureData *_iVarsData;
	struct of_ripemd160_hash_ivars {
		uint32_t state[5];
		uint64_t bits;
		union of_ripemd160_hash_buffer {

Modified src/OFRangeCharacterSet.h from [d6286761a3] to [a2771ad1c7].

15
16
17
18
19
20
21

22
23
24
25
26
27
28
 * file.
 */

#import "OFCharacterSet.h"

OF_ASSUME_NONNULL_BEGIN


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

OF_ASSUME_NONNULL_END







>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 * file.
 */

#import "OFCharacterSet.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFRangeCharacterSet: OFCharacterSet
{
	of_range_t _range;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFRangeValue.h from [485fced595] to [a8ef163be5].

15
16
17
18
19
20
21

22
23
24
25
26
27
28
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFRangeValue: OFValue
{
	of_range_t _range;
}
@end

OF_ASSUME_NONNULL_END







>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFRangeValue: OFValue
{
	of_range_t _range;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFRectangleValue.h from [e6635df87d] to [7066e1a221].

15
16
17
18
19
20
21

22
23
24
25
26
27
28
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFRectangleValue: OFValue
{
	of_rectangle_t _rectangle;
}
@end

OF_ASSUME_NONNULL_END







>







15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 * file.
 */

#import "OFValue.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFRectangleValue: OFValue
{
	of_rectangle_t _rectangle;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFRecursiveMutex.h from [f3a0853f17] to [14cd0ab792].

24
25
26
27
28
29
30

31
32
33
34
35
36
37

/*!
 * @class OFRecursiveMutex OFRecursiveMutex.h ObjFW/OFRecursiveMutex.h
 *
 * @brief A class for creating mutual exclusions which can be entered
 *	  recursively.
 */

@interface OFRecursiveMutex: OFObject <OFLocking>
{
	of_rmutex_t _rmutex;
	bool _initialized;
	OFString *_Nullable _name;
}








>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

/*!
 * @class OFRecursiveMutex OFRecursiveMutex.h ObjFW/OFRecursiveMutex.h
 *
 * @brief A class for creating mutual exclusions which can be entered
 *	  recursively.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFRecursiveMutex: OFObject <OFLocking>
{
	of_rmutex_t _rmutex;
	bool _initialized;
	OFString *_Nullable _name;
}

Modified src/OFRunLoop.h from [0ba22fa5da] to [93da873991].

55
56
57
58
59
60
61

62
63
64
65
66
67
68
#endif

/*!
 * @class OFRunLoop OFRunLoop.h ObjFW/OFRunLoop.h
 *
 * @brief A class providing a run loop for the application and its processes.
 */

@interface OFRunLoop: OFObject
{
	OFMutableDictionary *_states;
#ifdef OF_HAVE_THREADS
	OFMutex *_statesMutex;
#endif
	of_run_loop_mode_t _Nullable _currentMode;







>







55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#endif

/*!
 * @class OFRunLoop OFRunLoop.h ObjFW/OFRunLoop.h
 *
 * @brief A class providing a run loop for the application and its processes.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFRunLoop: OFObject
{
	OFMutableDictionary *_states;
#ifdef OF_HAVE_THREADS
	OFMutex *_statesMutex;
#endif
	of_run_loop_mode_t _Nullable _currentMode;

Modified src/OFSHA1Hash.h from [76484e9b92] to [f45a134709].

22
23
24
25
26
27
28

29
30
31
32
33
34
35
@class OFSecureData;

/*!
 * @class OFSHA1Hash OFSHA1Hash.h ObjFW/OFSHA1Hash.h
 *
 * @brief A class which provides methods to create an SHA-1 hash.
 */

@interface OFSHA1Hash: OFObject <OFCryptoHash>
{
	OFSecureData *_iVarsData;
	struct of_sha1_hash_ivars {
		uint32_t state[5];
		uint64_t bits;
		union of_sha1_hash_buffer {







>







22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
@class OFSecureData;

/*!
 * @class OFSHA1Hash OFSHA1Hash.h ObjFW/OFSHA1Hash.h
 *
 * @brief A class which provides methods to create an SHA-1 hash.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFSHA1Hash: OFObject <OFCryptoHash>
{
	OFSecureData *_iVarsData;
	struct of_sha1_hash_ivars {
		uint32_t state[5];
		uint64_t bits;
		union of_sha1_hash_buffer {

Modified src/OFSHA224Hash.h from [7b625d5901] to [02668ec72c].

20
21
22
23
24
25
26

27
28
29
30
OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFSHA224Hash OFSHA224Hash.h ObjFW/OFSHA224Hash.h
 *
 * @brief A class which provides methods to create an SHA-224 hash.
 */

@interface OFSHA224Hash: OFSHA224Or256Hash
@end

OF_ASSUME_NONNULL_END







>




20
21
22
23
24
25
26
27
28
29
30
31
OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFSHA224Hash OFSHA224Hash.h ObjFW/OFSHA224Hash.h
 *
 * @brief A class which provides methods to create an SHA-224 hash.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFSHA224Hash: OFSHA224Or256Hash
@end

OF_ASSUME_NONNULL_END

Modified src/OFSHA224Or256Hash.h from [0e59b3265f] to [6b1a277f58].

35
36
37
38
39
40
41

42
43
44
45
		union of_sha224_or_256_hash_buffer {
			uint8_t bytes[64];
			uint32_t words[64];
		} buffer;
		size_t bufferLength;
	} *_iVars;
	bool _calculated;

}
@end

OF_ASSUME_NONNULL_END







>




35
36
37
38
39
40
41
42
43
44
45
46
		union of_sha224_or_256_hash_buffer {
			uint8_t bytes[64];
			uint32_t words[64];
		} buffer;
		size_t bufferLength;
	} *_iVars;
	bool _calculated;
	OF_RESERVE_IVARS(4)
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFSHA256Hash.h from [1b677ced7a] to [4c62059a65].

20
21
22
23
24
25
26

27
28
29
30
OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFSHA256Hash OFSHA256Hash.h ObjFW/OFSHA256Hash.h
 *
 * @brief A class which provides methods to create an SHA-256 hash.
 */

@interface OFSHA256Hash: OFSHA224Or256Hash
@end

OF_ASSUME_NONNULL_END







>




20
21
22
23
24
25
26
27
28
29
30
31
OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFSHA256Hash OFSHA256Hash.h ObjFW/OFSHA256Hash.h
 *
 * @brief A class which provides methods to create an SHA-256 hash.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFSHA256Hash: OFSHA224Or256Hash
@end

OF_ASSUME_NONNULL_END

Modified src/OFSHA384Hash.h from [b462056b6f] to [4e1fe029f7].

20
21
22
23
24
25
26

27
28
29
30
OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFSHA384Hash OFSHA384Hash.h ObjFW/OFSHA384Hash.h
 *
 * @brief A class which provides methods to create an SHA-384 hash.
 */

@interface OFSHA384Hash: OFSHA384Or512Hash
@end

OF_ASSUME_NONNULL_END







>




20
21
22
23
24
25
26
27
28
29
30
31
OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFSHA384Hash OFSHA384Hash.h ObjFW/OFSHA384Hash.h
 *
 * @brief A class which provides methods to create an SHA-384 hash.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFSHA384Hash: OFSHA384Or512Hash
@end

OF_ASSUME_NONNULL_END

Modified src/OFSHA384Or512Hash.h from [da5458033a] to [835b1d3d02].

35
36
37
38
39
40
41

42
43
44
45
		union of_sha384_or_512_hash_buffer {
			uint8_t bytes[128];
			uint64_t words[80];
		} buffer;
		size_t bufferLength;
	} *_iVars;
	bool _calculated;

}
@end

OF_ASSUME_NONNULL_END







>




35
36
37
38
39
40
41
42
43
44
45
46
		union of_sha384_or_512_hash_buffer {
			uint8_t bytes[128];
			uint64_t words[80];
		} buffer;
		size_t bufferLength;
	} *_iVars;
	bool _calculated;
	OF_RESERVE_IVARS(4)
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFSHA512Hash.h from [763c1dc3e0] to [cfed575886].

20
21
22
23
24
25
26

27
28
29
30
OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFSHA512Hash OFSHA512Hash.h ObjFW/OFSHA512Hash.h
 *
 * @brief A class which provides methods to create an SHA-512 hash.
 */

@interface OFSHA512Hash: OFSHA384Or512Hash
@end

OF_ASSUME_NONNULL_END







>




20
21
22
23
24
25
26
27
28
29
30
31
OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFSHA512Hash OFSHA512Hash.h ObjFW/OFSHA512Hash.h
 *
 * @brief A class which provides methods to create an SHA-512 hash.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFSHA512Hash: OFSHA384Or512Hash
@end

OF_ASSUME_NONNULL_END

Modified src/OFSandbox.h from [091d297073] to [d6216c6849].

67
68
69
70
71
72
73

74
75
76
77
78
79
80
	unsigned int _allowsAudio: 1;
	unsigned int _allowsBPF: 1;
	unsigned int _allowsUnveil: 1;
	unsigned int _returnsErrors: 1;
	OFMutableArray OF_GENERIC(of_sandbox_unveil_path_t) *_unveiledPaths;
@public
	size_t _unveiledPathsIndex;

}

/*!
 * @brief Allows IO operations on previously allocated file descriptors.
 */
@property (nonatomic) bool allowsStdIO;








>







67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
	unsigned int _allowsAudio: 1;
	unsigned int _allowsBPF: 1;
	unsigned int _allowsUnveil: 1;
	unsigned int _returnsErrors: 1;
	OFMutableArray OF_GENERIC(of_sandbox_unveil_path_t) *_unveiledPaths;
@public
	size_t _unveiledPathsIndex;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Allows IO operations on previously allocated file descriptors.
 */
@property (nonatomic) bool allowsStdIO;

Modified src/OFSecureData.h from [6b81b595f7] to [4b4455fb4b].

24
25
26
27
28
29
30

31
32
33
34
35
36
37
 *
 * @brief A class for storing arbitrary data in secure memory, securely wiping
 *	  it when it gets deallocated.
 *
 * @note Secure memory might be unavailable on the platform, in which case this
 *	 falls back to insecure (potentially swappable) memory.
 */

@interface OFSecureData: OFData
{
	struct page *_page;
}

#ifdef OF_HAVE_CLASS_PROPERTIES
@property (class, readonly, nonatomic, getter=isSecure) bool secure;







>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 *
 * @brief A class for storing arbitrary data in secure memory, securely wiping
 *	  it when it gets deallocated.
 *
 * @note Secure memory might be unavailable on the platform, in which case this
 *	 falls back to insecure (potentially swappable) memory.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFSecureData: OFData
{
	struct page *_page;
}

#ifdef OF_HAVE_CLASS_PROPERTIES
@property (class, readonly, nonatomic, getter=isSecure) bool secure;

Modified src/OFSeekableStream.h from [369226960c] to [acb8ac2896].

52
53
54
55
56
57
58




59
60
61
62
63
64
65
 * @note If you want to subclass this, override
 *	 @ref lowlevelSeekToOffset:whence:. OFSeekableStream uses this method
 *	 and makes it work together with the caching of OFStream. If you
 *	 override this methods without the `lowlevel` prefix, you *will* break
 *	 caching, get broken results and seek to the wrong position!
 */
@interface OFSeekableStream: OFStream




/*!
 * @brief Seeks to the specified absolute offset.
 *
 * @param offset The offset in bytes
 * @param whence From where to seek.@n
 *		 Possible values are:
 *		 Value      | Description







>
>
>
>







52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
 * @note If you want to subclass this, override
 *	 @ref lowlevelSeekToOffset:whence:. OFSeekableStream uses this method
 *	 and makes it work together with the caching of OFStream. If you
 *	 override this methods without the `lowlevel` prefix, you *will* break
 *	 caching, get broken results and seek to the wrong position!
 */
@interface OFSeekableStream: OFStream
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Seeks to the specified absolute offset.
 *
 * @param offset The offset in bytes
 * @param whence From where to seek.@n
 *		 Possible values are:
 *		 Value      | Description

Modified src/OFSelectKernelEventObserver.h from [4637ad2ef9] to [e8ee327775].

28
29
30
31
32
33
34

35
36
37
38
39
40
41
42
# include <sys/select.h>
#endif

#import "OFKernelEventObserver.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFSelectKernelEventObserver: OFKernelEventObserver
{
	fd_set _readFDs, _writeFDs;
	int _maxFD;
}
@end

OF_ASSUME_NONNULL_END







>








28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# include <sys/select.h>
#endif

#import "OFKernelEventObserver.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFSelectKernelEventObserver: OFKernelEventObserver
{
	fd_set _readFDs, _writeFDs;
	int _maxFD;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFSet.h from [9f71c62224] to [f80d14d494].

65
66
67
68
69
70
71




72
73
74
75
76
77
78
 *	 @ref objectEnumerator.
 */
@interface OFSet OF_GENERIC(ObjectType): OFObject <OFCollection, OFCopying,
    OFMutableCopying, OFSerialization>
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif




/*!
 * @brief An array of all objects in the set.
 */
@property (readonly, nonatomic) OFArray OF_GENERIC(ObjectType) *allObjects;

/*!
 * @brief An arbitrary object in the set.







>
>
>
>







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
 *	 @ref objectEnumerator.
 */
@interface OFSet OF_GENERIC(ObjectType): OFObject <OFCollection, OFCopying,
    OFMutableCopying, OFSerialization>
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief An array of all objects in the set.
 */
@property (readonly, nonatomic) OFArray OF_GENERIC(ObjectType) *allObjects;

/*!
 * @brief An arbitrary object in the set.

Modified src/OFSettings.h from [aeeac74626] to [cc56f332fa].

32
33
34
35
36
37
38

39
40
41
42
43
44
45
 *	 for a path, remove it and then set it with the new type.
 *
 * @brief A class for storing and retrieving settings
 */
@interface OFSettings: OFObject
{
	OFString *_applicationName;

}

/*!
 * @brief The name of the application whose settings are accessed by the
 *	  instance.
 */
@property (readonly, nonatomic) OFString *applicationName;







>







32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 *	 for a path, remove it and then set it with the new type.
 *
 * @brief A class for storing and retrieving settings
 */
@interface OFSettings: OFObject
{
	OFString *_applicationName;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The name of the application whose settings are accessed by the
 *	  instance.
 */
@property (readonly, nonatomic) OFString *applicationName;

Modified src/OFSortedList.h from [cacefbad95] to [9bfd1b9f4d].

27
28
29
30
31
32
33




34
35
36
37
38
39
40
 * @warning Because the list is sorted, all methods inserting an object at a
 *	    specific place are unavailable, even though they exist in OFList!
 */
@interface OFSortedList OF_GENERIC(ObjectType): OFList OF_GENERIC(ObjectType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif




- (of_list_object_t *)appendObject: (ObjectType)object OF_UNAVAILABLE;
- (of_list_object_t *)prependObject: (ObjectType)object OF_UNAVAILABLE;
- (of_list_object_t *)insertObject: (ObjectType)object
		  beforeListObject: (of_list_object_t *)listObject
    OF_UNAVAILABLE;
- (of_list_object_t *)insertObject: (ObjectType)object
		   afterListObject: (of_list_object_t *)listObject







>
>
>
>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 * @warning Because the list is sorted, all methods inserting an object at a
 *	    specific place are unavailable, even though they exist in OFList!
 */
@interface OFSortedList OF_GENERIC(ObjectType): OFList OF_GENERIC(ObjectType)
#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
# define ObjectType id
#endif
{
	OF_RESERVE_IVARS(4)
}

- (of_list_object_t *)appendObject: (ObjectType)object OF_UNAVAILABLE;
- (of_list_object_t *)prependObject: (ObjectType)object OF_UNAVAILABLE;
- (of_list_object_t *)insertObject: (ObjectType)object
		  beforeListObject: (of_list_object_t *)listObject
    OF_UNAVAILABLE;
- (of_list_object_t *)insertObject: (ObjectType)object
		   afterListObject: (of_list_object_t *)listObject

Modified src/OFStream.h from [437fb045ff] to [a643169c96].

202
203
204
205
206
207
208

209
210
211
212
213
214
215
	char *_Nullable _readBuffer, *_Nullable _readBufferMemory;
	char *_Nullable _writeBuffer;
	size_t _readBufferLength, _writeBufferLength;
	bool _writeBuffered, _waitingForDelimiter;
@protected
	bool _blocking;
	id _Nullable _delegate;

}

/*!
 * @brief Whether the end of the stream has been reached.
 */
@property (readonly, nonatomic, getter=isAtEndOfStream) bool atEndOfStream;








>







202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
	char *_Nullable _readBuffer, *_Nullable _readBufferMemory;
	char *_Nullable _writeBuffer;
	size_t _readBufferLength, _writeBufferLength;
	bool _writeBuffered, _waitingForDelimiter;
@protected
	bool _blocking;
	id _Nullable _delegate;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Whether the end of the stream has been reached.
 */
@property (readonly, nonatomic, getter=isAtEndOfStream) bool atEndOfStream;

Modified src/OFStreamSocket.h from [830fed3178] to [3403a64f01].

27
28
29
30
31
32
33

34
35
36
37
38
39
40
41
42
43
44
 * @brief A class which provides methods to create and use stream sockets.
 */
@interface OFStreamSocket: OFStream <OFReadyForReadingObserving,
    OFReadyForWritingObserving>
{
	of_socket_t _socket;
	bool _atEndOfStream;

}

/*!
 * @brief Returns a new, autoreleased OFTCPSocket.
 *
 * @return A new, autoreleased OFTCPSocket
 */
+ (instancetype)socket;
@end

OF_ASSUME_NONNULL_END







>











27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 * @brief A class which provides methods to create and use stream sockets.
 */
@interface OFStreamSocket: OFStream <OFReadyForReadingObserving,
    OFReadyForWritingObserving>
{
	of_socket_t _socket;
	bool _atEndOfStream;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Returns a new, autoreleased OFTCPSocket.
 *
 * @return A new, autoreleased OFTCPSocket
 */
+ (instancetype)socket;
@end

OF_ASSUME_NONNULL_END

Modified src/OFString.h from [122f8a653b] to [6ace318746].

117
118
119
120
121
122
123




124
125
126
127
128
129
130
/*!
 * @class OFString OFString.h ObjFW/OFString.h
 *
 * @brief A class for handling strings.
 */
@interface OFString: OFObject <OFCopying, OFMutableCopying, OFComparing,
    OFSerialization, OFJSONRepresentation, OFMessagePackRepresentation>




/*!
 * @brief The length of the string in Unicode codepoints.
 */
@property (readonly, nonatomic) size_t length;

/*!
 * @brief The OFString as a UTF-8 encoded C string.







>
>
>
>







117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*!
 * @class OFString OFString.h ObjFW/OFString.h
 *
 * @brief A class for handling strings.
 */
@interface OFString: OFObject <OFCopying, OFMutableCopying, OFComparing,
    OFSerialization, OFJSONRepresentation, OFMessagePackRepresentation>
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The length of the string in Unicode codepoints.
 */
@property (readonly, nonatomic) size_t length;

/*!
 * @brief The OFString as a UTF-8 encoded C string.

Modified src/OFSystemInfo.h from [147dae58c0] to [5361d8dc79].

21
22
23
24
25
26
27

28
29
30
31
32
33
34
OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFSystemInfo OFSystemInfo.h ObjFW/OFSystemInfo.h
 *
 * @brief A class for querying information about the system.
 */

@interface OFSystemInfo: OFObject
#ifdef OF_HAVE_CLASS_PROPERTIES
@property (class, readonly, nonatomic) size_t pageSize;
@property (class, readonly, nonatomic) size_t numberOfCPUs;
@property (class, readonly, nonatomic) OFString *ObjFWVersion;
@property (class, readonly, nonatomic) unsigned int ObjFWVersionMajor;
@property (class, readonly, nonatomic) unsigned int ObjFWVersionMinor;







>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
OF_ASSUME_NONNULL_BEGIN

/*!
 * @class OFSystemInfo OFSystemInfo.h ObjFW/OFSystemInfo.h
 *
 * @brief A class for querying information about the system.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFSystemInfo: OFObject
#ifdef OF_HAVE_CLASS_PROPERTIES
@property (class, readonly, nonatomic) size_t pageSize;
@property (class, readonly, nonatomic) size_t numberOfCPUs;
@property (class, readonly, nonatomic) OFString *ObjFWVersion;
@property (class, readonly, nonatomic) unsigned int ObjFWVersionMajor;
@property (class, readonly, nonatomic) unsigned int ObjFWVersionMinor;

Modified src/OFTCPSocket.h from [0da62ee227] to [52ed0f333c].

100
101
102
103
104
105
106

107
108
109
110
111
112
113
	bool _listening;
	of_socket_address_t _remoteAddress;
	OFString *_Nullable _SOCKS5Host;
	uint16_t _SOCKS5Port;
#ifdef OF_WII
	uint16_t _port;
#endif

}

#ifdef OF_HAVE_CLASS_PROPERTIES
@property (class, nullable, copy, nonatomic) OFString *SOCKS5Host;
@property (class, nonatomic) uint16_t SOCKS5Port;
#endif








>







100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
	bool _listening;
	of_socket_address_t _remoteAddress;
	OFString *_Nullable _SOCKS5Host;
	uint16_t _SOCKS5Port;
#ifdef OF_WII
	uint16_t _port;
#endif
	OF_RESERVE_IVARS(4)
}

#ifdef OF_HAVE_CLASS_PROPERTIES
@property (class, nullable, copy, nonatomic) OFString *SOCKS5Host;
@property (class, nonatomic) uint16_t SOCKS5Port;
#endif

Modified src/OFTarArchive.h from [c1cedd4497] to [499d4e1e00].

25
26
27
28
29
30
31

32
33
34
35
36
37
38
@class OFStream;

/*!
 * @class OFTarArchive OFTarArchive.h ObjFW/OFTarArchive.h
 *
 * @brief A class for accessing and manipulating tar archives.
 */

@interface OFTarArchive: OFObject
{
	OFStream *_stream;
	enum {
		OF_TAR_ARCHIVE_MODE_READ,
		OF_TAR_ARCHIVE_MODE_WRITE,
		OF_TAR_ARCHIVE_MODE_APPEND







>







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
@class OFStream;

/*!
 * @class OFTarArchive OFTarArchive.h ObjFW/OFTarArchive.h
 *
 * @brief A class for accessing and manipulating tar archives.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFTarArchive: OFObject
{
	OFStream *_stream;
	enum {
		OF_TAR_ARCHIVE_MODE_READ,
		OF_TAR_ARCHIVE_MODE_WRITE,
		OF_TAR_ARCHIVE_MODE_APPEND

Modified src/OFTarArchiveEntry.h from [280263548d] to [7184d9b8e2].

57
58
59
60
61
62
63

64
65
66
67
68
69
70
	uint64_t _size;
	uint32_t _UID, _GID;
	OFDate *_modificationDate;
	of_tar_archive_entry_type_t _type;
	OFString *_Nullable _targetFileName;
	OFString *_Nullable _owner, *_Nullable _group;
	uint32_t _deviceMajor, _deviceMinor;

}

/*!
 * @brief The file name of the entry.
 */
@property (readonly, copy, nonatomic) OFString *fileName;








>







57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
	uint64_t _size;
	uint32_t _UID, _GID;
	OFDate *_modificationDate;
	of_tar_archive_entry_type_t _type;
	OFString *_Nullable _targetFileName;
	OFString *_Nullable _owner, *_Nullable _group;
	uint32_t _deviceMajor, _deviceMinor;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The file name of the entry.
 */
@property (readonly, copy, nonatomic) OFString *fileName;

Modified src/OFThread.h from [f2bf600216] to [1d8bb7f623].

86
87
88
89
90
91
92

93
94
95
96
97
98
99
	OFRunLoop *_Nullable _runLoop;
	OFMutableDictionary *_threadDictionary;
@private
	OFString *_Nullable _name;
# ifdef OF_HAVE_SOCKETS
	OFDNSResolver *_DNSResolver;
# endif

}
#endif

#ifdef OF_HAVE_CLASS_PROPERTIES
# ifdef OF_HAVE_THREADS
@property (class, readonly, nullable, nonatomic) OFThread *currentThread;
@property (class, readonly, nullable, nonatomic) OFThread *mainThread;







>







86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
	OFRunLoop *_Nullable _runLoop;
	OFMutableDictionary *_threadDictionary;
@private
	OFString *_Nullable _name;
# ifdef OF_HAVE_SOCKETS
	OFDNSResolver *_DNSResolver;
# endif
	OF_RESERVE_IVARS(4)
}
#endif

#ifdef OF_HAVE_CLASS_PROPERTIES
# ifdef OF_HAVE_THREADS
@property (class, readonly, nullable, nonatomic) OFThread *currentThread;
@property (class, readonly, nullable, nonatomic) OFThread *mainThread;

Modified src/OFThreadPool.h from [881b26bdcb] to [a9d1ed6153].

37
38
39
40
41
42
43

44
45
46
47
48
49
50
 * @class OFThreadPool OFThreadPool.h ObjFW/OFThreadPool.h
 *
 * @brief A class providing a pool of reusable threads.
 *
 * @note When the thread pool is released, all threads will terminate after
 *	 they finish the job they are currently processing.
 */

@interface OFThreadPool: OFObject
{
	size_t _size;
	OFMutableArray *_threads;
	volatile int _count;
#ifdef OF_THREAD_POOL_M
@public







>







37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 * @class OFThreadPool OFThreadPool.h ObjFW/OFThreadPool.h
 *
 * @brief A class providing a pool of reusable threads.
 *
 * @note When the thread pool is released, all threads will terminate after
 *	 they finish the job they are currently processing.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFThreadPool: OFObject
{
	size_t _size;
	OFMutableArray *_threads;
	volatile int _count;
#ifdef OF_THREAD_POOL_M
@public

Modified src/OFTimer.h from [4f5a514bed] to [2f31460f3b].

38
39
40
41
42
43
44

45
46
47
48
49
50
51
#endif

/*!
 * @class OFTimer OFTimer.h ObjFW/OFTimer.h
 *
 * @brief A class for creating and firing timers.
 */

@interface OFTimer: OFObject <OFComparing>
{
	OFDate *_fireDate;
	of_time_interval_t _interval;
	id _target;
	id _Nullable _object1, _object2, _object3, _object4;
	SEL _selector;







>







38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#endif

/*!
 * @class OFTimer OFTimer.h ObjFW/OFTimer.h
 *
 * @brief A class for creating and firing timers.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFTimer: OFObject <OFComparing>
{
	OFDate *_fireDate;
	of_time_interval_t _interval;
	id _target;
	id _Nullable _object1, _object2, _object3, _object4;
	SEL _selector;

Modified src/OFTriple.h from [b9adc8ff29] to [a3365ec37e].

31
32
33
34
35
36
37

38
39
40
41
42
43
44
# define SecondType id
# define ThirdType id
#endif
{
	FirstType _Nullable _firstObject;
	SecondType _Nullable _secondObject;
	ThirdType _Nullable _thirdObject;

}

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







>







31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# define SecondType id
# define ThirdType id
#endif
{
	FirstType _Nullable _firstObject;
	SecondType _Nullable _secondObject;
	ThirdType _Nullable _thirdObject;
	OF_RESERVE_IVARS(4)
}

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

Modified src/OFUDPSocket.h from [7aa018221e] to [93eb5b4287].

121
122
123
124
125
126
127

128
129
130
131
132
133
134
{
	of_socket_t _socket;
#ifdef OF_WII
	uint16_t _port;
#endif
	bool _blocking;
	id _Nullable _delegate;

}

/*!
 * @brief Whether the socket is in blocking mode.
 *
 * By default, a socket is in blocking mode.
 */







>







121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
{
	of_socket_t _socket;
#ifdef OF_WII
	uint16_t _port;
#endif
	bool _blocking;
	id _Nullable _delegate;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Whether the socket is in blocking mode.
 *
 * By default, a socket is in blocking mode.
 */

Modified src/OFURL.h from [d5f7b8d500] to [6489d1ac08].

33
34
35
36
37
38
39

40
41
42
43
44
45
46
@interface OFURL: OFObject <OFCopying, OFMutableCopying, OFSerialization>
{
	OFString *_Nullable _URLEncodedScheme, *_Nullable _URLEncodedHost;
	OFNumber *_Nullable _port;
	OFString *_Nullable _URLEncodedUser, *_Nullable _URLEncodedPassword;
	OFString *_Nullable _URLEncodedPath;
	OFString *_Nullable _URLEncodedQuery, *_Nullable _URLEncodedFragment;

}

/*!
 * @brief The scheme part of the URL.
 */
@property OF_NULLABLE_PROPERTY (readonly, copy, nonatomic) OFString *scheme;








>







33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
@interface OFURL: OFObject <OFCopying, OFMutableCopying, OFSerialization>
{
	OFString *_Nullable _URLEncodedScheme, *_Nullable _URLEncodedHost;
	OFNumber *_Nullable _port;
	OFString *_Nullable _URLEncodedUser, *_Nullable _URLEncodedPassword;
	OFString *_Nullable _URLEncodedPath;
	OFString *_Nullable _URLEncodedQuery, *_Nullable _URLEncodedFragment;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The scheme part of the URL.
 */
@property OF_NULLABLE_PROPERTY (readonly, copy, nonatomic) OFString *scheme;

Modified src/OFURLHandler.h from [99d8a7ec4d] to [21e47d991e].

30
31
32
33
34
35
36

37
38
39
40
41
42
43
 * @class OFURLHandler OFURLHandler.h ObjFW/OFURLHandler.h
 *
 * @brief A handler for a URL scheme.
 */
@interface OFURLHandler: OFObject
{
	OFString *_scheme;

}

/*!
 * @brief The scheme this OFURLHandler handles.
 */
@property (readonly, nonatomic) OFString *scheme;








>







30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
 * @class OFURLHandler OFURLHandler.h ObjFW/OFURLHandler.h
 *
 * @brief A handler for a URL scheme.
 */
@interface OFURLHandler: OFObject
{
	OFString *_scheme;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The scheme this OFURLHandler handles.
 */
@property (readonly, nonatomic) OFString *scheme;

Modified src/OFValue.h from [08334bde30] to [cd088af64e].

21
22
23
24
25
26
27




28
29
30
31
32
33
34

/*!
 * @class OFValue OFValue.h ObjFW/OFValue.h
 *
 * @brief A class for storing arbitrary values in an object.
 */
@interface OFValue: OFObject <OFCopying>




/*!
 * @brief The ObjC type encoding of the value.
 */
@property (readonly, nonatomic) const char *objCType;

/*!
 * @brief The value as a pointer to void.







>
>
>
>







21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

/*!
 * @class OFValue OFValue.h ObjFW/OFValue.h
 *
 * @brief A class for storing arbitrary values in an object.
 */
@interface OFValue: OFObject <OFCopying>
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The ObjC type encoding of the value.
 */
@property (readonly, nonatomic) const char *objCType;

/*!
 * @brief The value as a pointer to void.

Modified src/OFWin32ConsoleStdIOStream.h from [f6d4919bb8] to [4f43803fd9].

17
18
19
20
21
22
23

24
25
26
27
28
29
30
31
32
33

#define OF_STDIO_STREAM_WIN32CONSOLE_H

#import "OFStdIOStream.h"

OF_ASSUME_NONNULL_BEGIN


@interface OFWin32ConsoleStdIOStream: OFStdIOStream
{
	HANDLE _handle;
	of_char16_t _incompleteUTF16Surrogate;
	char _incompleteUTF8Surrogate[4];
	size_t _incompleteUTF8SurrogateLen;
}
@end

OF_ASSUME_NONNULL_END







>










17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

#define OF_STDIO_STREAM_WIN32CONSOLE_H

#import "OFStdIOStream.h"

OF_ASSUME_NONNULL_BEGIN

OF_SUBCLASSING_RESTRICTED
@interface OFWin32ConsoleStdIOStream: OFStdIOStream
{
	HANDLE _handle;
	of_char16_t _incompleteUTF16Surrogate;
	char _incompleteUTF8Surrogate[4];
	size_t _incompleteUTF8SurrogateLen;
}
@end

OF_ASSUME_NONNULL_END

Modified src/OFWindowsRegistryKey.h from [9fac5d4d25] to [11b2db8071].

24
25
26
27
28
29
30

31
32
33
34
35
36
37

@class OFData;

/*!
 * @class OFWindowsRegistryKey \
 *	  OFWindowsRegistryKey.h ObjFW/OFWindowsRegistryKey.h
 */

@interface OFWindowsRegistryKey: OFObject
{
	HKEY _hKey;
	bool _close;
}

/*!







>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

@class OFData;

/*!
 * @class OFWindowsRegistryKey \
 *	  OFWindowsRegistryKey.h ObjFW/OFWindowsRegistryKey.h
 */
OF_SUBCLASSING_RESTRICTED
@interface OFWindowsRegistryKey: OFObject
{
	HKEY _hKey;
	bool _close;
}

/*!

Modified src/OFXMLAttribute.h from [ed65bcb38c] to [9cd58fd2db].

29
30
31
32
33
34
35

36
37
38
39
40
41
42
@interface OFXMLAttribute: OFXMLNode
{
#if defined(OF_XML_ELEMENT_M) || defined(OF_XML_PARSER_M)
@public
#endif
	OFString *_name, *_Nullable _namespace, *_stringValue;
	bool _useDoubleQuotes;

}

/*!
 * @brief The name of the attribute.
 */
@property (readonly, nonatomic) OFString *name;








>







29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
@interface OFXMLAttribute: OFXMLNode
{
#if defined(OF_XML_ELEMENT_M) || defined(OF_XML_PARSER_M)
@public
#endif
	OFString *_name, *_Nullable _namespace, *_stringValue;
	bool _useDoubleQuotes;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The name of the attribute.
 */
@property (readonly, nonatomic) OFString *name;

Modified src/OFXMLCDATA.h from [55264b0e38] to [6b5be91b20].

23
24
25
26
27
28
29

30
31
32
33
34
35
36
 * @class OFXMLCDATA OFXMLCDATA.h ObjFW/OFXMLCDATA.h
 *
 * @brief A class representing XML CDATA.
 */
@interface OFXMLCDATA: OFXMLNode
{
	OFString *_CDATA;

}

/*!
 * @brief Creates a new OFXMLCDATA with the specified string.
 *
 * @param string The string value for the CDATA
 * @return A new OFXMLCDATA







>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 * @class OFXMLCDATA OFXMLCDATA.h ObjFW/OFXMLCDATA.h
 *
 * @brief A class representing XML CDATA.
 */
@interface OFXMLCDATA: OFXMLNode
{
	OFString *_CDATA;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Creates a new OFXMLCDATA with the specified string.
 *
 * @param string The string value for the CDATA
 * @return A new OFXMLCDATA

Modified src/OFXMLCharacters.h from [5302379b94] to [566e2a1d51].

23
24
25
26
27
28
29

30
31
32
33
34
35
36
 * @class OFXMLCharacters OFXMLCharacters.h ObjFW/OFXMLCharacters.h
 *
 * @brief A class representing XML characters.
 */
@interface OFXMLCharacters: OFXMLNode
{
	OFString *_characters;

}

/*!
 * @brief Creates a new OFXMLCharacters with the specified string.
 *
 * @param string The string value for the characters
 * @return A new OFXMLCharacters







>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 * @class OFXMLCharacters OFXMLCharacters.h ObjFW/OFXMLCharacters.h
 *
 * @brief A class representing XML characters.
 */
@interface OFXMLCharacters: OFXMLNode
{
	OFString *_characters;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Creates a new OFXMLCharacters with the specified string.
 *
 * @param string The string value for the characters
 * @return A new OFXMLCharacters

Modified src/OFXMLComment.h from [cff55f0a1f] to [7604b96e68].

23
24
25
26
27
28
29

30
31
32
33
34
35
36
 * @class OFXMLComment OFXMLComment.h ObjFW/OFXMLComment.h
 *
 * @brief A class for representing XML comments.
 */
@interface OFXMLComment: OFXMLNode
{
	OFString *_comment;

}

/*!
 * @brief Creates a new OFXMLComment with the specified string.
 *
 * @param string The string for the comment
 * @return A new OFXMLComment







>







23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 * @class OFXMLComment OFXMLComment.h ObjFW/OFXMLComment.h
 *
 * @brief A class for representing XML comments.
 */
@interface OFXMLComment: OFXMLNode
{
	OFString *_comment;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Creates a new OFXMLComment with the specified string.
 *
 * @param string The string for the comment
 * @return A new OFXMLComment

Modified src/OFXMLElement.h from [cae7cd646e] to [8a18eb088f].

34
35
36
37
38
39
40

41
42
43
44
45
46
47
@interface OFXMLElement: OFXMLNode
{
	OFString *_name, *_Nullable _namespace, *_Nullable _defaultNamespace;
	OFMutableArray OF_GENERIC(OFXMLAttribute *) *_Nullable _attributes;
	OFMutableDictionary OF_GENERIC(OFString *, OFString *) *_Nullable
	    _namespaces;
	OFMutableArray OF_GENERIC(OFXMLNode *) *_Nullable _children;

}

/*!
 * @brief The name of the element.
 */
@property (copy, nonatomic) OFString *name;








>







34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
@interface OFXMLElement: OFXMLNode
{
	OFString *_name, *_Nullable _namespace, *_Nullable _defaultNamespace;
	OFMutableArray OF_GENERIC(OFXMLAttribute *) *_Nullable _attributes;
	OFMutableDictionary OF_GENERIC(OFString *, OFString *) *_Nullable
	    _namespaces;
	OFMutableArray OF_GENERIC(OFXMLNode *) *_Nullable _children;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The name of the element.
 */
@property (copy, nonatomic) OFString *name;

Modified src/OFXMLElementBuilder.h from [636accb67a] to [a5bfbc9534].

100
101
102
103
104
105
106

107
108
109
110
111
112
113
 * @brief A class implementing the OFXMLParserDelegate protocol that can build
 * OFXMLElements from the document parsed by the OFXMLParser.
 *
 * It can also be used to build OFXMLElements from parts of the document by
 * first parsing stuff using the OFXMLParser with another delegate and then
 * setting the OFXMLElementBuilder as delegate for the parser.
 */

@interface OFXMLElementBuilder: OFObject <OFXMLParserDelegate>
{
	OFMutableArray OF_GENERIC(OFXMLElement *) *_stack;
	id <OFXMLElementBuilderDelegate> _Nullable _delegate;
}

/*!







>







100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
 * @brief A class implementing the OFXMLParserDelegate protocol that can build
 * OFXMLElements from the document parsed by the OFXMLParser.
 *
 * It can also be used to build OFXMLElements from parts of the document by
 * first parsing stuff using the OFXMLParser with another delegate and then
 * setting the OFXMLElementBuilder as delegate for the parser.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFXMLElementBuilder: OFObject <OFXMLParserDelegate>
{
	OFMutableArray OF_GENERIC(OFXMLElement *) *_stack;
	id <OFXMLElementBuilderDelegate> _Nullable _delegate;
}

/*!

Modified src/OFXMLNode.h from [cba2a7e188] to [81d926c432].

24
25
26
27
28
29
30




31
32
33
34
35
36
37

/*!
 * @class OFXMLNode OFXMLNode.h ObjFW/OFXMLNode.h
 *
 * @brief A class which stores an XML element.
 */
@interface OFXMLNode: OFObject <OFCopying, OFSerialization>




/*!
 * @brief The contents of the node as a string value.
 *
 * For an @ref OFXMLElement, setting it removes all children and creates a
 * single child with the specified string value.
 */
@property (nonatomic, copy) OFString *stringValue;







>
>
>
>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

/*!
 * @class OFXMLNode OFXMLNode.h ObjFW/OFXMLNode.h
 *
 * @brief A class which stores an XML element.
 */
@interface OFXMLNode: OFObject <OFCopying, OFSerialization>
{
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The contents of the node as a string value.
 *
 * For an @ref OFXMLElement, setting it removes all children and creates a
 * single child with the specified string value.
 */
@property (nonatomic, copy) OFString *stringValue;

Modified src/OFXMLParser.h from [7ff9022fef] to [76cd96268b].

125
126
127
128
129
130
131

132
133
134
135
136
137
138
 * @class OFXMLParser OFXMLParser.h ObjFW/OFXMLParser.h
 *
 * @brief An event-based XML parser.
 *
 * OFXMLParser is an event-based XML parser which calls the delegate's callbacks
 * as soon as it finds something, thus suitable for streams as well.
 */

@interface OFXMLParser: OFObject
{
	id <OFXMLParserDelegate> _Nullable _delegate;
	enum of_xml_parser_state {
		OF_XMLPARSER_IN_BYTE_ORDER_MARK,
		OF_XMLPARSER_OUTSIDE_TAG,
		OF_XMLPARSER_TAG_OPENED,







>







125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
 * @class OFXMLParser OFXMLParser.h ObjFW/OFXMLParser.h
 *
 * @brief An event-based XML parser.
 *
 * OFXMLParser is an event-based XML parser which calls the delegate's callbacks
 * as soon as it finds something, thus suitable for streams as well.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFXMLParser: OFObject
{
	id <OFXMLParserDelegate> _Nullable _delegate;
	enum of_xml_parser_state {
		OF_XMLPARSER_IN_BYTE_ORDER_MARK,
		OF_XMLPARSER_OUTSIDE_TAG,
		OF_XMLPARSER_TAG_OPENED,

Modified src/OFXMLProcessingInstructions.h from [3daafe52e9] to [8c87d1c2de].

24
25
26
27
28
29
30

31
32
33
34
35
36
37
 *	  OFXMLProcessingInstructions.h ObjFW/OFXMLProcessingInstructions.h
 *
 * @brief A class for representing XML processing instructions.
 */
@interface OFXMLProcessingInstructions: OFXMLNode
{
	OFString *_processingInstructions;

}

/*!
 * @brief Creates a new OFXMLProcessingInstructions with the specified string.
 *
 * @param string The string for the processing instructions
 * @return A new OFXMLProcessingInstructions







>







24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 *	  OFXMLProcessingInstructions.h ObjFW/OFXMLProcessingInstructions.h
 *
 * @brief A class for representing XML processing instructions.
 */
@interface OFXMLProcessingInstructions: OFXMLNode
{
	OFString *_processingInstructions;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief Creates a new OFXMLProcessingInstructions with the specified string.
 *
 * @param string The string for the processing instructions
 * @return A new OFXMLProcessingInstructions

Modified src/OFZIPArchive.h from [4b0bcbe6e5] to [f47223fd79].

27
28
29
30
31
32
33

34
35
36
37
38
39
40
@class OFStream;

/*!
 * @class OFZIPArchive OFZIPArchive.h ObjFW/OFZIPArchive.h
 *
 * @brief A class for accessing and manipulating ZIP files.
 */

@interface OFZIPArchive: OFObject
{
	OFStream *_stream;
	int64_t _offset;
	enum {
		OF_ZIP_ARCHIVE_MODE_READ,
		OF_ZIP_ARCHIVE_MODE_WRITE,







>







27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
@class OFStream;

/*!
 * @class OFZIPArchive OFZIPArchive.h ObjFW/OFZIPArchive.h
 *
 * @brief A class for accessing and manipulating ZIP files.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFZIPArchive: OFObject
{
	OFStream *_stream;
	int64_t _offset;
	enum {
		OF_ZIP_ARCHIVE_MODE_READ,
		OF_ZIP_ARCHIVE_MODE_WRITE,

Modified src/OFZIPArchiveEntry.h from [33a9310f4d] to [e9ac584951].

108
109
110
111
112
113
114

115
116
117
118
119
120
121
	OFString *_fileName;
	OFData *_Nullable _extraField;
	OFString *_Nullable _fileComment;
	uint32_t _startDiskNumber;
	uint16_t _internalAttributes;
	uint32_t _versionSpecificAttributes;
	int64_t _localFileHeaderOffset;

}

/*!
 * @brief The file name of the entry.
 */
@property (readonly, copy, nonatomic) OFString *fileName;








>







108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
	OFString *_fileName;
	OFData *_Nullable _extraField;
	OFString *_Nullable _fileComment;
	uint32_t _startDiskNumber;
	uint16_t _internalAttributes;
	uint32_t _versionSpecificAttributes;
	int64_t _localFileHeaderOffset;
	OF_RESERVE_IVARS(4)
}

/*!
 * @brief The file name of the entry.
 */
@property (readonly, copy, nonatomic) OFString *fileName;

Modified src/macros.h from [6430489c6f] to [fff954ce5f].

120
121
122
123
124
125
126















127
128
129
130
131
132
133
# ifdef __BIGGEST_ALIGNMENT__
#  define OF_BIGGEST_ALIGNMENT __BIGGEST_ALIGNMENT__
# else
#  /* Hopefully no arch needs more than 16 byte alignment */
#  define OF_BIGGEST_ALIGNMENT 16
# endif
#endif
















#ifdef __GNUC__
# define OF_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
#else
# define OF_GCC_VERSION 0
#endif








>
>
>
>
>
>
>
>
>
>
>
>
>
>
>







120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
# ifdef __BIGGEST_ALIGNMENT__
#  define OF_BIGGEST_ALIGNMENT __BIGGEST_ALIGNMENT__
# else
#  /* Hopefully no arch needs more than 16 byte alignment */
#  define OF_BIGGEST_ALIGNMENT 16
# endif
#endif

#define OF_PREPROCESSOR_CONCAT2(a, b) a##b
#define OF_PREPROCESSOR_CONCAT(a, b) OF_PREPROCESSOR_CONCAT2(a, b)

#if __OBJFW_RUNTIME_ABI__ || (defined(OF_APPLE_RUNTIME) && defined(__OBJC2__))
# define OF_HAVE_NONFRAGILE_IVARS
#endif

#ifdef OF_HAVE_NONFRAGILE_IVARS
# define OF_RESERVE_IVARS(num)
#else
# define OF_RESERVE_IVARS(num)						   \
	@private							   \
		void *OF_PREPROCESSOR_CONCAT(_reserved, __COUNTER__)[num];
#endif

#ifdef __GNUC__
# define OF_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
#else
# define OF_GCC_VERSION 0
#endif

401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
	[self doesNotRecognizeSelector: _cmd];				\
									\
	abort();							\
									\
	[super dealloc];	/* Get rid of a stupid warning */
#endif

#define OF_PREPROCESSOR_CONCAT2(a, b) a##b
#define OF_PREPROCESSOR_CONCAT(a, b) OF_PREPROCESSOR_CONCAT2(a, b)
#define OF_CONSTRUCTOR(prio)					\
	static void __attribute__((__constructor__(prio)))	\
	OF_PREPROCESSOR_CONCAT(constructor, __LINE__)(void)
#define OF_DESTRUCTOR(prio)					\
	static void __attribute__((__destructor__(prio)))	\
	OF_PREPROCESSOR_CONCAT(destructor, __LINE__)(void)








<
<







416
417
418
419
420
421
422


423
424
425
426
427
428
429
	[self doesNotRecognizeSelector: _cmd];				\
									\
	abort();							\
									\
	[super dealloc];	/* Get rid of a stupid warning */
#endif



#define OF_CONSTRUCTOR(prio)					\
	static void __attribute__((__constructor__(prio)))	\
	OF_PREPROCESSOR_CONCAT(constructor, __LINE__)(void)
#define OF_DESTRUCTOR(prio)					\
	static void __attribute__((__destructor__(prio)))	\
	OF_PREPROCESSOR_CONCAT(destructor, __LINE__)(void)