ObjFW
Loading...
Searching...
No Matches
OFPair.h
1/*
2 * Copyright (c) 2008-2024 Jonathan Schleifer <js@nil.im>
3 *
4 * All rights reserved.
5 *
6 * This program is free software: you can redistribute it and/or modify it
7 * under the terms of the GNU Lesser General Public License version 3.0 only,
8 * as published by the Free Software Foundation.
9 *
10 * This program is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
13 * version 3.0 for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public License
16 * version 3.0 along with this program. If not, see
17 * <https://www.gnu.org/licenses/>.
18 */
19
20#import "OFObject.h"
21
22OF_ASSUME_NONNULL_BEGIN
23
29@interface OFPair OF_GENERIC(FirstType, SecondType): OFObject <OFCopying,
31#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
32# define FirstType id
33# define SecondType id
34#endif
35{
36 FirstType _Nullable _firstObject;
37 SecondType _Nullable _secondObject;
38 OF_RESERVE_IVARS(OFPair, 4)
39}
40
44@property OF_NULLABLE_PROPERTY (readonly, nonatomic, retain)
45 FirstType firstObject;
46
50@property OF_NULLABLE_PROPERTY (readonly, nonatomic, retain)
51 SecondType secondObject;
52
60+ (instancetype)pairWithFirstObject: (nullable FirstType)firstObject
61 secondObject: (nullable SecondType)secondObject;
62
70- (instancetype)initWithFirstObject: (nullable FirstType)firstObject
71 secondObject: (nullable SecondType)secondObject
72 OF_DESIGNATED_INITIALIZER;
73#if !defined(OF_HAVE_GENERICS) && !defined(DOXYGEN)
74# undef FirstType
75# undef SecondType
76#endif
77@end
78
79OF_ASSUME_NONNULL_END
80
81#import "OFMutablePair.h"
The root class for all other classes inside ObjFW.
Definition OFObject.h:692
A class for storing a pair of two objects.
Definition OFPair.h:40
A protocol for the creation of copies.
Definition OFObject.h:1350
A protocol for the creation of mutable copies.
Definition OFObject.h:1371