2 * Copyright (c) 2017 Apple Inc. All Rights Reserved.
4 * @APPLE_LICENSE_HEADER_START@
6 * This file contains Original Code and/or Modifications of Original Code
7 * as defined in and that are subject to the Apple Public Source License
8 * Version 2.0 (the 'License'). You may not use this file except in
9 * compliance with the License. Please obtain a copy of the License at
10 * http://www.opensource.apple.com/apsl/ and read it before using this
13 * The Original Code and all software distributed under the License are
14 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
15 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
16 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
17 * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
18 * Please see the License for the specific language governing rights and
19 * limitations under the License.
21 * @APPLE_LICENSE_HEADER_END@
24 #ifndef SECURITY_SFSQL_OBJCTYPE_H
25 #define SECURITY_SFSQL_OBJCTYPE_H 1
29 #import <Foundation/Foundation.h>
31 typedef NS_ENUM(NSInteger
, SFObjCTypeCode
) {
32 SFObjCTypeChar
= 0, // 'c'
33 SFObjCTypeShort
= 1, // 's'
34 SFObjCTypeInt
= 2, // 'i'
35 SFObjCTypeLong
= 3, // 'l'
36 SFObjCTypeLongLong
= 4, // 'q'
37 SFObjCTypeUnsignedChar
= 5, // 'C'
38 SFObjCTypeUnsignedShort
= 6, // 'S'
39 SFObjCTypeUnsignedInt
= 7, // 'I'
40 SFObjCTypeUnsignedLong
= 8, // 'L'
41 SFObjCTypeUnsignedLongLong
= 9, // 'Q'
42 SFObjCTypeFloat
= 10, // 'f'
43 SFObjCTypeDouble
= 11, // 'd'
44 SFObjCTypeBool
= 12, // 'b'
45 SFObjCTypeVoid
= 13, // 'v'
46 SFObjCTypeCharPointer
= 14, // '*'
47 SFObjCTypeObject
= 15, // '@'
48 SFObjCTypeClass
= 16, // '#'
49 SFObjCTypeSelector
= 17, // ':'
50 SFObjCTypeArray
= 18, // '[' type ']'
51 SFObjCTypeStructure
= 19, // '{' name '=' type... '}'
52 SFObjCTypeUnion
= 20, // '(' name '=' type... ')'
53 SFObjCTypeBitfield
= 21, // 'b' number
54 SFObjCTypePointer
= 22, // '^' type
55 SFObjCTypeUnknown
= 23, // '?'
58 typedef NS_ENUM(NSInteger
, SFObjCTypeFlag
) {
59 SFObjCTypeFlagIntegerNumber
= 0x1,
60 SFObjCTypeFlagFloatingPointNumber
= 0x2,
62 SFObjCTypeFlagNone
= 0x0,
63 SFObjCTypeFlagNumberMask
= 0x3,
66 @interface SFObjCType
: NSObject
{
75 + (SFObjCType
*)typeForEncoding
:(const char *)encoding
;
76 + (SFObjCType
*)typeForValue
:(NSValue
*)value
;
78 @
property (nonatomic
, readonly
, assign
) SFObjCTypeCode code
;
79 @
property (nonatomic
, readonly
, strong
) NSString
*encoding
;
80 @
property (nonatomic
, readonly
, strong
) NSString
*name
;
81 @
property (nonatomic
, readonly
, strong
) NSString
*className
;
82 @
property (nonatomic
, readonly
, assign
) NSUInteger size
;
83 @
property (nonatomic
, readonly
, assign
) NSUInteger flags
;
85 @
property (nonatomic
, readonly
, assign
, getter
=isNumber
) BOOL number
;
86 @
property (nonatomic
, readonly
, assign
, getter
=isIntegerNumber
) BOOL integerNumber
;
87 @
property (nonatomic
, readonly
, assign
, getter
=isFloatingPointNumber
) BOOL floatingPointNumber
;
88 @
property (nonatomic
, readonly
, assign
, getter
=isObject
) BOOL object
;
90 - (id
)objectWithBytes
:(const void *)bytes
;
91 - (void)getBytes
:(void *)bytes forObject
:(id
)object
;
96 #endif /* SECURITY_SFSQL_OBJCTYPE_H */