ObjFW
Loading...
Searching...
No Matches
OFMethodSignature.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
24@class OFMutableData;
25
31OF_SUBCLASSING_RESTRICTED
33{
34 char *_types;
35 OFMutableData *_typesPointers, *_offsets;
36}
37
41@property (readonly, nonatomic) size_t numberOfArguments;
42
46@property (readonly, nonatomic) const char *methodReturnType;
47
53@property (readonly, nonatomic) size_t frameLength;
54
62+ (instancetype)signatureWithObjCTypes: (const char *)types;
63
64- (instancetype)init OF_UNAVAILABLE;
65
74- (instancetype)initWithObjCTypes: (const char *)types
75 OF_DESIGNATED_INITIALIZER;
76
83- (const char *)argumentTypeAtIndex: (size_t)index;
84
94- (size_t)argumentOffsetAtIndex: (size_t)index;
95@end
96
97#ifdef __cplusplus
98extern "C" {
99#endif
107extern size_t OFSizeOfTypeEncoding(const char *type);
108
116extern size_t OFAlignmentOfTypeEncoding(const char *type);
117#ifdef __cplusplus
118}
119#endif
120
121OF_ASSUME_NONNULL_END
A class for parsing type encodings and accessing them.
Definition OFMethodSignature.h:33
A class for storing and manipulating arbitrary data in an array.
Definition OFMutableData.h:30
The root class for all other classes inside ObjFW.
Definition OFObject.h:692