From 14e30e572f4b0624e8c57c7f1a5459902a291983 Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Sun, 31 Mar 2024 17:50:52 +0800 Subject: [PATCH 01/15] Fixed an issue where importing SwiftPM with Xcode failed to compile --- ClassDump/ClassDump.h | 4 ++-- ClassDump/Models/CDVariableModel.h | 2 +- ClassDump/Models/ParseTypes/CDArrayType.h | 2 +- ClassDump/Models/ParseTypes/CDBitFieldType.h | 2 +- ClassDump/Models/ParseTypes/CDBlockType.h | 2 +- ClassDump/Models/ParseTypes/CDObjectType.h | 2 +- ClassDump/Models/ParseTypes/CDParseType.h | 2 +- ClassDump/Models/ParseTypes/CDPointerType.h | 2 +- ClassDump/Models/ParseTypes/CDPrimitiveType.h | 2 +- ClassDump/Models/ParseTypes/CDRecordType.h | 2 +- ClassDump/Models/Reflections/CDClassModel.h | 2 +- ClassDump/Models/Reflections/CDIvarModel.h | 2 +- ClassDump/Models/Reflections/CDMethodModel.h | 2 +- ClassDump/Models/Reflections/CDPropertyModel.h | 2 +- ClassDump/Models/Reflections/CDProtocolModel.h | 2 +- ClassDump/Services/CDTypeParser.h | 2 +- 16 files changed, 17 insertions(+), 17 deletions(-) diff --git a/ClassDump/ClassDump.h b/ClassDump/ClassDump.h index 0fc8d8f..6470738 100644 --- a/ClassDump/ClassDump.h +++ b/ClassDump/ClassDump.h @@ -6,7 +6,7 @@ // Copyright © 2019 Leptos. All rights reserved. // -#if SWIFT_PACKAGE +#if !__has_include() #import "Models/Reflections/CDClassModel.h" #import "Models/Reflections/CDProtocolModel.h" @@ -35,4 +35,4 @@ #import #import -#endif /* SWIFT_PACKAGE */ +#endif /* !__has_include() */ diff --git a/ClassDump/Models/CDVariableModel.h b/ClassDump/Models/CDVariableModel.h index 63f8558..22eabc2 100644 --- a/ClassDump/Models/CDVariableModel.h +++ b/ClassDump/Models/CDVariableModel.h @@ -8,7 +8,7 @@ #import -#if SWIFT_PACKAGE +#if !__has_include() #import "ParseTypes/CDParseType.h" #else #import diff --git a/ClassDump/Models/ParseTypes/CDArrayType.h b/ClassDump/Models/ParseTypes/CDArrayType.h index f271fd3..2da843f 100644 --- a/ClassDump/Models/ParseTypes/CDArrayType.h +++ b/ClassDump/Models/ParseTypes/CDArrayType.h @@ -6,7 +6,7 @@ // Copyright © 2022 Leptos. All rights reserved. // -#if SWIFT_PACKAGE +#if !__has_include() #import "CDParseType.h" #else #import diff --git a/ClassDump/Models/ParseTypes/CDBitFieldType.h b/ClassDump/Models/ParseTypes/CDBitFieldType.h index 142def0..a6cf8a4 100644 --- a/ClassDump/Models/ParseTypes/CDBitFieldType.h +++ b/ClassDump/Models/ParseTypes/CDBitFieldType.h @@ -6,7 +6,7 @@ // Copyright © 2022 Leptos. All rights reserved. // -#if SWIFT_PACKAGE +#if !__has_include() #import "CDParseType.h" #else #import diff --git a/ClassDump/Models/ParseTypes/CDBlockType.h b/ClassDump/Models/ParseTypes/CDBlockType.h index 9677662..ba01c35 100644 --- a/ClassDump/Models/ParseTypes/CDBlockType.h +++ b/ClassDump/Models/ParseTypes/CDBlockType.h @@ -6,7 +6,7 @@ // Copyright © 2022 Leptos. All rights reserved. // -#if SWIFT_PACKAGE +#if !__has_include() #import "CDParseType.h" #else #import diff --git a/ClassDump/Models/ParseTypes/CDObjectType.h b/ClassDump/Models/ParseTypes/CDObjectType.h index fdbec88..508ee1c 100644 --- a/ClassDump/Models/ParseTypes/CDObjectType.h +++ b/ClassDump/Models/ParseTypes/CDObjectType.h @@ -6,7 +6,7 @@ // Copyright © 2022 Leptos. All rights reserved. // -#if SWIFT_PACKAGE +#if !__has_include() #import "CDParseType.h" #else #import diff --git a/ClassDump/Models/ParseTypes/CDParseType.h b/ClassDump/Models/ParseTypes/CDParseType.h index ac2b5a2..fa301b8 100644 --- a/ClassDump/Models/ParseTypes/CDParseType.h +++ b/ClassDump/Models/ParseTypes/CDParseType.h @@ -8,7 +8,7 @@ #import -#if SWIFT_PACKAGE +#if !__has_include() #import "../CDSemanticString.h" #else #import diff --git a/ClassDump/Models/ParseTypes/CDPointerType.h b/ClassDump/Models/ParseTypes/CDPointerType.h index 4fbbe6a..36e6d2e 100644 --- a/ClassDump/Models/ParseTypes/CDPointerType.h +++ b/ClassDump/Models/ParseTypes/CDPointerType.h @@ -6,7 +6,7 @@ // Copyright © 2022 Leptos. All rights reserved. // -#if SWIFT_PACKAGE +#if !__has_include() #import "CDParseType.h" #else #import diff --git a/ClassDump/Models/ParseTypes/CDPrimitiveType.h b/ClassDump/Models/ParseTypes/CDPrimitiveType.h index b562eb2..8e3dc90 100644 --- a/ClassDump/Models/ParseTypes/CDPrimitiveType.h +++ b/ClassDump/Models/ParseTypes/CDPrimitiveType.h @@ -6,7 +6,7 @@ // Copyright © 2022 Leptos. All rights reserved. // -#if SWIFT_PACKAGE +#if !__has_include() #import "CDParseType.h" #else #import diff --git a/ClassDump/Models/ParseTypes/CDRecordType.h b/ClassDump/Models/ParseTypes/CDRecordType.h index 8277b76..eea75d2 100644 --- a/ClassDump/Models/ParseTypes/CDRecordType.h +++ b/ClassDump/Models/ParseTypes/CDRecordType.h @@ -6,7 +6,7 @@ // Copyright © 2022 Leptos. All rights reserved. // -#if SWIFT_PACKAGE +#if !__has_include() #import "CDParseType.h" #import "../CDVariableModel.h" #else diff --git a/ClassDump/Models/Reflections/CDClassModel.h b/ClassDump/Models/Reflections/CDClassModel.h index a0eea13..58dd4bc 100644 --- a/ClassDump/Models/Reflections/CDClassModel.h +++ b/ClassDump/Models/Reflections/CDClassModel.h @@ -8,7 +8,7 @@ #import -#if SWIFT_PACKAGE +#if !__has_include() #import "CDIvarModel.h" #import "CDPropertyModel.h" #import "CDMethodModel.h" diff --git a/ClassDump/Models/Reflections/CDIvarModel.h b/ClassDump/Models/Reflections/CDIvarModel.h index b5c3227..2fe0793 100644 --- a/ClassDump/Models/Reflections/CDIvarModel.h +++ b/ClassDump/Models/Reflections/CDIvarModel.h @@ -9,7 +9,7 @@ #import #import -#if SWIFT_PACKAGE +#if !__has_include() #import "../ParseTypes/CDParseType.h" #else #import diff --git a/ClassDump/Models/Reflections/CDMethodModel.h b/ClassDump/Models/Reflections/CDMethodModel.h index f279eeb..f98508d 100644 --- a/ClassDump/Models/Reflections/CDMethodModel.h +++ b/ClassDump/Models/Reflections/CDMethodModel.h @@ -9,7 +9,7 @@ #import #import -#if SWIFT_PACKAGE +#if !__has_include() #import "../ParseTypes/CDParseType.h" #else #import diff --git a/ClassDump/Models/Reflections/CDPropertyModel.h b/ClassDump/Models/Reflections/CDPropertyModel.h index 49e89b8..b986eea 100644 --- a/ClassDump/Models/Reflections/CDPropertyModel.h +++ b/ClassDump/Models/Reflections/CDPropertyModel.h @@ -9,7 +9,7 @@ #import #import -#if SWIFT_PACKAGE +#if !__has_include() #import "../ParseTypes/CDParseType.h" #import "CDPropertyAttribute.h" #else diff --git a/ClassDump/Models/Reflections/CDProtocolModel.h b/ClassDump/Models/Reflections/CDProtocolModel.h index 61a3d80..b08a3f9 100644 --- a/ClassDump/Models/Reflections/CDProtocolModel.h +++ b/ClassDump/Models/Reflections/CDProtocolModel.h @@ -8,7 +8,7 @@ #import -#if SWIFT_PACKAGE +#if !__has_include() #import "CDPropertyModel.h" #import "CDMethodModel.h" #else diff --git a/ClassDump/Services/CDTypeParser.h b/ClassDump/Services/CDTypeParser.h index 13c0f3b..34e57e0 100644 --- a/ClassDump/Services/CDTypeParser.h +++ b/ClassDump/Services/CDTypeParser.h @@ -8,7 +8,7 @@ #import -#if SWIFT_PACKAGE +#if !__has_include() #import "../Models/ParseTypes/CDParseType.h" #else #import From 008a18398cf1f6b57d6cd22c971aa886a8107a24 Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Fri, 7 Jun 2024 14:48:51 +0800 Subject: [PATCH 02/15] Add nullability for ObjC classes and protocols --- ClassDump.xcodeproj/project.pbxproj | 4 ++-- ClassDump/Models/CDGenerationOptions.h | 4 ++++ ClassDump/Models/CDSemanticString.h | 12 ++++++---- ClassDump/Models/CDVariableModel.h | 4 ++++ ClassDump/Models/ParseTypes/CDArrayType.h | 4 ++++ ClassDump/Models/ParseTypes/CDBitFieldType.h | 4 ++++ ClassDump/Models/ParseTypes/CDBlockType.h | 4 ++++ ClassDump/Models/ParseTypes/CDObjectType.h | 4 ++++ ClassDump/Models/ParseTypes/CDParseType.h | 12 ++++++---- ClassDump/Models/ParseTypes/CDPointerType.h | 6 ++++- ClassDump/Models/ParseTypes/CDPrimitiveType.h | 6 ++++- ClassDump/Models/ParseTypes/CDRecordType.h | 4 ++++ ClassDump/Models/Reflections/CDClassModel.h | 16 ++++++++----- ClassDump/Models/Reflections/CDIvarModel.h | 4 ++++ ClassDump/Models/Reflections/CDMethodModel.h | 4 ++++ .../Models/Reflections/CDPropertyAttribute.h | 10 +++++--- .../Models/Reflections/CDPropertyModel.h | 12 ++++++---- .../Reflections/CDProtocolModel+Conformance.h | 4 ++++ .../Models/Reflections/CDProtocolModel.h | 23 +++++++++++-------- ClassDump/Services/CDTypeParser.h | 6 ++++- ClassDump/Services/CDUtilities.h | 10 +++++--- 21 files changed, 119 insertions(+), 38 deletions(-) diff --git a/ClassDump.xcodeproj/project.pbxproj b/ClassDump.xcodeproj/project.pbxproj index a1b45ca..2de71a4 100644 --- a/ClassDump.xcodeproj/project.pbxproj +++ b/ClassDump.xcodeproj/project.pbxproj @@ -585,7 +585,7 @@ CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = YES; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 7P56K8K4MY; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; @@ -623,7 +623,7 @@ CURRENT_PROJECT_VERSION = 1; DEAD_CODE_STRIPPING = YES; DEFINES_MODULE = YES; - DEVELOPMENT_TEAM = 7P56K8K4MY; + DEVELOPMENT_TEAM = ""; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; diff --git a/ClassDump/Models/CDGenerationOptions.h b/ClassDump/Models/CDGenerationOptions.h index 2d5f9a7..4dac781 100644 --- a/ClassDump/Models/CDGenerationOptions.h +++ b/ClassDump/Models/CDGenerationOptions.h @@ -8,6 +8,8 @@ #import +NS_HEADER_AUDIT_BEGIN(nullability) + /// Options with which a header file may be generated with @interface CDGenerationOptions : NSObject /// @c YES means hide properties and methods that are required by a protocol the type conforms to @@ -50,3 +52,5 @@ @property (nonatomic) BOOL addSymbolImageComments; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/CDSemanticString.h b/ClassDump/Models/CDSemanticString.h index c825a20..b99bf1b 100644 --- a/ClassDump/Models/CDSemanticString.h +++ b/ClassDump/Models/CDSemanticString.h @@ -32,13 +32,15 @@ typedef NS_ENUM(NSUInteger, CDSemanticType) { CDSemanticTypeCount }; +NS_HEADER_AUDIT_BEGIN(nullability) + /// A string composed of substrings that may have different semantic meanings @interface CDSemanticString : NSObject /// The length of the string @property (readonly) NSUInteger length; /// Append another semantic string to the end of this string, /// keeping all of the semantics of both the parameter and receiver -- (void)appendSemanticString:(nonnull CDSemanticString *)semanticString; +- (void)appendSemanticString:(CDSemanticString *)semanticString; /// Append a string with a semantic type to the end of this string - (void)appendString:(nullable NSString *)string semanticType:(CDSemanticType)type; /// Whether the first character in this string is equal to @c character @@ -46,14 +48,16 @@ typedef NS_ENUM(NSUInteger, CDSemanticType) { /// Whether the last character in this string is equal to @c character - (BOOL)endWithChar:(char)character; /// Enumerate the substrings and the associated semantic type that compose this string -- (void)enumerateTypesUsingBlock:(void (NS_NOESCAPE ^_Nonnull)(NSString *_Nonnull string, CDSemanticType type))block; +- (void)enumerateTypesUsingBlock:(void (NS_NOESCAPE ^)(NSString *string, CDSemanticType type))block; /// Enumerate the longest effective substrings and the associated semantic type that compose this string /// /// Each invocation of @c block will have the longest substring of @c type such that the next /// invocation will have a different @c type -- (void)enumerateLongestEffectiveRangesUsingBlock:(void (NS_NOESCAPE ^_Nonnull)(NSString *_Nonnull string, CDSemanticType type))block; +- (void)enumerateLongestEffectiveRangesUsingBlock:(void (NS_NOESCAPE ^)(NSString *string, CDSemanticType type))block; /// The string representation without semantics -- (nonnull NSString *)string; +- (NSString *)string; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/CDVariableModel.h b/ClassDump/Models/CDVariableModel.h index e99586a..3293436 100644 --- a/ClassDump/Models/CDVariableModel.h +++ b/ClassDump/Models/CDVariableModel.h @@ -10,9 +10,13 @@ #import +NS_HEADER_AUDIT_BEGIN(nullability) + @interface CDVariableModel : NSObject @property (strong, nonatomic) NSString *name; @property (strong, nonatomic) CDParseType *type; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/ParseTypes/CDArrayType.h b/ClassDump/Models/ParseTypes/CDArrayType.h index 14014f8..629b013 100644 --- a/ClassDump/Models/ParseTypes/CDArrayType.h +++ b/ClassDump/Models/ParseTypes/CDArrayType.h @@ -8,6 +8,8 @@ #import +NS_HEADER_AUDIT_BEGIN(nullability) + /// Type representing a C array @interface CDArrayType : CDParseType /// Type of elements in the array @@ -16,3 +18,5 @@ @property (nonatomic) NSUInteger size; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/ParseTypes/CDBitFieldType.h b/ClassDump/Models/ParseTypes/CDBitFieldType.h index ce71515..ac3ec53 100644 --- a/ClassDump/Models/ParseTypes/CDBitFieldType.h +++ b/ClassDump/Models/ParseTypes/CDBitFieldType.h @@ -8,9 +8,13 @@ #import +NS_HEADER_AUDIT_BEGIN(nullability) + /// Type representing a bit-field in a record @interface CDBitFieldType : CDParseType /// Width of the bit-fields (in bits) @property (nonatomic) NSUInteger width; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/ParseTypes/CDBlockType.h b/ClassDump/Models/ParseTypes/CDBlockType.h index 10fe2e4..7667319 100644 --- a/ClassDump/Models/ParseTypes/CDBlockType.h +++ b/ClassDump/Models/ParseTypes/CDBlockType.h @@ -8,6 +8,8 @@ #import +NS_HEADER_AUDIT_BEGIN(nullability) + /// Type representing a block @interface CDBlockType : CDParseType /// The type that this block returns @@ -16,3 +18,5 @@ @property (nullable, strong, nonatomic) NSArray *parameterTypes; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/ParseTypes/CDObjectType.h b/ClassDump/Models/ParseTypes/CDObjectType.h index 9bf2e6c..a8308c2 100644 --- a/ClassDump/Models/ParseTypes/CDObjectType.h +++ b/ClassDump/Models/ParseTypes/CDObjectType.h @@ -8,6 +8,8 @@ #import +NS_HEADER_AUDIT_BEGIN(nullability) + /// Type representing an Objective-C object @interface CDObjectType : CDParseType /// The name of the class of the object @@ -18,3 +20,5 @@ @property (nullable, strong, nonatomic) NSArray *protocolNames; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/ParseTypes/CDParseType.h b/ClassDump/Models/ParseTypes/CDParseType.h index cbaf14f..c7060fc 100644 --- a/ClassDump/Models/ParseTypes/CDParseType.h +++ b/ClassDump/Models/ParseTypes/CDParseType.h @@ -25,6 +25,8 @@ typedef NS_ENUM(NSUInteger, CDTypeModifier) { CDTypeModifierCount }; +NS_HEADER_AUDIT_BEGIN(nullability) + OBJC_EXTERN NSString *_Nullable NSStringFromCDTypeModifier(CDTypeModifier); /// Base class to represent a type that a variable may be @@ -35,13 +37,13 @@ OBJC_EXTERN NSString *_Nullable NSStringFromCDTypeModifier(CDTypeModifier); /// A string as this type would appear in code for a given variable name. /// /// @param varName The name of the variable this type is for -- (nonnull NSString *)stringForVariableName:(nullable NSString *)varName; +- (NSString *)stringForVariableName:(nullable NSString *)varName; -- (nonnull NSString *)modifiersString; +- (NSString *)modifiersString; -- (nonnull CDSemanticString *)semanticStringForVariableName:(nullable NSString *)varName; +- (CDSemanticString *)semanticStringForVariableName:(nullable NSString *)varName; -- (nonnull CDSemanticString *)modifiersSemanticString; +- (CDSemanticString *)modifiersSemanticString; /// Classes this type references /// @@ -53,3 +55,5 @@ OBJC_EXTERN NSString *_Nullable NSStringFromCDTypeModifier(CDTypeModifier); - (nullable NSSet *)protocolReferences; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/ParseTypes/CDPointerType.h b/ClassDump/Models/ParseTypes/CDPointerType.h index aa53dc8..bc5efca 100644 --- a/ClassDump/Models/ParseTypes/CDPointerType.h +++ b/ClassDump/Models/ParseTypes/CDPointerType.h @@ -8,11 +8,15 @@ #import +NS_HEADER_AUDIT_BEGIN(nullability) + /// Type representing a pointer @interface CDPointerType : CDParseType /// The type that this pointer points to @property (nullable, strong, nonatomic) CDParseType *pointee; -+ (nonnull instancetype)pointerToPointee:(nonnull CDParseType *)pointee; ++ (instancetype)pointerToPointee:(nonnull CDParseType *)pointee; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/ParseTypes/CDPrimitiveType.h b/ClassDump/Models/ParseTypes/CDPrimitiveType.h index 8e68981..c12fe26 100644 --- a/ClassDump/Models/ParseTypes/CDPrimitiveType.h +++ b/ClassDump/Models/ParseTypes/CDPrimitiveType.h @@ -50,12 +50,16 @@ typedef NS_ENUM(NSUInteger, CDPrimitiveRawType) { CDPrimitiveRawTypeEmpty, }; +NS_HEADER_AUDIT_BEGIN(nullability) + OBJC_EXTERN NSString *_Nullable NSStringFromCDPrimitiveRawType(CDPrimitiveRawType); @interface CDPrimitiveType : CDParseType @property (nonatomic) CDPrimitiveRawType rawType; -+ (nonnull instancetype)primitiveWithRawType:(CDPrimitiveRawType)rawType; ++ (instancetype)primitiveWithRawType:(CDPrimitiveRawType)rawType; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/ParseTypes/CDRecordType.h b/ClassDump/Models/ParseTypes/CDRecordType.h index bd849bf..e5c65fe 100644 --- a/ClassDump/Models/ParseTypes/CDRecordType.h +++ b/ClassDump/Models/ParseTypes/CDRecordType.h @@ -9,6 +9,8 @@ #import #import +NS_HEADER_AUDIT_BEGIN(nullability) + /// Type representing a @c struct or @c union @interface CDRecordType : CDParseType /// The name of the record @@ -29,3 +31,5 @@ @property (nullable, strong, nonatomic) NSArray *fields; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/Reflections/CDClassModel.h b/ClassDump/Models/Reflections/CDClassModel.h index c5c6779..b75ce1c 100644 --- a/ClassDump/Models/Reflections/CDClassModel.h +++ b/ClassDump/Models/Reflections/CDClassModel.h @@ -14,6 +14,8 @@ #import #import +NS_HEADER_AUDIT_BEGIN(nullability) + @interface CDClassModel : NSObject // the Class property must be unsafe_unretained because not all // classes can be stored with either a strong or weak reference @@ -22,15 +24,15 @@ /// The name of the class, e.g. @c NSObject @property (strong, nonatomic, readonly) NSString *name; /// The protocols the class conforms to -@property (strong, nonatomic, readonly) NSArray *protocols; +@property (strong, nonatomic, readonly, nullable) NSArray *protocols; -@property (strong, nonatomic, readonly) NSArray *classProperties; -@property (strong, nonatomic, readonly) NSArray *instanceProperties; +@property (strong, nonatomic, readonly, nullable) NSArray *classProperties; +@property (strong, nonatomic, readonly, nullable) NSArray *instanceProperties; -@property (strong, nonatomic, readonly) NSArray *classMethods; -@property (strong, nonatomic, readonly) NSArray *instanceMethods; +@property (strong, nonatomic, readonly, nullable) NSArray *classMethods; +@property (strong, nonatomic, readonly, nullable) NSArray *instanceMethods; /// Instance variables, including values synthesized from properties -@property (strong, nonatomic, readonly) NSArray *ivars; +@property (strong, nonatomic, readonly, nullable) NSArray *ivars; - (instancetype)initWithClass:(Class)cls; + (instancetype)modelWithClass:(Class)cls; @@ -61,3 +63,5 @@ - (NSSet *)protocolReferences; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/Reflections/CDIvarModel.h b/ClassDump/Models/Reflections/CDIvarModel.h index f1d42c4..b856884 100644 --- a/ClassDump/Models/Reflections/CDIvarModel.h +++ b/ClassDump/Models/Reflections/CDIvarModel.h @@ -11,6 +11,8 @@ #import +NS_HEADER_AUDIT_BEGIN(nullability) + @interface CDIvarModel : NSObject /// The Obj-C runtime @c Ivar @property (nonatomic, readonly) Ivar backing; @@ -25,3 +27,5 @@ - (CDSemanticString *)semanticString; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/Reflections/CDMethodModel.h b/ClassDump/Models/Reflections/CDMethodModel.h index a40b21a..6bb1321 100644 --- a/ClassDump/Models/Reflections/CDMethodModel.h +++ b/ClassDump/Models/Reflections/CDMethodModel.h @@ -11,6 +11,8 @@ #import +NS_HEADER_AUDIT_BEGIN(nullability) + @interface CDMethodModel : NSObject /// The Obj-C runtime @c objc_method_description @property (nonatomic, readonly) struct objc_method_description backing; @@ -40,3 +42,5 @@ - (NSSet *)protocolReferences; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/Reflections/CDPropertyAttribute.h b/ClassDump/Models/Reflections/CDPropertyAttribute.h index 2545d95..2277acb 100644 --- a/ClassDump/Models/Reflections/CDPropertyAttribute.h +++ b/ClassDump/Models/Reflections/CDPropertyAttribute.h @@ -8,13 +8,17 @@ #import +NS_HEADER_AUDIT_BEGIN(nullability) + @interface CDPropertyAttribute : NSObject /// The name of a property attribute, e.g. @c strong, @c nonatomic, @c getter @property (strong, nonatomic, readonly) NSString *name; /// The value of a property attribute, e.g. the method name for @c getter= or @c setter= -@property (strong, nonatomic, readonly) NSString *value; +@property (strong, nonatomic, readonly, nullable) NSString *value; -- (instancetype)initWithName:(NSString *)name value:(NSString *)value; -+ (instancetype)attributeWithName:(NSString *)name value:(NSString *)value; +- (instancetype)initWithName:(NSString *)name value:(nullable NSString *)value; ++ (instancetype)attributeWithName:(NSString *)name value:(nullable NSString *)value; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/Reflections/CDPropertyModel.h b/ClassDump/Models/Reflections/CDPropertyModel.h index 6eb1eef..2bd0282 100644 --- a/ClassDump/Models/Reflections/CDPropertyModel.h +++ b/ClassDump/Models/Reflections/CDPropertyModel.h @@ -12,6 +12,8 @@ #import #import +NS_HEADER_AUDIT_BEGIN(nullability) + @interface CDPropertyModel : NSObject /// The Obj-C runtime @c objc_property_t @property (nonatomic, readonly) objc_property_t backing; @@ -20,13 +22,13 @@ /// The type of the property @property (strong, nonatomic, readonly) CDParseType *type; /// The attributes of the property -@property (strong, nonatomic, readonly) NSArray *attributes; +@property (strong, nonatomic, readonly, nullable) NSArray *attributes; /// The name of the backing instance variable -@property (strong, nonatomic, readonly) NSString *iVar; +@property (strong, nonatomic, readonly, nullable) NSString *iVar; /// The signature of the getter method, e.g. @c count -@property (strong, nonatomic, readonly) NSString *getter; +@property (strong, nonatomic, readonly, nullable) NSString *getter; /// The signature of the setter method, e.g. @c setName: -@property (strong, nonatomic, readonly) NSString *setter; +@property (strong, nonatomic, readonly, nullable) NSString *setter; - (instancetype)initWithProperty:(objc_property_t)property isClass:(BOOL)isClass; + (instancetype)modelWithProperty:(objc_property_t)property isClass:(BOOL)isClass; @@ -40,3 +42,5 @@ - (CDSemanticString *)semanticString; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/Reflections/CDProtocolModel+Conformance.h b/ClassDump/Models/Reflections/CDProtocolModel+Conformance.h index 0e2262b..31d8d6b 100644 --- a/ClassDump/Models/Reflections/CDProtocolModel+Conformance.h +++ b/ClassDump/Models/Reflections/CDProtocolModel+Conformance.h @@ -8,6 +8,8 @@ #import +NS_HEADER_AUDIT_BEGIN(nullability) + @interface CDProtocolModel (Conformance) /// The class properties required for a type conforming to the given protocols to provide @@ -29,3 +31,5 @@ + (NSArray *)requiredInstanceMethodsToConform:(NSArray *)protocols; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Models/Reflections/CDProtocolModel.h b/ClassDump/Models/Reflections/CDProtocolModel.h index 049295c..756f348 100644 --- a/ClassDump/Models/Reflections/CDProtocolModel.h +++ b/ClassDump/Models/Reflections/CDProtocolModel.h @@ -12,25 +12,27 @@ #import #import +NS_HEADER_AUDIT_BEGIN(nullability) + @interface CDProtocolModel : NSObject /// The Obj-C runtime @c Protocol @property (strong, nonatomic, readonly) Protocol *backing; /// The name of the protocol, e.g. @c NSObject @property (strong, nonatomic, readonly) NSString *name; /// The protocols the protocol conforms to -@property (strong, nonatomic, readonly) NSArray *protocols; +@property (strong, nonatomic, readonly, nullable) NSArray *protocols; -@property (strong, nonatomic, readonly) NSArray *requiredClassProperties; -@property (strong, nonatomic, readonly) NSArray *requiredInstanceProperties; +@property (strong, nonatomic, readonly, nullable) NSArray *requiredClassProperties; +@property (strong, nonatomic, readonly, nullable) NSArray *requiredInstanceProperties; -@property (strong, nonatomic, readonly) NSArray *requiredClassMethods; -@property (strong, nonatomic, readonly) NSArray *requiredInstanceMethods; +@property (strong, nonatomic, readonly, nullable) NSArray *requiredClassMethods; +@property (strong, nonatomic, readonly, nullable) NSArray *requiredInstanceMethods; -@property (strong, nonatomic, readonly) NSArray *optionalClassProperties; -@property (strong, nonatomic, readonly) NSArray *optionalInstanceProperties; +@property (strong, nonatomic, readonly, nullable) NSArray *optionalClassProperties; +@property (strong, nonatomic, readonly, nullable) NSArray *optionalInstanceProperties; -@property (strong, nonatomic, readonly) NSArray *optionalClassMethods; -@property (strong, nonatomic, readonly) NSArray *optionalInstanceMethods; +@property (strong, nonatomic, readonly, nullable) NSArray *optionalClassMethods; +@property (strong, nonatomic, readonly, nullable) NSArray *optionalInstanceMethods; - (instancetype)initWithProtocol:(Protocol *)prcl; + (instancetype)modelWithProtocol:(Protocol *)prcl; @@ -61,3 +63,6 @@ - (NSSet *)protocolReferences; @end + + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Services/CDTypeParser.h b/ClassDump/Services/CDTypeParser.h index 1ac85e9..b9a3872 100644 --- a/ClassDump/Services/CDTypeParser.h +++ b/ClassDump/Services/CDTypeParser.h @@ -9,6 +9,8 @@ #import #import +NS_HEADER_AUDIT_BEGIN(nullability) + @interface CDTypeParser : NSObject /// Find the end of an Objective-C type encoding @@ -23,6 +25,8 @@ /// @param start A pointer to the start of an encoded value as returned by @c \@encode /// @param end A pointer to the first byte out-of-bounds from @c start /// @param error Set to @c YES if an error occurs during proccessing -+ (CDParseType *)typeForEncodingStart:(const char *const)start end:(const char *const)end error:(inout BOOL *)error; ++ (CDParseType *)typeForEncodingStart:(const char *const)start end:(const char *const)end error:(nullable inout BOOL *)error; @end + +NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDump/Services/CDUtilities.h b/ClassDump/Services/CDUtilities.h index 82c4b50..ec949fa 100644 --- a/ClassDump/Services/CDUtilities.h +++ b/ClassDump/Services/CDUtilities.h @@ -8,14 +8,18 @@ #import +NS_HEADER_AUDIT_BEGIN(nullability) + @interface CDUtilities : NSObject /// The paths of the images in the loaded dyld shared cache -+ (nonnull NSArray *)dyldSharedCacheImagePaths; ++ (NSArray *)dyldSharedCacheImagePaths; /// Names of all registered Obj-C classes -+ (nonnull NSArray *)classNames; ++ (NSArray *)classNames; /// Determines if the Obj-C class with the given name is safe to reference -+ (BOOL)isClassSafeToInspect:(nonnull NSString *)className; ++ (BOOL)isClassSafeToInspect:(NSString *)className; @end + +NS_HEADER_AUDIT_END(nullability) From cfd8d80a03f431b1391c78a8c3a8d01fbe8ceb13 Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Fri, 7 Jun 2024 15:48:28 +0800 Subject: [PATCH 03/15] Add method semantic type --- ClassDump/Models/CDSemanticString.h | 3 ++- ClassDump/Models/Reflections/CDMethodModel.m | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/ClassDump/Models/CDSemanticString.h b/ClassDump/Models/CDSemanticString.h index b99bf1b..e7b4cd2 100644 --- a/ClassDump/Models/CDSemanticString.h +++ b/ClassDump/Models/CDSemanticString.h @@ -27,7 +27,8 @@ typedef NS_ENUM(NSUInteger, CDSemanticType) { CDSemanticTypeProtocol, // a number literal (e.g. 2, 18, 1e5, 7.1) CDSemanticTypeNumeric, - + // an Obj-C method (e.g. initWithFrame) + CDSemanticTypeMethod, /// The number of valid cases there are in @c CDSemanticType CDSemanticTypeCount }; diff --git a/ClassDump/Models/Reflections/CDMethodModel.m b/ClassDump/Models/Reflections/CDMethodModel.m index 95af0d5..d0a01af 100644 --- a/ClassDump/Models/Reflections/CDMethodModel.m +++ b/ClassDump/Models/Reflections/CDMethodModel.m @@ -111,7 +111,7 @@ - (CDSemanticString *)semanticString { NSArray *brokenupName = [self.name componentsSeparatedByString:@":"]; [argumentTypes enumerateObjectsUsingBlock:^(CDParseType *argumentType, NSUInteger idx, BOOL *stop) { - [build appendString:brokenupName[idx] semanticType:CDSemanticTypeStandard]; + [build appendString:brokenupName[idx] semanticType:CDSemanticTypeMethod]; [build appendString:@":" semanticType:CDSemanticTypeStandard]; [build appendString:@"(" semanticType:CDSemanticTypeStandard]; [build appendSemanticString:[argumentType semanticStringForVariableName:nil]]; @@ -122,7 +122,7 @@ - (CDSemanticString *)semanticString { } }]; } else { - [build appendString:self.name semanticType:CDSemanticTypeStandard]; + [build appendString:self.name semanticType:CDSemanticTypeMethod]; } return build; } From 76cce1ab697cd83237c3fef1f074eb833666cf46 Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Fri, 7 Jun 2024 16:02:49 +0800 Subject: [PATCH 04/15] Add method argument semantic type --- ClassDump/Models/CDSemanticString.h | 2 ++ ClassDump/Models/Reflections/CDMethodModel.m | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/ClassDump/Models/CDSemanticString.h b/ClassDump/Models/CDSemanticString.h index e7b4cd2..2744f5d 100644 --- a/ClassDump/Models/CDSemanticString.h +++ b/ClassDump/Models/CDSemanticString.h @@ -29,6 +29,8 @@ typedef NS_ENUM(NSUInteger, CDSemanticType) { CDSemanticTypeNumeric, // an Obj-C method (e.g. initWithFrame) CDSemanticTypeMethod, + // an Obj-C method argument (e.g. a0, a1, a2) + CDSemanticTypeMethodArgument, /// The number of valid cases there are in @c CDSemanticType CDSemanticTypeCount }; diff --git a/ClassDump/Models/Reflections/CDMethodModel.m b/ClassDump/Models/Reflections/CDMethodModel.m index d0a01af..c76e175 100644 --- a/ClassDump/Models/Reflections/CDMethodModel.m +++ b/ClassDump/Models/Reflections/CDMethodModel.m @@ -116,7 +116,7 @@ - (CDSemanticString *)semanticString { [build appendString:@"(" semanticType:CDSemanticTypeStandard]; [build appendSemanticString:[argumentType semanticStringForVariableName:nil]]; [build appendString:@")" semanticType:CDSemanticTypeStandard]; - [build appendString:[NSString stringWithFormat:@"a%lu", (unsigned long)idx] semanticType:CDSemanticTypeVariable]; + [build appendString:[NSString stringWithFormat:@"a%lu", (unsigned long)idx] semanticType:CDSemanticTypeMethodArgument]; if ((idx + 1) < argumentTypeCount) { // if there are still arguments left, add a space to separate [build appendString:@" " semanticType:CDSemanticTypeStandard]; } From 3496a171387d38c5b2344843e9f035a257cd180a Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Fri, 7 Jun 2024 22:38:28 +0800 Subject: [PATCH 05/15] Refactor --- .../contents.xcworkspacedata | 7 - ClassDump/ClassDump.h | 37 --- ClassDump/Models/CDGenerationOptions.m | 13 - .../project.pbxproj | 284 +++++++++++++++--- .../contents.xcworkspacedata | 7 + .../xcshareddata/IDEWorkspaceChecks.plist | 0 .../xcschemes/ClassDumpRuntime.xcscheme | 28 +- .../xcschemes/ClassDumpRuntimeTests.xcscheme | 22 +- ClassDumpRuntime/ClassDumpRuntime.h | 37 +++ .../ClassDumpRuntime.xctestplan | 0 .../Models/CDGenerationOptions.h | 5 +- ClassDumpRuntime/Models/CDGenerationOptions.m | 25 ++ .../Models/CDSemanticString.h | 2 +- .../Models/CDSemanticString.m | 2 +- .../Models/CDVariableModel.h | 4 +- .../Models/CDVariableModel.m | 2 +- .../Models/NSArray+CDFiltering.h | 2 +- .../Models/NSArray+CDFiltering.m | 2 +- .../Models/ParseTypes/CDArrayType.h | 4 +- .../Models/ParseTypes/CDArrayType.m | 2 +- .../Models/ParseTypes/CDBitFieldType.h | 4 +- .../Models/ParseTypes/CDBitFieldType.m | 2 +- .../Models/ParseTypes/CDBlockType.h | 4 +- .../Models/ParseTypes/CDBlockType.m | 2 +- .../Models/ParseTypes/CDObjectType.h | 4 +- .../Models/ParseTypes/CDObjectType.m | 2 +- .../Models/ParseTypes/CDParseType.h | 4 +- .../Models/ParseTypes/CDParseType.m | 2 +- .../Models/ParseTypes/CDPointerType.h | 4 +- .../Models/ParseTypes/CDPointerType.m | 2 +- .../Models/ParseTypes/CDPrimitiveType.h | 4 +- .../Models/ParseTypes/CDPrimitiveType.m | 2 +- .../Models/ParseTypes/CDRecordType.h | 6 +- .../Models/ParseTypes/CDRecordType.m | 2 +- .../Models/Reflections/CDClassModel.h | 12 +- .../Models/Reflections/CDClassModel.m | 2 +- .../Models/Reflections/CDIvarModel.h | 4 +- .../Models/Reflections/CDIvarModel.m | 2 +- .../Models/Reflections/CDMethodModel.h | 4 +- .../Models/Reflections/CDMethodModel.m | 2 +- .../Models/Reflections/CDPropertyAttribute.h | 2 +- .../Models/Reflections/CDPropertyAttribute.m | 2 +- .../Models/Reflections/CDPropertyModel.h | 6 +- .../Models/Reflections/CDPropertyModel.m | 2 +- .../Reflections/CDProtocolModel+Conformance.h | 4 +- .../Reflections/CDProtocolModel+Conformance.m | 2 +- .../Models/Reflections/CDProtocolModel.h | 8 +- .../Models/Reflections/CDProtocolModel.m | 2 +- .../Services/CDTypeParser.h | 4 +- .../Services/CDTypeParser.m | 2 +- .../Services/CDUtilities.h | 2 +- .../Services/CDUtilities.m | 2 +- .../CDGenerationOptions.swift | 63 ++++ ClassDumpRuntimeSwift/ClassDumpRuntimeSwift.h | 19 ++ .../CDObjCTests.m | 2 +- .../CDParseAdvancedTests.m | 2 +- .../CDParseCppTests.mm | 12 +- .../CDParsePrimitiveTests.m | 2 +- .../CDProtocolTest.m | 2 +- .../Info.plist | 0 Makefile | 2 +- Package.swift | 13 +- Sources/ClassDumpRuntime/ClassDump | 1 - .../include/ClassDump/CDArrayType.h | 1 - .../include/ClassDump/CDBitFieldType.h | 1 - .../include/ClassDump/CDBlockType.h | 1 - .../include/ClassDump/CDClassModel.h | 1 - .../include/ClassDump/CDGenerationOptions.h | 1 - .../include/ClassDump/CDIvarModel.h | 1 - .../include/ClassDump/CDMethodModel.h | 1 - .../include/ClassDump/CDObjectType.h | 1 - .../include/ClassDump/CDParseType.h | 1 - .../include/ClassDump/CDPointerType.h | 1 - .../include/ClassDump/CDPrimitiveType.h | 1 - .../include/ClassDump/CDPropertyAttribute.h | 1 - .../include/ClassDump/CDPropertyModel.h | 1 - .../ClassDump/CDProtocolModel+Conformance.h | 1 - .../include/ClassDump/CDProtocolModel.h | 1 - .../include/ClassDump/CDRecordType.h | 1 - .../include/ClassDump/CDSemanticString.h | 1 - .../include/ClassDump/CDTypeParser.h | 1 - .../include/ClassDump/CDUtilities.h | 1 - .../include/ClassDump/CDVariableModel.h | 1 - .../include/ClassDump/ClassDump.h | 1 - .../include/ClassDumpRuntime/CDArrayType.h | 1 + .../include/ClassDumpRuntime/CDBitFieldType.h | 1 + .../include/ClassDumpRuntime/CDBlockType.h | 1 + .../include/ClassDumpRuntime/CDClassModel.h | 1 + .../ClassDumpRuntime/CDGenerationOptions.h | 1 + .../include/ClassDumpRuntime/CDIvarModel.h | 1 + .../include/ClassDumpRuntime/CDMethodModel.h | 1 + .../include/ClassDumpRuntime/CDObjectType.h | 1 + .../include/ClassDumpRuntime/CDParseType.h | 1 + .../include/ClassDumpRuntime/CDPointerType.h | 1 + .../ClassDumpRuntime/CDPrimitiveType.h | 1 + .../ClassDumpRuntime/CDPropertyAttribute.h | 1 + .../ClassDumpRuntime/CDPropertyModel.h | 1 + .../CDProtocolModel+Conformance.h | 1 + .../ClassDumpRuntime/CDProtocolModel.h | 1 + .../include/ClassDumpRuntime/CDRecordType.h | 1 + .../ClassDumpRuntime/CDSemanticString.h | 1 + .../include/ClassDumpRuntime/CDTypeParser.h | 1 + .../include/ClassDumpRuntime/CDUtilities.h | 1 + .../ClassDumpRuntime/CDVariableModel.h | 1 + .../ClassDumpRuntime/ClassDumpRuntime.h | 1 + 105 files changed, 526 insertions(+), 227 deletions(-) delete mode 100644 ClassDump.xcodeproj/project.xcworkspace/contents.xcworkspacedata delete mode 100644 ClassDump/ClassDump.h delete mode 100644 ClassDump/Models/CDGenerationOptions.m rename {ClassDump.xcodeproj => ClassDumpRuntime.xcodeproj}/project.pbxproj (75%) create mode 100644 ClassDumpRuntime.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename {ClassDump.xcodeproj => ClassDumpRuntime.xcodeproj}/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist (100%) rename ClassDump.xcodeproj/xcshareddata/xcschemes/ClassDump.xcscheme => ClassDumpRuntime.xcodeproj/xcshareddata/xcschemes/ClassDumpRuntime.xcscheme (73%) rename ClassDump.xcodeproj/xcshareddata/xcschemes/ClassDumpTests.xcscheme => ClassDumpRuntime.xcodeproj/xcshareddata/xcschemes/ClassDumpRuntimeTests.xcscheme (74%) create mode 100644 ClassDumpRuntime/ClassDumpRuntime.h rename ClassDump/ClassDump.xctestplan => ClassDumpRuntime/ClassDumpRuntime.xctestplan (100%) rename {ClassDump => ClassDumpRuntime}/Models/CDGenerationOptions.h (95%) create mode 100644 ClassDumpRuntime/Models/CDGenerationOptions.m rename {ClassDump => ClassDumpRuntime}/Models/CDSemanticString.h (99%) rename {ClassDump => ClassDumpRuntime}/Models/CDSemanticString.m (99%) rename {ClassDump => ClassDumpRuntime}/Models/CDVariableModel.h (85%) rename {ClassDump => ClassDumpRuntime}/Models/CDVariableModel.m (97%) rename {ClassDump => ClassDumpRuntime}/Models/NSArray+CDFiltering.h (94%) rename {ClassDump => ClassDumpRuntime}/Models/NSArray+CDFiltering.m (97%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDArrayType.h (87%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDArrayType.m (99%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDBitFieldType.h (85%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDBitFieldType.m (99%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDBlockType.h (88%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDBlockType.m (99%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDObjectType.h (89%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDObjectType.m (99%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDParseType.h (95%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDParseType.m (99%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDPointerType.h (87%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDPointerType.m (98%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDPrimitiveType.h (96%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDPrimitiveType.m (99%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDRecordType.h (90%) rename {ClassDump => ClassDumpRuntime}/Models/ParseTypes/CDRecordType.m (99%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDClassModel.h (91%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDClassModel.m (99%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDIvarModel.h (91%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDIvarModel.m (98%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDMethodModel.h (96%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDMethodModel.m (99%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDPropertyAttribute.h (97%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDPropertyAttribute.m (98%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDPropertyModel.h (93%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDPropertyModel.m (99%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDProtocolModel+Conformance.h (95%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDProtocolModel+Conformance.m (99%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDProtocolModel.h (94%) rename {ClassDump => ClassDumpRuntime}/Models/Reflections/CDProtocolModel.m (99%) rename {ClassDump => ClassDumpRuntime}/Services/CDTypeParser.h (94%) rename {ClassDump => ClassDumpRuntime}/Services/CDTypeParser.m (99%) rename {ClassDump => ClassDumpRuntime}/Services/CDUtilities.h (96%) rename {ClassDump => ClassDumpRuntime}/Services/CDUtilities.m (99%) create mode 100644 ClassDumpRuntimeSwift/CDGenerationOptions.swift create mode 100644 ClassDumpRuntimeSwift/ClassDumpRuntimeSwift.h rename {ClassDumpTests => ClassDumpRuntimeTests}/CDObjCTests.m (99%) rename {ClassDumpTests => ClassDumpRuntimeTests}/CDParseAdvancedTests.m (99%) rename {ClassDumpTests => ClassDumpRuntimeTests}/CDParseCppTests.mm (85%) rename {ClassDumpTests => ClassDumpRuntimeTests}/CDParsePrimitiveTests.m (98%) rename {ClassDumpTests => ClassDumpRuntimeTests}/CDProtocolTest.m (98%) rename {ClassDumpTests => ClassDumpRuntimeTests}/Info.plist (100%) delete mode 120000 Sources/ClassDumpRuntime/ClassDump delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDArrayType.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDBitFieldType.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDBlockType.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDClassModel.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDGenerationOptions.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDIvarModel.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDMethodModel.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDObjectType.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDParseType.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDPointerType.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDPrimitiveType.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDPropertyAttribute.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDPropertyModel.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDProtocolModel+Conformance.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDProtocolModel.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDRecordType.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDSemanticString.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDTypeParser.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDUtilities.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/CDVariableModel.h delete mode 120000 Sources/ClassDumpRuntime/include/ClassDump/ClassDump.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDArrayType.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDBitFieldType.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDBlockType.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDClassModel.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDGenerationOptions.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDIvarModel.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDMethodModel.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDObjectType.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDParseType.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPointerType.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPrimitiveType.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPropertyAttribute.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPropertyModel.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDProtocolModel+Conformance.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDProtocolModel.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDRecordType.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDSemanticString.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDTypeParser.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDUtilities.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDVariableModel.h create mode 120000 Sources/ClassDumpRuntime/include/ClassDumpRuntime/ClassDumpRuntime.h diff --git a/ClassDump.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ClassDump.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index e4542ea..0000000 --- a/ClassDump.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/ClassDump/ClassDump.h b/ClassDump/ClassDump.h deleted file mode 100644 index 57850a1..0000000 --- a/ClassDump/ClassDump.h +++ /dev/null @@ -1,37 +0,0 @@ -// -// ClassDump.h -// ClassDump -// -// Created by Leptos on 3/24/19. -// Copyright © 2019 Leptos. All rights reserved. -// - -// to support building as both an Xcode framework and a Swift Package, -// all headers that are marked as "public" for the Xcode framework -// should have a symlink in `Sources/ClassDumpRuntime/include/ClassDump`; -// all those files should then be imported below. -// -// you can generate these imports using a shell script such as -// `ls ClassDump/*.h | while read HEADER; do printf "#import <${HEADER}>\n"; done` -// (run from `Sources/ClassDumpRuntime/include`) - -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import -#import diff --git a/ClassDump/Models/CDGenerationOptions.m b/ClassDump/Models/CDGenerationOptions.m deleted file mode 100644 index 5b3f967..0000000 --- a/ClassDump/Models/CDGenerationOptions.m +++ /dev/null @@ -1,13 +0,0 @@ -// -// CDGenerationOptions.m -// ClassDump -// -// Created by Leptos on 2/25/24. -// Copyright © 2024 Leptos. All rights reserved. -// - -#import "CDGenerationOptions.h" - -@implementation CDGenerationOptions - -@end diff --git a/ClassDump.xcodeproj/project.pbxproj b/ClassDumpRuntime.xcodeproj/project.pbxproj similarity index 75% rename from ClassDump.xcodeproj/project.pbxproj rename to ClassDumpRuntime.xcodeproj/project.pbxproj index 2de71a4..4c52318 100644 --- a/ClassDump.xcodeproj/project.pbxproj +++ b/ClassDumpRuntime.xcodeproj/project.pbxproj @@ -7,6 +7,10 @@ objects = { /* Begin PBXBuildFile section */ + E9905C4B2C134B040066DFA2 /* ClassDumpRuntimeSwift.h in Headers */ = {isa = PBXBuildFile; fileRef = E9905C4A2C134B040066DFA2 /* ClassDumpRuntimeSwift.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E9905C502C134B2D0066DFA2 /* CDGenerationOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = E9905C4F2C134B2D0066DFA2 /* CDGenerationOptions.swift */; }; + E9905C512C134B7D0066DFA2 /* ClassDumpRuntime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2A00DC23ADD19D00B52F1D /* ClassDumpRuntime.framework */; }; + E9905C522C134B7D0066DFA2 /* ClassDumpRuntime.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FA2A00DC23ADD19D00B52F1D /* ClassDumpRuntime.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; FA06EA29296934A5008E133B /* CDPropertyAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = FA06EA28296934A5008E133B /* CDPropertyAttribute.m */; }; FA2A00FE23ADD2EA00B52F1D /* CDUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = FA2A00EE23ADD2EA00B52F1D /* CDUtilities.m */; }; FA2A00FF23ADD2EA00B52F1D /* CDTypeParser.m in Sources */ = {isa = PBXBuildFile; fileRef = FA2A00F123ADD2EA00B52F1D /* CDTypeParser.m */; }; @@ -16,7 +20,7 @@ FA2A010323ADD2EA00B52F1D /* CDMethodModel.m in Sources */ = {isa = PBXBuildFile; fileRef = FA2A00FA23ADD2EA00B52F1D /* CDMethodModel.m */; }; FA2A010423ADD2EA00B52F1D /* CDClassModel.m in Sources */ = {isa = PBXBuildFile; fileRef = FA2A00FC23ADD2EA00B52F1D /* CDClassModel.m */; }; FA2A011C23AEB15700B52F1D /* CDParsePrimitiveTests.m in Sources */ = {isa = PBXBuildFile; fileRef = FA2A011B23AEB15700B52F1D /* CDParsePrimitiveTests.m */; }; - FA2A011E23AEB15700B52F1D /* ClassDump.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2A00DC23ADD19D00B52F1D /* ClassDump.framework */; }; + FA2A011E23AEB15700B52F1D /* ClassDumpRuntime.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2A00DC23ADD19D00B52F1D /* ClassDumpRuntime.framework */; }; FA53C6A42B8DA8C700FC1A15 /* NSArray+CDFiltering.m in Sources */ = {isa = PBXBuildFile; fileRef = FA53C6A32B8DA8C700FC1A15 /* NSArray+CDFiltering.m */; }; FA53C6A62B8DA8E200FC1A15 /* NSArray+CDFiltering.h in Sources */ = {isa = PBXBuildFile; fileRef = FA53C6A52B8DA8E200FC1A15 /* NSArray+CDFiltering.h */; }; FA53C6A92B8DA96E00FC1A15 /* NSArray+CDFiltering.h in Headers */ = {isa = PBXBuildFile; fileRef = FA53C6A52B8DA8E200FC1A15 /* NSArray+CDFiltering.h */; }; @@ -29,7 +33,7 @@ FAAA8C482B8BCCE900BD85B4 /* CDGenerationOptions.h in Headers */ = {isa = PBXBuildFile; fileRef = FAAA8C462B8BCCE900BD85B4 /* CDGenerationOptions.h */; settings = {ATTRIBUTES = (Public, ); }; }; FAAA8C492B8BCCE900BD85B4 /* CDGenerationOptions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAAA8C472B8BCCE900BD85B4 /* CDGenerationOptions.m */; }; FAE3C1102B81E11000242A99 /* CDVariableModel.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF031F22942FC3B00B6C424 /* CDVariableModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FAE3C1112B81E11A00242A99 /* ClassDump.h in Headers */ = {isa = PBXBuildFile; fileRef = FA2A00EB23ADD21200B52F1D /* ClassDump.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FAE3C1112B81E11A00242A99 /* ClassDumpRuntime.h in Headers */ = {isa = PBXBuildFile; fileRef = FA2A00EB23ADD21200B52F1D /* ClassDumpRuntime.h */; settings = {ATTRIBUTES = (Public, ); }; }; FAE3C1182B81E1A000242A99 /* CDPrimitiveType.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF031E32942F6C400B6C424 /* CDPrimitiveType.h */; settings = {ATTRIBUTES = (Public, ); }; }; FAE3C1192B81E1A000242A99 /* CDArrayType.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF031F52942FF2A00B6C424 /* CDArrayType.h */; settings = {ATTRIBUTES = (Public, ); }; }; FAE3C11A2B81E1A000242A99 /* CDProtocolModel.h in Headers */ = {isa = PBXBuildFile; fileRef = FA2A00FB23ADD2EA00B52F1D /* CDProtocolModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -47,7 +51,7 @@ FAE3C1262B81E1A000242A99 /* CDPropertyAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = FA06EA27296934A5008E133B /* CDPropertyAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; FAE3C1572B81E5AC00242A99 /* CDTypeParser.h in Headers */ = {isa = PBXBuildFile; fileRef = FA2A00EF23ADD2EA00B52F1D /* CDTypeParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; FAE3C1592B81E5B300242A99 /* CDUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = FA2A00F023ADD2EA00B52F1D /* CDUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FAE3C1632B81E70D00242A99 /* ClassDump.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FA2A00DC23ADD19D00B52F1D /* ClassDump.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + FAE3C1632B81E70D00242A99 /* ClassDumpRuntime.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FA2A00DC23ADD19D00B52F1D /* ClassDumpRuntime.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; FAE71A7523DA0AB20079321A /* CDObjCTests.m in Sources */ = {isa = PBXBuildFile; fileRef = FAE71A7423DA0AB20079321A /* CDObjCTests.m */; }; FAF031E22942E4FF00B6C424 /* CDParseType.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF031E12942E4FF00B6C424 /* CDParseType.m */; }; FAF031E52942F6C400B6C424 /* CDPrimitiveType.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF031E42942F6C400B6C424 /* CDPrimitiveType.m */; }; @@ -61,6 +65,13 @@ /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ + E9905C532C134B7D0066DFA2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = FA2A00D423ADD19D00B52F1D /* Project object */; + proxyType = 1; + remoteGlobalIDString = FA2A00DB23ADD19D00B52F1D; + remoteInfo = ClassDump; + }; FA2A011F23AEB15700B52F1D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = FA2A00D423ADD19D00B52F1D /* Project object */; @@ -71,13 +82,24 @@ /* End PBXContainerItemProxy section */ /* Begin PBXCopyFilesBuildPhase section */ + E9905C552C134B7D0066DFA2 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + E9905C522C134B7D0066DFA2 /* ClassDumpRuntime.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; FAE3C1662B81E70D00242A99 /* Embed Frameworks */ = { isa = PBXCopyFilesBuildPhase; buildActionMask = 2147483647; dstPath = ""; dstSubfolderSpec = 10; files = ( - FAE3C1632B81E70D00242A99 /* ClassDump.framework in Embed Frameworks */, + FAE3C1632B81E70D00242A99 /* ClassDumpRuntime.framework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -85,10 +107,13 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + E9905C482C134B040066DFA2 /* ClassDumpRuntimeSwift.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ClassDumpRuntimeSwift.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + E9905C4A2C134B040066DFA2 /* ClassDumpRuntimeSwift.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ClassDumpRuntimeSwift.h; sourceTree = ""; }; + E9905C4F2C134B2D0066DFA2 /* CDGenerationOptions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CDGenerationOptions.swift; sourceTree = ""; }; FA06EA27296934A5008E133B /* CDPropertyAttribute.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = CDPropertyAttribute.h; sourceTree = ""; }; FA06EA28296934A5008E133B /* CDPropertyAttribute.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CDPropertyAttribute.m; sourceTree = ""; }; - FA2A00DC23ADD19D00B52F1D /* ClassDump.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ClassDump.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FA2A00EB23ADD21200B52F1D /* ClassDump.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClassDump.h; sourceTree = ""; }; + FA2A00DC23ADD19D00B52F1D /* ClassDumpRuntime.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ClassDumpRuntime.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FA2A00EB23ADD21200B52F1D /* ClassDumpRuntime.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ClassDumpRuntime.h; sourceTree = ""; }; FA2A00EE23ADD2EA00B52F1D /* CDUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDUtilities.m; sourceTree = ""; }; FA2A00EF23ADD2EA00B52F1D /* CDTypeParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDTypeParser.h; sourceTree = ""; }; FA2A00F023ADD2EA00B52F1D /* CDUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDUtilities.h; sourceTree = ""; }; @@ -103,9 +128,9 @@ FA2A00FA23ADD2EA00B52F1D /* CDMethodModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDMethodModel.m; sourceTree = ""; }; FA2A00FB23ADD2EA00B52F1D /* CDProtocolModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CDProtocolModel.h; sourceTree = ""; }; FA2A00FC23ADD2EA00B52F1D /* CDClassModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CDClassModel.m; sourceTree = ""; }; - FA2A011923AEB15700B52F1D /* ClassDumpTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ClassDumpTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + FA2A011923AEB15700B52F1D /* ClassDumpRuntimeTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ClassDumpRuntimeTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; FA2A011B23AEB15700B52F1D /* CDParsePrimitiveTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = CDParsePrimitiveTests.m; sourceTree = ""; }; - FA2A012423AEB98400B52F1D /* ClassDump.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = ClassDump.xctestplan; sourceTree = ""; }; + FA2A012423AEB98400B52F1D /* ClassDumpRuntime.xctestplan */ = {isa = PBXFileReference; lastKnownFileType = text; path = ClassDumpRuntime.xctestplan; sourceTree = ""; }; FA53C6A32B8DA8C700FC1A15 /* NSArray+CDFiltering.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSArray+CDFiltering.m"; sourceTree = ""; }; FA53C6A52B8DA8E200FC1A15 /* NSArray+CDFiltering.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSArray+CDFiltering.h"; sourceTree = ""; }; FA53C6C52B9533A300FC1A15 /* CDProtocolModel+Conformance.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "CDProtocolModel+Conformance.h"; sourceTree = ""; }; @@ -139,6 +164,14 @@ /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + E9905C452C134B040066DFA2 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E9905C512C134B7D0066DFA2 /* ClassDumpRuntime.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; FA2A00D923ADD19D00B52F1D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -150,13 +183,22 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - FA2A011E23AEB15700B52F1D /* ClassDump.framework in Frameworks */, + FA2A011E23AEB15700B52F1D /* ClassDumpRuntime.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + E9905C492C134B040066DFA2 /* ClassDumpRuntimeSwift */ = { + isa = PBXGroup; + children = ( + E9905C4A2C134B040066DFA2 /* ClassDumpRuntimeSwift.h */, + E9905C4F2C134B2D0066DFA2 /* CDGenerationOptions.swift */, + ); + path = ClassDumpRuntimeSwift; + sourceTree = ""; + }; FA06EB0D296DDB7A008E133B /* Reflections */ = { isa = PBXGroup; children = ( @@ -181,8 +223,9 @@ FA2A00D323ADD19D00B52F1D = { isa = PBXGroup; children = ( - FA2A00DE23ADD19D00B52F1D /* ClassDump */, - FA2A011A23AEB15700B52F1D /* ClassDumpTests */, + FA2A00DE23ADD19D00B52F1D /* ClassDumpRuntime */, + FA2A011A23AEB15700B52F1D /* ClassDumpRuntimeTests */, + E9905C492C134B040066DFA2 /* ClassDumpRuntimeSwift */, FA2A00DD23ADD19D00B52F1D /* Products */, FAE3C1122B81E17200242A99 /* Frameworks */, ); @@ -191,21 +234,22 @@ FA2A00DD23ADD19D00B52F1D /* Products */ = { isa = PBXGroup; children = ( - FA2A00DC23ADD19D00B52F1D /* ClassDump.framework */, - FA2A011923AEB15700B52F1D /* ClassDumpTests.xctest */, + FA2A00DC23ADD19D00B52F1D /* ClassDumpRuntime.framework */, + FA2A011923AEB15700B52F1D /* ClassDumpRuntimeTests.xctest */, + E9905C482C134B040066DFA2 /* ClassDumpRuntimeSwift.framework */, ); name = Products; sourceTree = ""; }; - FA2A00DE23ADD19D00B52F1D /* ClassDump */ = { + FA2A00DE23ADD19D00B52F1D /* ClassDumpRuntime */ = { isa = PBXGroup; children = ( - FA2A012423AEB98400B52F1D /* ClassDump.xctestplan */, - FA2A00EB23ADD21200B52F1D /* ClassDump.h */, + FA2A012423AEB98400B52F1D /* ClassDumpRuntime.xctestplan */, + FA2A00EB23ADD21200B52F1D /* ClassDumpRuntime.h */, FA2A00ED23ADD2EA00B52F1D /* Services */, FA2A00F223ADD2EA00B52F1D /* Models */, ); - path = ClassDump; + path = ClassDumpRuntime; sourceTree = ""; }; FA2A00ED23ADD2EA00B52F1D /* Services */ = { @@ -236,7 +280,7 @@ path = Models; sourceTree = ""; }; - FA2A011A23AEB15700B52F1D /* ClassDumpTests */ = { + FA2A011A23AEB15700B52F1D /* ClassDumpRuntimeTests */ = { isa = PBXGroup; children = ( FA2A011B23AEB15700B52F1D /* CDParsePrimitiveTests.m */, @@ -245,7 +289,7 @@ FAE71A7423DA0AB20079321A /* CDObjCTests.m */, FA53C6C92B959A8100FC1A15 /* CDProtocolTest.m */, ); - path = ClassDumpTests; + path = ClassDumpRuntimeTests; sourceTree = ""; }; FAE3C1122B81E17200242A99 /* Frameworks */ = { @@ -281,6 +325,14 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + E9905C432C134B040066DFA2 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + E9905C4B2C134B040066DFA2 /* ClassDumpRuntimeSwift.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; FAE3C10F2B81E10700242A99 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -298,7 +350,7 @@ FAE3C1262B81E1A000242A99 /* CDPropertyAttribute.h in Headers */, FAE3C1222B81E1A000242A99 /* CDObjectType.h in Headers */, FAE3C1592B81E5B300242A99 /* CDUtilities.h in Headers */, - FAE3C1112B81E11A00242A99 /* ClassDump.h in Headers */, + FAE3C1112B81E11A00242A99 /* ClassDumpRuntime.h in Headers */, FA53C6C72B9533A400FC1A15 /* CDProtocolModel+Conformance.h in Headers */, FAE3C1232B81E1A000242A99 /* CDIvarModel.h in Headers */, FAE3C1192B81E1A000242A99 /* CDArrayType.h in Headers */, @@ -313,9 +365,29 @@ /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - FA2A00DB23ADD19D00B52F1D /* ClassDump */ = { + E9905C472C134B040066DFA2 /* ClassDumpRuntimeSwift */ = { + isa = PBXNativeTarget; + buildConfigurationList = E9905C4E2C134B040066DFA2 /* Build configuration list for PBXNativeTarget "ClassDumpRuntimeSwift" */; + buildPhases = ( + E9905C432C134B040066DFA2 /* Headers */, + E9905C442C134B040066DFA2 /* Sources */, + E9905C452C134B040066DFA2 /* Frameworks */, + E9905C462C134B040066DFA2 /* Resources */, + E9905C552C134B7D0066DFA2 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + E9905C542C134B7D0066DFA2 /* PBXTargetDependency */, + ); + name = ClassDumpRuntimeSwift; + productName = ClassDumpRuntimeSwift; + productReference = E9905C482C134B040066DFA2 /* ClassDumpRuntimeSwift.framework */; + productType = "com.apple.product-type.framework"; + }; + FA2A00DB23ADD19D00B52F1D /* ClassDumpRuntime */ = { isa = PBXNativeTarget; - buildConfigurationList = FA2A00E523ADD19D00B52F1D /* Build configuration list for PBXNativeTarget "ClassDump" */; + buildConfigurationList = FA2A00E523ADD19D00B52F1D /* Build configuration list for PBXNativeTarget "ClassDumpRuntime" */; buildPhases = ( FAE3C10F2B81E10700242A99 /* Headers */, FA2A00D823ADD19D00B52F1D /* Sources */, @@ -325,14 +397,14 @@ ); dependencies = ( ); - name = ClassDump; + name = ClassDumpRuntime; productName = ClassDump; - productReference = FA2A00DC23ADD19D00B52F1D /* ClassDump.framework */; + productReference = FA2A00DC23ADD19D00B52F1D /* ClassDumpRuntime.framework */; productType = "com.apple.product-type.framework"; }; - FA2A011823AEB15700B52F1D /* ClassDumpTests */ = { + FA2A011823AEB15700B52F1D /* ClassDumpRuntimeTests */ = { isa = PBXNativeTarget; - buildConfigurationList = FA2A012323AEB15700B52F1D /* Build configuration list for PBXNativeTarget "ClassDumpTests" */; + buildConfigurationList = FA2A012323AEB15700B52F1D /* Build configuration list for PBXNativeTarget "ClassDumpRuntimeTests" */; buildPhases = ( FA2A011523AEB15700B52F1D /* Sources */, FA2A011623AEB15700B52F1D /* Frameworks */, @@ -344,9 +416,9 @@ dependencies = ( FA2A012023AEB15700B52F1D /* PBXTargetDependency */, ); - name = ClassDumpTests; + name = ClassDumpRuntimeTests; productName = ClassDumpTests; - productReference = FA2A011923AEB15700B52F1D /* ClassDumpTests.xctest */; + productReference = FA2A011923AEB15700B52F1D /* ClassDumpRuntimeTests.xctest */; productType = "com.apple.product-type.bundle.unit-test"; }; /* End PBXNativeTarget section */ @@ -359,6 +431,10 @@ LastUpgradeCheck = 1530; ORGANIZATIONNAME = Leptos; TargetAttributes = { + E9905C472C134B040066DFA2 = { + CreatedOnToolsVersion = 15.4; + LastSwiftMigration = 1540; + }; FA2A00DB23ADD19D00B52F1D = { CreatedOnToolsVersion = 11.3; }; @@ -367,7 +443,7 @@ }; }; }; - buildConfigurationList = FA2A00D723ADD19D00B52F1D /* Build configuration list for PBXProject "ClassDump" */; + buildConfigurationList = FA2A00D723ADD19D00B52F1D /* Build configuration list for PBXProject "ClassDumpRuntime" */; compatibilityVersion = "Xcode 9.3"; developmentRegion = en; hasScannedForEncodings = 0; @@ -380,13 +456,21 @@ projectDirPath = ""; projectRoot = ""; targets = ( - FA2A00DB23ADD19D00B52F1D /* ClassDump */, - FA2A011823AEB15700B52F1D /* ClassDumpTests */, + FA2A00DB23ADD19D00B52F1D /* ClassDumpRuntime */, + FA2A011823AEB15700B52F1D /* ClassDumpRuntimeTests */, + E9905C472C134B040066DFA2 /* ClassDumpRuntimeSwift */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + E9905C462C134B040066DFA2 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; FA2A011723AEB15700B52F1D /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -397,6 +481,14 @@ /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ + E9905C442C134B040066DFA2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E9905C502C134B2D0066DFA2 /* CDGenerationOptions.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; FA2A00D823ADD19D00B52F1D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -441,14 +533,115 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ + E9905C542C134B7D0066DFA2 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = FA2A00DB23ADD19D00B52F1D /* ClassDumpRuntime */; + targetProxy = E9905C532C134B7D0066DFA2 /* PBXContainerItemProxy */; + }; FA2A012023AEB15700B52F1D /* PBXTargetDependency */ = { isa = PBXTargetDependency; - target = FA2A00DB23ADD19D00B52F1D /* ClassDump */; + target = FA2A00DB23ADD19D00B52F1D /* ClassDumpRuntime */; targetProxy = FA2A011F23AEB15700B52F1D /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + E9905C4C2C134B040066DFA2 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + BUILD_LIBRARY_FOR_DISTRIBUTION = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GCC_DYNAMIC_NO_PIC = NO; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Leptos. All rights reserved."; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 14.5; + MARKETING_VERSION = 1.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20"; + PRODUCT_BUNDLE_IDENTIFIER = null.leptos.ClassDumpRuntimeSwift; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_INSTALL_OBJC_HEADER = NO; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + E9905C4D2C134B040066DFA2 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; + BUILD_LIBRARY_FOR_DISTRIBUTION = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CODE_SIGN_STYLE = Automatic; + COMBINE_HIDPI_IMAGES = YES; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = YES; + GCC_C_LANGUAGE_STANDARD = gnu17; + GENERATE_INFOPLIST_FILE = YES; + INFOPLIST_KEY_NSHumanReadableCopyright = "Copyright © 2024 Leptos. All rights reserved."; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/../Frameworks", + "@loader_path/Frameworks", + ); + LOCALIZATION_PREFERS_STRING_CATALOGS = YES; + MACOSX_DEPLOYMENT_TARGET = 14.5; + MARKETING_VERSION = 1.0; + MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; + MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu17 gnu++20"; + PRODUCT_BUNDLE_IDENTIFIER = null.leptos.ClassDumpRuntimeSwift; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_COMPILATION_MODE = wholemodule; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_INSTALL_OBJC_HEADER = NO; + SWIFT_VERSION = 5.0; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; FA2A00E323ADD19D00B52F1D /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -602,7 +795,7 @@ MARKETING_VERSION = 1.0; MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++17"; - PRODUCT_BUNDLE_IDENTIFIER = null.leptos.ClassDump; + PRODUCT_BUNDLE_IDENTIFIER = null.leptos.ClassDumpRuntime; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = auto; SKIP_INSTALL = YES; @@ -640,7 +833,7 @@ MARKETING_VERSION = 1.0; MODULE_VERIFIER_SUPPORTED_LANGUAGES = "objective-c objective-c++"; MODULE_VERIFIER_SUPPORTED_LANGUAGE_STANDARDS = "gnu11 gnu++17"; - PRODUCT_BUNDLE_IDENTIFIER = null.leptos.ClassDump; + PRODUCT_BUNDLE_IDENTIFIER = null.leptos.ClassDumpRuntime; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = auto; SKIP_INSTALL = YES; @@ -657,13 +850,13 @@ buildSettings = { ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = "-"; - INFOPLIST_FILE = ClassDumpTests/Info.plist; + INFOPLIST_FILE = ClassDumpRuntimeTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = null.leptos.ClassDumpTests; + PRODUCT_BUNDLE_IDENTIFIER = null.leptos.ClassDumpRuntimeTests; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator"; SUPPORTS_MACCATALYST = YES; @@ -677,13 +870,13 @@ buildSettings = { ALLOW_TARGET_PLATFORM_SPECIALIZATION = YES; CODE_SIGN_IDENTITY = "-"; - INFOPLIST_FILE = ClassDumpTests/Info.plist; + INFOPLIST_FILE = ClassDumpRuntimeTests/Info.plist; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - PRODUCT_BUNDLE_IDENTIFIER = null.leptos.ClassDumpTests; + PRODUCT_BUNDLE_IDENTIFIER = null.leptos.ClassDumpRuntimeTests; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator xros xrsimulator"; SUPPORTS_MACCATALYST = YES; @@ -695,7 +888,16 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - FA2A00D723ADD19D00B52F1D /* Build configuration list for PBXProject "ClassDump" */ = { + E9905C4E2C134B040066DFA2 /* Build configuration list for PBXNativeTarget "ClassDumpRuntimeSwift" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + E9905C4C2C134B040066DFA2 /* Debug */, + E9905C4D2C134B040066DFA2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + FA2A00D723ADD19D00B52F1D /* Build configuration list for PBXProject "ClassDumpRuntime" */ = { isa = XCConfigurationList; buildConfigurations = ( FA2A00E323ADD19D00B52F1D /* Debug */, @@ -704,7 +906,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - FA2A00E523ADD19D00B52F1D /* Build configuration list for PBXNativeTarget "ClassDump" */ = { + FA2A00E523ADD19D00B52F1D /* Build configuration list for PBXNativeTarget "ClassDumpRuntime" */ = { isa = XCConfigurationList; buildConfigurations = ( FA2A00E623ADD19D00B52F1D /* Debug */, @@ -713,7 +915,7 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - FA2A012323AEB15700B52F1D /* Build configuration list for PBXNativeTarget "ClassDumpTests" */ = { + FA2A012323AEB15700B52F1D /* Build configuration list for PBXNativeTarget "ClassDumpRuntimeTests" */ = { isa = XCConfigurationList; buildConfigurations = ( FA2A012123AEB15700B52F1D /* Debug */, diff --git a/ClassDumpRuntime.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/ClassDumpRuntime.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..9f0809f --- /dev/null +++ b/ClassDumpRuntime.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/ClassDump.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/ClassDumpRuntime.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist similarity index 100% rename from ClassDump.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist rename to ClassDumpRuntime.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/ClassDump.xcodeproj/xcshareddata/xcschemes/ClassDump.xcscheme b/ClassDumpRuntime.xcodeproj/xcshareddata/xcschemes/ClassDumpRuntime.xcscheme similarity index 73% rename from ClassDump.xcodeproj/xcshareddata/xcschemes/ClassDump.xcscheme rename to ClassDumpRuntime.xcodeproj/xcshareddata/xcschemes/ClassDumpRuntime.xcscheme index dd48c11..b40c11a 100644 --- a/ClassDump.xcodeproj/xcshareddata/xcschemes/ClassDump.xcscheme +++ b/ClassDumpRuntime.xcodeproj/xcshareddata/xcschemes/ClassDumpRuntime.xcscheme @@ -1,10 +1,11 @@ + buildImplicitDependencies = "YES" + buildArchitectures = "Automatic"> + BuildableName = "ClassDumpRuntime.framework" + BlueprintName = "ClassDumpRuntime" + ReferencedContainer = "container:ClassDumpRuntime.xcodeproj"> @@ -26,13 +27,8 @@ buildConfiguration = "Debug" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" - shouldUseLaunchSchemeArgsEnv = "YES"> - - - - + shouldUseLaunchSchemeArgsEnv = "YES" + shouldAutocreateTestPlan = "YES"> + BuildableName = "ClassDumpRuntime.framework" + BlueprintName = "ClassDumpRuntime" + ReferencedContainer = "container:ClassDumpRuntime.xcodeproj"> + buildConfiguration = "Debug"> + LastUpgradeVersion = "1540" + version = "1.7"> + buildImplicitDependencies = "YES" + buildArchitectures = "Automatic"> + shouldAutocreateTestPlan = "YES"> + skipped = "NO"> + BuildableName = "ClassDumpRuntimeTests.xctest" + BlueprintName = "ClassDumpRuntimeTests" + ReferencedContainer = "container:ClassDumpRuntime.xcodeproj"> diff --git a/ClassDumpRuntime/ClassDumpRuntime.h b/ClassDumpRuntime/ClassDumpRuntime.h new file mode 100644 index 0000000..01e09f9 --- /dev/null +++ b/ClassDumpRuntime/ClassDumpRuntime.h @@ -0,0 +1,37 @@ +// +// ClassDumpRuntime.h +// ClassDumpRuntime +// +// Created by Leptos on 3/24/19. +// Copyright © 2019 Leptos. All rights reserved. +// + +// to support building as both an Xcode framework and a Swift Package, +// all headers that are marked as "public" for the Xcode framework +// should have a symlink in `Sources/ClassDumpRuntime/include/ClassDumpRuntime`; +// all those files should then be imported below. +// +// you can generate these imports using a shell script such as +// `ls ClassDumpRuntime/*.h | while read HEADER; do printf "#import <${HEADER}>\n"; done` +// (run from `Sources/ClassDumpRuntime/include`) + +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import +#import diff --git a/ClassDump/ClassDump.xctestplan b/ClassDumpRuntime/ClassDumpRuntime.xctestplan similarity index 100% rename from ClassDump/ClassDump.xctestplan rename to ClassDumpRuntime/ClassDumpRuntime.xctestplan diff --git a/ClassDump/Models/CDGenerationOptions.h b/ClassDumpRuntime/Models/CDGenerationOptions.h similarity index 95% rename from ClassDump/Models/CDGenerationOptions.h rename to ClassDumpRuntime/Models/CDGenerationOptions.h index 4dac781..071b422 100644 --- a/ClassDump/Models/CDGenerationOptions.h +++ b/ClassDumpRuntime/Models/CDGenerationOptions.h @@ -1,6 +1,6 @@ // // CDGenerationOptions.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 2/25/24. // Copyright © 2024 Leptos. All rights reserved. @@ -11,7 +11,8 @@ NS_HEADER_AUDIT_BEGIN(nullability) /// Options with which a header file may be generated with -@interface CDGenerationOptions : NSObject +NS_REFINED_FOR_SWIFT +@interface CDGenerationOptions : NSObject /// @c YES means hide properties and methods that are required by a protocol the type conforms to /// /// This property applies to both classes and protocols. diff --git a/ClassDumpRuntime/Models/CDGenerationOptions.m b/ClassDumpRuntime/Models/CDGenerationOptions.m new file mode 100644 index 0000000..7ac6d15 --- /dev/null +++ b/ClassDumpRuntime/Models/CDGenerationOptions.m @@ -0,0 +1,25 @@ +// +// CDGenerationOptions.m +// ClassDumpRuntime +// +// Created by Leptos on 2/25/24. +// Copyright © 2024 Leptos. All rights reserved. +// + +#import "CDGenerationOptions.h" + +@implementation CDGenerationOptions + +- (id)copyWithZone:(NSZone *)zone { + CDGenerationOptions *options = [CDGenerationOptions new]; + options.stripProtocolConformance = _stripProtocolConformance; + options.stripOverrides = _stripOverrides; + options.stripDuplicates = _stripDuplicates; + options.stripSynthesized = _stripSynthesized; + options.stripCtorMethod = _stripCtorMethod; + options.stripDtorMethod = _stripDtorMethod; + options.addSymbolImageComments = _addSymbolImageComments; + return options; +} + +@end diff --git a/ClassDump/Models/CDSemanticString.h b/ClassDumpRuntime/Models/CDSemanticString.h similarity index 99% rename from ClassDump/Models/CDSemanticString.h rename to ClassDumpRuntime/Models/CDSemanticString.h index 2744f5d..9abae6f 100644 --- a/ClassDump/Models/CDSemanticString.h +++ b/ClassDumpRuntime/Models/CDSemanticString.h @@ -1,6 +1,6 @@ // // CDSemanticString.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 1/1/23. // Copyright © 2023 Leptos. All rights reserved. diff --git a/ClassDump/Models/CDSemanticString.m b/ClassDumpRuntime/Models/CDSemanticString.m similarity index 99% rename from ClassDump/Models/CDSemanticString.m rename to ClassDumpRuntime/Models/CDSemanticString.m index c3c21d2..7a0b353 100644 --- a/ClassDump/Models/CDSemanticString.m +++ b/ClassDumpRuntime/Models/CDSemanticString.m @@ -1,6 +1,6 @@ // // CDSemanticString.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 1/1/23. // Copyright © 2023 Leptos. All rights reserved. diff --git a/ClassDump/Models/CDVariableModel.h b/ClassDumpRuntime/Models/CDVariableModel.h similarity index 85% rename from ClassDump/Models/CDVariableModel.h rename to ClassDumpRuntime/Models/CDVariableModel.h index 3293436..5cdb468 100644 --- a/ClassDump/Models/CDVariableModel.h +++ b/ClassDumpRuntime/Models/CDVariableModel.h @@ -1,6 +1,6 @@ // // CDVariableModel.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. @@ -8,7 +8,7 @@ #import -#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/CDVariableModel.m b/ClassDumpRuntime/Models/CDVariableModel.m similarity index 97% rename from ClassDump/Models/CDVariableModel.m rename to ClassDumpRuntime/Models/CDVariableModel.m index b2dd989..7662d87 100644 --- a/ClassDump/Models/CDVariableModel.m +++ b/ClassDumpRuntime/Models/CDVariableModel.m @@ -1,6 +1,6 @@ // // CDVariableModel.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. diff --git a/ClassDump/Models/NSArray+CDFiltering.h b/ClassDumpRuntime/Models/NSArray+CDFiltering.h similarity index 94% rename from ClassDump/Models/NSArray+CDFiltering.h rename to ClassDumpRuntime/Models/NSArray+CDFiltering.h index 9798fb8..2dbba02 100644 --- a/ClassDump/Models/NSArray+CDFiltering.h +++ b/ClassDumpRuntime/Models/NSArray+CDFiltering.h @@ -1,6 +1,6 @@ // // NSArray+CDFiltering.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 2/26/24. // Copyright © 2024 Leptos. All rights reserved. diff --git a/ClassDump/Models/NSArray+CDFiltering.m b/ClassDumpRuntime/Models/NSArray+CDFiltering.m similarity index 97% rename from ClassDump/Models/NSArray+CDFiltering.m rename to ClassDumpRuntime/Models/NSArray+CDFiltering.m index e8c9896..062ebb5 100644 --- a/ClassDump/Models/NSArray+CDFiltering.m +++ b/ClassDumpRuntime/Models/NSArray+CDFiltering.m @@ -1,6 +1,6 @@ // // NSArray+CDFiltering.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 2/26/24. // Copyright © 2024 Leptos. All rights reserved. diff --git a/ClassDump/Models/ParseTypes/CDArrayType.h b/ClassDumpRuntime/Models/ParseTypes/CDArrayType.h similarity index 87% rename from ClassDump/Models/ParseTypes/CDArrayType.h rename to ClassDumpRuntime/Models/ParseTypes/CDArrayType.h index 629b013..9abe59d 100644 --- a/ClassDump/Models/ParseTypes/CDArrayType.h +++ b/ClassDumpRuntime/Models/ParseTypes/CDArrayType.h @@ -1,12 +1,12 @@ // // CDArrayType.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. // -#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/ParseTypes/CDArrayType.m b/ClassDumpRuntime/Models/ParseTypes/CDArrayType.m similarity index 99% rename from ClassDump/Models/ParseTypes/CDArrayType.m rename to ClassDumpRuntime/Models/ParseTypes/CDArrayType.m index 815c36d..ee82820 100644 --- a/ClassDump/Models/ParseTypes/CDArrayType.m +++ b/ClassDumpRuntime/Models/ParseTypes/CDArrayType.m @@ -1,6 +1,6 @@ // // CDArrayType.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. diff --git a/ClassDump/Models/ParseTypes/CDBitFieldType.h b/ClassDumpRuntime/Models/ParseTypes/CDBitFieldType.h similarity index 85% rename from ClassDump/Models/ParseTypes/CDBitFieldType.h rename to ClassDumpRuntime/Models/ParseTypes/CDBitFieldType.h index ac3ec53..a4704e5 100644 --- a/ClassDump/Models/ParseTypes/CDBitFieldType.h +++ b/ClassDumpRuntime/Models/ParseTypes/CDBitFieldType.h @@ -1,12 +1,12 @@ // // CDBitFieldType.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. // -#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/ParseTypes/CDBitFieldType.m b/ClassDumpRuntime/Models/ParseTypes/CDBitFieldType.m similarity index 99% rename from ClassDump/Models/ParseTypes/CDBitFieldType.m rename to ClassDumpRuntime/Models/ParseTypes/CDBitFieldType.m index 516b6c5..1c7944c 100644 --- a/ClassDump/Models/ParseTypes/CDBitFieldType.m +++ b/ClassDumpRuntime/Models/ParseTypes/CDBitFieldType.m @@ -1,6 +1,6 @@ // // CDBitFieldType.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. diff --git a/ClassDump/Models/ParseTypes/CDBlockType.h b/ClassDumpRuntime/Models/ParseTypes/CDBlockType.h similarity index 88% rename from ClassDump/Models/ParseTypes/CDBlockType.h rename to ClassDumpRuntime/Models/ParseTypes/CDBlockType.h index 7667319..68a1fba 100644 --- a/ClassDump/Models/ParseTypes/CDBlockType.h +++ b/ClassDumpRuntime/Models/ParseTypes/CDBlockType.h @@ -1,12 +1,12 @@ // // CDBlockType.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/15/22. // Copyright © 2022 Leptos. All rights reserved. // -#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/ParseTypes/CDBlockType.m b/ClassDumpRuntime/Models/ParseTypes/CDBlockType.m similarity index 99% rename from ClassDump/Models/ParseTypes/CDBlockType.m rename to ClassDumpRuntime/Models/ParseTypes/CDBlockType.m index d8f6bee..ff2107d 100644 --- a/ClassDump/Models/ParseTypes/CDBlockType.m +++ b/ClassDumpRuntime/Models/ParseTypes/CDBlockType.m @@ -1,6 +1,6 @@ // // CDBlockType.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/15/22. // Copyright © 2022 Leptos. All rights reserved. diff --git a/ClassDump/Models/ParseTypes/CDObjectType.h b/ClassDumpRuntime/Models/ParseTypes/CDObjectType.h similarity index 89% rename from ClassDump/Models/ParseTypes/CDObjectType.h rename to ClassDumpRuntime/Models/ParseTypes/CDObjectType.h index a8308c2..a041d80 100644 --- a/ClassDump/Models/ParseTypes/CDObjectType.h +++ b/ClassDumpRuntime/Models/ParseTypes/CDObjectType.h @@ -1,12 +1,12 @@ // // CDObjectType.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. // -#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/ParseTypes/CDObjectType.m b/ClassDumpRuntime/Models/ParseTypes/CDObjectType.m similarity index 99% rename from ClassDump/Models/ParseTypes/CDObjectType.m rename to ClassDumpRuntime/Models/ParseTypes/CDObjectType.m index f886e2e..e9aa589 100644 --- a/ClassDump/Models/ParseTypes/CDObjectType.m +++ b/ClassDumpRuntime/Models/ParseTypes/CDObjectType.m @@ -1,6 +1,6 @@ // // CDObjectType.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. diff --git a/ClassDump/Models/ParseTypes/CDParseType.h b/ClassDumpRuntime/Models/ParseTypes/CDParseType.h similarity index 95% rename from ClassDump/Models/ParseTypes/CDParseType.h rename to ClassDumpRuntime/Models/ParseTypes/CDParseType.h index c7060fc..65a7b19 100644 --- a/ClassDump/Models/ParseTypes/CDParseType.h +++ b/ClassDumpRuntime/Models/ParseTypes/CDParseType.h @@ -1,13 +1,13 @@ // // CDParseType.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. // #import -#import +#import typedef NS_ENUM(NSUInteger, CDTypeModifier) { CDTypeModifierConst, diff --git a/ClassDump/Models/ParseTypes/CDParseType.m b/ClassDumpRuntime/Models/ParseTypes/CDParseType.m similarity index 99% rename from ClassDump/Models/ParseTypes/CDParseType.m rename to ClassDumpRuntime/Models/ParseTypes/CDParseType.m index 8a2c615..289d4e8 100644 --- a/ClassDump/Models/ParseTypes/CDParseType.m +++ b/ClassDumpRuntime/Models/ParseTypes/CDParseType.m @@ -1,6 +1,6 @@ // // CDParseType.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. diff --git a/ClassDump/Models/ParseTypes/CDPointerType.h b/ClassDumpRuntime/Models/ParseTypes/CDPointerType.h similarity index 87% rename from ClassDump/Models/ParseTypes/CDPointerType.h rename to ClassDumpRuntime/Models/ParseTypes/CDPointerType.h index bc5efca..cf9a3f9 100644 --- a/ClassDump/Models/ParseTypes/CDPointerType.h +++ b/ClassDumpRuntime/Models/ParseTypes/CDPointerType.h @@ -1,12 +1,12 @@ // // CDPointerType.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. // -#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/ParseTypes/CDPointerType.m b/ClassDumpRuntime/Models/ParseTypes/CDPointerType.m similarity index 98% rename from ClassDump/Models/ParseTypes/CDPointerType.m rename to ClassDumpRuntime/Models/ParseTypes/CDPointerType.m index b1116a4..b7a8260 100644 --- a/ClassDump/Models/ParseTypes/CDPointerType.m +++ b/ClassDumpRuntime/Models/ParseTypes/CDPointerType.m @@ -1,6 +1,6 @@ // // CDPointerType.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. diff --git a/ClassDump/Models/ParseTypes/CDPrimitiveType.h b/ClassDumpRuntime/Models/ParseTypes/CDPrimitiveType.h similarity index 96% rename from ClassDump/Models/ParseTypes/CDPrimitiveType.h rename to ClassDumpRuntime/Models/ParseTypes/CDPrimitiveType.h index c12fe26..0f1f93b 100644 --- a/ClassDump/Models/ParseTypes/CDPrimitiveType.h +++ b/ClassDumpRuntime/Models/ParseTypes/CDPrimitiveType.h @@ -1,12 +1,12 @@ // // CDPrimitiveType.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. // -#import +#import typedef NS_ENUM(NSUInteger, CDPrimitiveRawType) { CDPrimitiveRawTypeVoid, diff --git a/ClassDump/Models/ParseTypes/CDPrimitiveType.m b/ClassDumpRuntime/Models/ParseTypes/CDPrimitiveType.m similarity index 99% rename from ClassDump/Models/ParseTypes/CDPrimitiveType.m rename to ClassDumpRuntime/Models/ParseTypes/CDPrimitiveType.m index e8d11cf..3d58c2d 100644 --- a/ClassDump/Models/ParseTypes/CDPrimitiveType.m +++ b/ClassDumpRuntime/Models/ParseTypes/CDPrimitiveType.m @@ -1,6 +1,6 @@ // // CDPrimitiveType.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. diff --git a/ClassDump/Models/ParseTypes/CDRecordType.h b/ClassDumpRuntime/Models/ParseTypes/CDRecordType.h similarity index 90% rename from ClassDump/Models/ParseTypes/CDRecordType.h rename to ClassDumpRuntime/Models/ParseTypes/CDRecordType.h index e5c65fe..9e60b6e 100644 --- a/ClassDump/Models/ParseTypes/CDRecordType.h +++ b/ClassDumpRuntime/Models/ParseTypes/CDRecordType.h @@ -1,13 +1,13 @@ // // CDRecordType.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. // -#import -#import +#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/ParseTypes/CDRecordType.m b/ClassDumpRuntime/Models/ParseTypes/CDRecordType.m similarity index 99% rename from ClassDump/Models/ParseTypes/CDRecordType.m rename to ClassDumpRuntime/Models/ParseTypes/CDRecordType.m index f2678e2..7eab84b 100644 --- a/ClassDump/Models/ParseTypes/CDRecordType.m +++ b/ClassDumpRuntime/Models/ParseTypes/CDRecordType.m @@ -1,6 +1,6 @@ // // CDRecordType.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 12/8/22. // Copyright © 2022 Leptos. All rights reserved. diff --git a/ClassDump/Models/Reflections/CDClassModel.h b/ClassDumpRuntime/Models/Reflections/CDClassModel.h similarity index 91% rename from ClassDump/Models/Reflections/CDClassModel.h rename to ClassDumpRuntime/Models/Reflections/CDClassModel.h index b75ce1c..5e06c96 100644 --- a/ClassDump/Models/Reflections/CDClassModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDClassModel.h @@ -1,6 +1,6 @@ // // CDClassModel.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 4/7/19. // Copyright © 2019 Leptos. All rights reserved. @@ -8,11 +8,11 @@ #import -#import -#import -#import -#import -#import +#import +#import +#import +#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/Reflections/CDClassModel.m b/ClassDumpRuntime/Models/Reflections/CDClassModel.m similarity index 99% rename from ClassDump/Models/Reflections/CDClassModel.m rename to ClassDumpRuntime/Models/Reflections/CDClassModel.m index cce0966..6125d19 100644 --- a/ClassDump/Models/Reflections/CDClassModel.m +++ b/ClassDumpRuntime/Models/Reflections/CDClassModel.m @@ -1,6 +1,6 @@ // // CDClassModel.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 4/7/19. // Copyright © 2019 Leptos. All rights reserved. diff --git a/ClassDump/Models/Reflections/CDIvarModel.h b/ClassDumpRuntime/Models/Reflections/CDIvarModel.h similarity index 91% rename from ClassDump/Models/Reflections/CDIvarModel.h rename to ClassDumpRuntime/Models/Reflections/CDIvarModel.h index b856884..7bb97b2 100644 --- a/ClassDump/Models/Reflections/CDIvarModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDIvarModel.h @@ -1,6 +1,6 @@ // // CDIvarModel.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 4/8/19. // Copyright © 2019 Leptos. All rights reserved. @@ -9,7 +9,7 @@ #import #import -#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/Reflections/CDIvarModel.m b/ClassDumpRuntime/Models/Reflections/CDIvarModel.m similarity index 98% rename from ClassDump/Models/Reflections/CDIvarModel.m rename to ClassDumpRuntime/Models/Reflections/CDIvarModel.m index 1e446de..1df3c3a 100644 --- a/ClassDump/Models/Reflections/CDIvarModel.m +++ b/ClassDumpRuntime/Models/Reflections/CDIvarModel.m @@ -1,6 +1,6 @@ // // CDIvarModel.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 4/8/19. // Copyright © 2019 Leptos. All rights reserved. diff --git a/ClassDump/Models/Reflections/CDMethodModel.h b/ClassDumpRuntime/Models/Reflections/CDMethodModel.h similarity index 96% rename from ClassDump/Models/Reflections/CDMethodModel.h rename to ClassDumpRuntime/Models/Reflections/CDMethodModel.h index 6bb1321..b848482 100644 --- a/ClassDump/Models/Reflections/CDMethodModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDMethodModel.h @@ -1,6 +1,6 @@ // // CDMethodModel.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 4/7/19. // Copyright © 2019 Leptos. All rights reserved. @@ -9,7 +9,7 @@ #import #import -#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/Reflections/CDMethodModel.m b/ClassDumpRuntime/Models/Reflections/CDMethodModel.m similarity index 99% rename from ClassDump/Models/Reflections/CDMethodModel.m rename to ClassDumpRuntime/Models/Reflections/CDMethodModel.m index c76e175..ae428da 100644 --- a/ClassDump/Models/Reflections/CDMethodModel.m +++ b/ClassDumpRuntime/Models/Reflections/CDMethodModel.m @@ -1,6 +1,6 @@ // // CDMethodModel.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 4/7/19. // Copyright © 2019 Leptos. All rights reserved. diff --git a/ClassDump/Models/Reflections/CDPropertyAttribute.h b/ClassDumpRuntime/Models/Reflections/CDPropertyAttribute.h similarity index 97% rename from ClassDump/Models/Reflections/CDPropertyAttribute.h rename to ClassDumpRuntime/Models/Reflections/CDPropertyAttribute.h index 2277acb..2781133 100644 --- a/ClassDump/Models/Reflections/CDPropertyAttribute.h +++ b/ClassDumpRuntime/Models/Reflections/CDPropertyAttribute.h @@ -1,6 +1,6 @@ // // CDPropertyAttribute.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 1/6/23. // Copyright © 2023 Leptos. All rights reserved. diff --git a/ClassDump/Models/Reflections/CDPropertyAttribute.m b/ClassDumpRuntime/Models/Reflections/CDPropertyAttribute.m similarity index 98% rename from ClassDump/Models/Reflections/CDPropertyAttribute.m rename to ClassDumpRuntime/Models/Reflections/CDPropertyAttribute.m index 2a8b3ef..83e31bb 100644 --- a/ClassDump/Models/Reflections/CDPropertyAttribute.m +++ b/ClassDumpRuntime/Models/Reflections/CDPropertyAttribute.m @@ -1,6 +1,6 @@ // // CDPropertyAttribute.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 1/6/23. // Copyright © 2023 Leptos. All rights reserved. diff --git a/ClassDump/Models/Reflections/CDPropertyModel.h b/ClassDumpRuntime/Models/Reflections/CDPropertyModel.h similarity index 93% rename from ClassDump/Models/Reflections/CDPropertyModel.h rename to ClassDumpRuntime/Models/Reflections/CDPropertyModel.h index 2bd0282..88411da 100644 --- a/ClassDump/Models/Reflections/CDPropertyModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDPropertyModel.h @@ -1,6 +1,6 @@ // // CDPropertyModel.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 3/24/19. // Copyright © 2019 Leptos. All rights reserved. @@ -9,8 +9,8 @@ #import #import -#import -#import +#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/Reflections/CDPropertyModel.m b/ClassDumpRuntime/Models/Reflections/CDPropertyModel.m similarity index 99% rename from ClassDump/Models/Reflections/CDPropertyModel.m rename to ClassDumpRuntime/Models/Reflections/CDPropertyModel.m index bd06be0..49ed212 100644 --- a/ClassDump/Models/Reflections/CDPropertyModel.m +++ b/ClassDumpRuntime/Models/Reflections/CDPropertyModel.m @@ -1,6 +1,6 @@ // // CDPropertyModel.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 3/24/19. // Copyright © 2019 Leptos. All rights reserved. diff --git a/ClassDump/Models/Reflections/CDProtocolModel+Conformance.h b/ClassDumpRuntime/Models/Reflections/CDProtocolModel+Conformance.h similarity index 95% rename from ClassDump/Models/Reflections/CDProtocolModel+Conformance.h rename to ClassDumpRuntime/Models/Reflections/CDProtocolModel+Conformance.h index 31d8d6b..b7f4c0e 100644 --- a/ClassDump/Models/Reflections/CDProtocolModel+Conformance.h +++ b/ClassDumpRuntime/Models/Reflections/CDProtocolModel+Conformance.h @@ -1,12 +1,12 @@ // // CDProtocolModel+Conformance.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 3/3/24. // Copyright © 2024 Leptos. All rights reserved. // -#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/Reflections/CDProtocolModel+Conformance.m b/ClassDumpRuntime/Models/Reflections/CDProtocolModel+Conformance.m similarity index 99% rename from ClassDump/Models/Reflections/CDProtocolModel+Conformance.m rename to ClassDumpRuntime/Models/Reflections/CDProtocolModel+Conformance.m index 8ee3fd2..997c0e3 100644 --- a/ClassDump/Models/Reflections/CDProtocolModel+Conformance.m +++ b/ClassDumpRuntime/Models/Reflections/CDProtocolModel+Conformance.m @@ -1,6 +1,6 @@ // // CDProtocolModel+Conformance.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 3/3/24. // Copyright © 2024 Leptos. All rights reserved. diff --git a/ClassDump/Models/Reflections/CDProtocolModel.h b/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h similarity index 94% rename from ClassDump/Models/Reflections/CDProtocolModel.h rename to ClassDumpRuntime/Models/Reflections/CDProtocolModel.h index 756f348..4ee3974 100644 --- a/ClassDump/Models/Reflections/CDProtocolModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h @@ -1,6 +1,6 @@ // // CDProtocolModel.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 4/7/19. // Copyright © 2019 Leptos. All rights reserved. @@ -8,9 +8,9 @@ #import -#import -#import -#import +#import +#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Models/Reflections/CDProtocolModel.m b/ClassDumpRuntime/Models/Reflections/CDProtocolModel.m similarity index 99% rename from ClassDump/Models/Reflections/CDProtocolModel.m rename to ClassDumpRuntime/Models/Reflections/CDProtocolModel.m index 1cffa96..f6a9685 100644 --- a/ClassDump/Models/Reflections/CDProtocolModel.m +++ b/ClassDumpRuntime/Models/Reflections/CDProtocolModel.m @@ -1,6 +1,6 @@ // // CDProtocolModel.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 4/7/19. // Copyright © 2019 Leptos. All rights reserved. diff --git a/ClassDump/Services/CDTypeParser.h b/ClassDumpRuntime/Services/CDTypeParser.h similarity index 94% rename from ClassDump/Services/CDTypeParser.h rename to ClassDumpRuntime/Services/CDTypeParser.h index b9a3872..21ba809 100644 --- a/ClassDump/Services/CDTypeParser.h +++ b/ClassDumpRuntime/Services/CDTypeParser.h @@ -1,13 +1,13 @@ // // CDTypeParser.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 3/24/19. // Copyright © 2019 Leptos. All rights reserved. // #import -#import +#import NS_HEADER_AUDIT_BEGIN(nullability) diff --git a/ClassDump/Services/CDTypeParser.m b/ClassDumpRuntime/Services/CDTypeParser.m similarity index 99% rename from ClassDump/Services/CDTypeParser.m rename to ClassDumpRuntime/Services/CDTypeParser.m index 809e573..59d2e9a 100644 --- a/ClassDump/Services/CDTypeParser.m +++ b/ClassDumpRuntime/Services/CDTypeParser.m @@ -1,6 +1,6 @@ // // CDTypeParser.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 3/24/19. // Copyright © 2019 Leptos. All rights reserved. diff --git a/ClassDump/Services/CDUtilities.h b/ClassDumpRuntime/Services/CDUtilities.h similarity index 96% rename from ClassDump/Services/CDUtilities.h rename to ClassDumpRuntime/Services/CDUtilities.h index ec949fa..a02d409 100644 --- a/ClassDump/Services/CDUtilities.h +++ b/ClassDumpRuntime/Services/CDUtilities.h @@ -1,6 +1,6 @@ // // CDUtilities.h -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 5/10/19. // Copyright © 2019 Leptos. All rights reserved. diff --git a/ClassDump/Services/CDUtilities.m b/ClassDumpRuntime/Services/CDUtilities.m similarity index 99% rename from ClassDump/Services/CDUtilities.m rename to ClassDumpRuntime/Services/CDUtilities.m index 4da71b3..1d4c52c 100644 --- a/ClassDump/Services/CDUtilities.m +++ b/ClassDumpRuntime/Services/CDUtilities.m @@ -1,6 +1,6 @@ // // CDUtilities.m -// ClassDump +// ClassDumpRuntime // // Created by Leptos on 5/10/19. // Copyright © 2019 Leptos. All rights reserved. diff --git a/ClassDumpRuntimeSwift/CDGenerationOptions.swift b/ClassDumpRuntimeSwift/CDGenerationOptions.swift new file mode 100644 index 0000000..f7269a2 --- /dev/null +++ b/ClassDumpRuntimeSwift/CDGenerationOptions.swift @@ -0,0 +1,63 @@ +import Foundation +import ClassDumpRuntime + +public struct CDGenerationOptions { + public var stripProtocolConformance: Bool + public var stripOverrides: Bool + public var stripDuplicates: Bool + public var stripSynthesized: Bool + public var stripCtorMethod: Bool + public var stripDtorMethod: Bool + public var addSymbolImageComments: Bool + + public init(stripProtocolConformance: Bool = false, stripOverrides: Bool = false, stripDuplicates: Bool = false, stripSynthesized: Bool = false, stripCtorMethod: Bool = false, stripDtorMethod: Bool = false, addSymbolImageComments: Bool = false) { + self.stripProtocolConformance = stripProtocolConformance + self.stripOverrides = stripOverrides + self.stripDuplicates = stripDuplicates + self.stripSynthesized = stripSynthesized + self.stripCtorMethod = stripCtorMethod + self.stripDtorMethod = stripDtorMethod + self.addSymbolImageComments = addSymbolImageComments + } +} + +extension CDGenerationOptions: ReferenceConvertible { + public typealias ReferenceType = __CDGenerationOptions + + public func _bridgeToObjectiveC() -> __CDGenerationOptions { + let options = __CDGenerationOptions() + options.stripProtocolConformance = stripProtocolConformance + options.stripOverrides = stripOverrides + options.stripSynthesized = stripSynthesized + options.stripCtorMethod = stripCtorMethod + options.stripDtorMethod = stripDtorMethod + options.addSymbolImageComments = addSymbolImageComments + return options + } + + public static func _forceBridgeFromObjectiveC(_ source: __CDGenerationOptions, result: inout CDGenerationOptions?) { + result = CDGenerationOptions(stripProtocolConformance: source.stripProtocolConformance, stripOverrides: source.stripOverrides, stripDuplicates: source.stripDuplicates, stripSynthesized: source.stripSynthesized, stripCtorMethod: source.stripCtorMethod, stripDtorMethod: source.stripDtorMethod, addSymbolImageComments: source.addSymbolImageComments) + } + + public static func _conditionallyBridgeFromObjectiveC(_ source: __CDGenerationOptions, result: inout CDGenerationOptions?) -> Bool { + _forceBridgeFromObjectiveC(source, result: &result) + return true + } + + public static func _unconditionallyBridgeFromObjectiveC(_ source: __CDGenerationOptions?) -> CDGenerationOptions { + if let source = source { + var result: CDGenerationOptions? + _forceBridgeFromObjectiveC(source, result: &result) + return result! + } + return CDGenerationOptions() + } + + public var description: String { + "\(self)" + } + + public var debugDescription: String { + description + } +} diff --git a/ClassDumpRuntimeSwift/ClassDumpRuntimeSwift.h b/ClassDumpRuntimeSwift/ClassDumpRuntimeSwift.h new file mode 100644 index 0000000..10c3f30 --- /dev/null +++ b/ClassDumpRuntimeSwift/ClassDumpRuntimeSwift.h @@ -0,0 +1,19 @@ +// +// ClassDumpRuntimeSwift.h +// ClassDumpRuntimeSwift +// +// Created by JH on 2024/6/7. +// Copyright © 2024 Leptos. All rights reserved. +// + +#import + +//! Project version number for ClassDumpRuntimeSwift. +FOUNDATION_EXPORT double ClassDumpRuntimeSwiftVersionNumber; + +//! Project version string for ClassDumpRuntimeSwift. +FOUNDATION_EXPORT const unsigned char ClassDumpRuntimeSwiftVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/ClassDumpTests/CDObjCTests.m b/ClassDumpRuntimeTests/CDObjCTests.m similarity index 99% rename from ClassDumpTests/CDObjCTests.m rename to ClassDumpRuntimeTests/CDObjCTests.m index 938318e..ee15e13 100644 --- a/ClassDumpTests/CDObjCTests.m +++ b/ClassDumpRuntimeTests/CDObjCTests.m @@ -7,7 +7,7 @@ // #import -#import +#import @interface CDObjCTests : XCTestCase diff --git a/ClassDumpTests/CDParseAdvancedTests.m b/ClassDumpRuntimeTests/CDParseAdvancedTests.m similarity index 99% rename from ClassDumpTests/CDParseAdvancedTests.m rename to ClassDumpRuntimeTests/CDParseAdvancedTests.m index 88b8cbb..1efcc17 100644 --- a/ClassDumpTests/CDParseAdvancedTests.m +++ b/ClassDumpRuntimeTests/CDParseAdvancedTests.m @@ -7,7 +7,7 @@ // #import -#import +#import @interface CDParseAdvancedTests : XCTestCase diff --git a/ClassDumpTests/CDParseCppTests.mm b/ClassDumpRuntimeTests/CDParseCppTests.mm similarity index 85% rename from ClassDumpTests/CDParseCppTests.mm rename to ClassDumpRuntimeTests/CDParseCppTests.mm index 730c5a6..721a565 100644 --- a/ClassDumpTests/CDParseCppTests.mm +++ b/ClassDumpRuntimeTests/CDParseCppTests.mm @@ -7,8 +7,8 @@ // #import -#import "../ClassDump/ClassDump.h" -#import "../ClassDump/Services/CDTypeParser.h" +#import "../ClassDumpRuntime/ClassDumpRuntime.h" +#import "../ClassDumpRuntime/Services/CDTypeParser.h" @interface CDParseCppTests : XCTestCase @@ -29,7 +29,7 @@ @implementation CDParseCppTests _T inlineArray[2]; }; -namespace ClassDump { +namespace ClassDumpRuntime { class Chocolate { float cocoaPercent; }; @@ -50,11 +50,11 @@ - (void)testGenerics { } - (void)testNamespace { - CDParseType *type = [CDTypeParser typeForEncoding:@encode(ClassDump::Chocolate)]; + CDParseType *type = [CDTypeParser typeForEncoding:@encode(ClassDumpRuntime::Chocolate)]; XCTAssert([[type stringForVariableName:@"var"] isEqualToString:@"struct Chocolate { float x0; } var"]); - type = [CDTypeParser typeForEncoding:@encode(BinaryArray)]; - XCTAssert([[type stringForVariableName:@"var"] isEqualToString:@"struct BinaryArray { " + type = [CDTypeParser typeForEncoding:@encode(BinaryArray)]; + XCTAssert([[type stringForVariableName:@"var"] isEqualToString:@"struct BinaryArray { " "struct Chocolate { float x0; } x0[2]; " "} var"]); } diff --git a/ClassDumpTests/CDParsePrimitiveTests.m b/ClassDumpRuntimeTests/CDParsePrimitiveTests.m similarity index 98% rename from ClassDumpTests/CDParsePrimitiveTests.m rename to ClassDumpRuntimeTests/CDParsePrimitiveTests.m index 076d206..d2fd59a 100644 --- a/ClassDumpTests/CDParsePrimitiveTests.m +++ b/ClassDumpRuntimeTests/CDParsePrimitiveTests.m @@ -7,7 +7,7 @@ // #import -#import +#import @interface CDParsePrimitiveTests : XCTestCase diff --git a/ClassDumpTests/CDProtocolTest.m b/ClassDumpRuntimeTests/CDProtocolTest.m similarity index 98% rename from ClassDumpTests/CDProtocolTest.m rename to ClassDumpRuntimeTests/CDProtocolTest.m index 9f3feb7..fc8ddee 100644 --- a/ClassDumpTests/CDProtocolTest.m +++ b/ClassDumpRuntimeTests/CDProtocolTest.m @@ -7,7 +7,7 @@ // #import -#import +#import @interface CDProtocolTest : XCTestCase diff --git a/ClassDumpTests/Info.plist b/ClassDumpRuntimeTests/Info.plist similarity index 100% rename from ClassDumpTests/Info.plist rename to ClassDumpRuntimeTests/Info.plist diff --git a/Makefile b/Makefile index 5f35848..8c57c72 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,6 @@ include $(THEOS)/makefiles/common.mk LIBRARY_NAME = ClassDumpRuntime ClassDumpRuntime_CFLAGS = -fobjc-arc -I Sources/ClassDumpRuntime/include -ClassDumpRuntime_FILES = $(wildcard ClassDump/*/*.m) $(wildcard ClassDump/*/*/*.m) +ClassDumpRuntime_FILES = $(wildcard ClassDumpRuntime/*/*.m) $(wildcard ClassDumpRuntime/*/*/*.m) include $(THEOS_MAKE_PATH)/library.mk diff --git a/Package.swift b/Package.swift index 9ef62fa..c755ed5 100644 --- a/Package.swift +++ b/Package.swift @@ -18,15 +18,26 @@ let package = Package( name: "ClassDumpRuntime", targets: ["ClassDumpRuntime"] ), + .library( + name: "ClassDumpRuntimeSwift", + targets: ["ClassDumpRuntimeSwift"] + ), ], targets: [ .target( name: "ClassDumpRuntime" ), + .target( + name: "ClassDumpRuntimeSwift", + dependencies: [ + "ClassDumpRuntime", + ], + path: "ClassDumpRuntimeSwift" + ), .testTarget( name: "ClassDumpRuntimeTests", dependencies: ["ClassDumpRuntime"], - path: "ClassDumpTests" + path: "ClassDumpRuntimeTests" ), ] ) diff --git a/Sources/ClassDumpRuntime/ClassDump b/Sources/ClassDumpRuntime/ClassDump deleted file mode 120000 index d7430ae..0000000 --- a/Sources/ClassDumpRuntime/ClassDump +++ /dev/null @@ -1 +0,0 @@ -../../ClassDump \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDArrayType.h b/Sources/ClassDumpRuntime/include/ClassDump/CDArrayType.h deleted file mode 120000 index 3ba15c4..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDArrayType.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/ParseTypes/CDArrayType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDBitFieldType.h b/Sources/ClassDumpRuntime/include/ClassDump/CDBitFieldType.h deleted file mode 120000 index 1dd0273..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDBitFieldType.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/ParseTypes/CDBitFieldType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDBlockType.h b/Sources/ClassDumpRuntime/include/ClassDump/CDBlockType.h deleted file mode 120000 index e2d9c36..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDBlockType.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/ParseTypes/CDBlockType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDClassModel.h b/Sources/ClassDumpRuntime/include/ClassDump/CDClassModel.h deleted file mode 120000 index 426b33a..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDClassModel.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/Reflections/CDClassModel.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDGenerationOptions.h b/Sources/ClassDumpRuntime/include/ClassDump/CDGenerationOptions.h deleted file mode 120000 index 112914c..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDGenerationOptions.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/CDGenerationOptions.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDIvarModel.h b/Sources/ClassDumpRuntime/include/ClassDump/CDIvarModel.h deleted file mode 120000 index 31b6107..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDIvarModel.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/Reflections/CDIvarModel.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDMethodModel.h b/Sources/ClassDumpRuntime/include/ClassDump/CDMethodModel.h deleted file mode 120000 index fcfefd5..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDMethodModel.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/Reflections/CDMethodModel.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDObjectType.h b/Sources/ClassDumpRuntime/include/ClassDump/CDObjectType.h deleted file mode 120000 index b9abd57..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDObjectType.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/ParseTypes/CDObjectType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDParseType.h b/Sources/ClassDumpRuntime/include/ClassDump/CDParseType.h deleted file mode 120000 index 90c16f3..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDParseType.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/ParseTypes/CDParseType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDPointerType.h b/Sources/ClassDumpRuntime/include/ClassDump/CDPointerType.h deleted file mode 120000 index 0176ce9..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDPointerType.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/ParseTypes/CDPointerType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDPrimitiveType.h b/Sources/ClassDumpRuntime/include/ClassDump/CDPrimitiveType.h deleted file mode 120000 index 742f67e..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDPrimitiveType.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/ParseTypes/CDPrimitiveType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDPropertyAttribute.h b/Sources/ClassDumpRuntime/include/ClassDump/CDPropertyAttribute.h deleted file mode 120000 index 1a905ef..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDPropertyAttribute.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/Reflections/CDPropertyAttribute.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDPropertyModel.h b/Sources/ClassDumpRuntime/include/ClassDump/CDPropertyModel.h deleted file mode 120000 index ba564ee..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDPropertyModel.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/Reflections/CDPropertyModel.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDProtocolModel+Conformance.h b/Sources/ClassDumpRuntime/include/ClassDump/CDProtocolModel+Conformance.h deleted file mode 120000 index 0ade14a..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDProtocolModel+Conformance.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/Reflections/CDProtocolModel+Conformance.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDProtocolModel.h b/Sources/ClassDumpRuntime/include/ClassDump/CDProtocolModel.h deleted file mode 120000 index 1ba1373..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDProtocolModel.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/Reflections/CDProtocolModel.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDRecordType.h b/Sources/ClassDumpRuntime/include/ClassDump/CDRecordType.h deleted file mode 120000 index 76bfb18..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDRecordType.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/ParseTypes/CDRecordType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDSemanticString.h b/Sources/ClassDumpRuntime/include/ClassDump/CDSemanticString.h deleted file mode 120000 index dbb7400..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDSemanticString.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/CDSemanticString.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDTypeParser.h b/Sources/ClassDumpRuntime/include/ClassDump/CDTypeParser.h deleted file mode 120000 index 4f3d914..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDTypeParser.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Services/CDTypeParser.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDUtilities.h b/Sources/ClassDumpRuntime/include/ClassDump/CDUtilities.h deleted file mode 120000 index 315b735..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDUtilities.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Services/CDUtilities.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/CDVariableModel.h b/Sources/ClassDumpRuntime/include/ClassDump/CDVariableModel.h deleted file mode 120000 index fb599c5..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/CDVariableModel.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/Models/CDVariableModel.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDump/ClassDump.h b/Sources/ClassDumpRuntime/include/ClassDump/ClassDump.h deleted file mode 120000 index 7907f09..0000000 --- a/Sources/ClassDumpRuntime/include/ClassDump/ClassDump.h +++ /dev/null @@ -1 +0,0 @@ -../../../ClassDumpRuntime/ClassDump/ClassDump.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDArrayType.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDArrayType.h new file mode 120000 index 0000000..c068ff4 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDArrayType.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/ParseTypes/CDArrayType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDBitFieldType.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDBitFieldType.h new file mode 120000 index 0000000..26f3914 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDBitFieldType.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/ParseTypes/CDBitFieldType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDBlockType.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDBlockType.h new file mode 120000 index 0000000..50db3c1 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDBlockType.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/ParseTypes/CDBlockType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDClassModel.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDClassModel.h new file mode 120000 index 0000000..cdee1d7 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDClassModel.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/Reflections/CDClassModel.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDGenerationOptions.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDGenerationOptions.h new file mode 120000 index 0000000..5f5a5eb --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDGenerationOptions.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/CDGenerationOptions.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDIvarModel.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDIvarModel.h new file mode 120000 index 0000000..48a6daa --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDIvarModel.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/Reflections/CDIvarModel.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDMethodModel.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDMethodModel.h new file mode 120000 index 0000000..f6c903d --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDMethodModel.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/Reflections/CDMethodModel.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDObjectType.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDObjectType.h new file mode 120000 index 0000000..c87706f --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDObjectType.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/ParseTypes/CDObjectType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDParseType.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDParseType.h new file mode 120000 index 0000000..a8d324e --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDParseType.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/ParseTypes/CDParseType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPointerType.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPointerType.h new file mode 120000 index 0000000..cf1ca04 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPointerType.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/ParseTypes/CDPointerType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPrimitiveType.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPrimitiveType.h new file mode 120000 index 0000000..da3731a --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPrimitiveType.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/ParseTypes/CDPrimitiveType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPropertyAttribute.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPropertyAttribute.h new file mode 120000 index 0000000..7b0f535 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPropertyAttribute.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/Reflections/CDPropertyAttribute.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPropertyModel.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPropertyModel.h new file mode 120000 index 0000000..6a56b41 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDPropertyModel.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/Reflections/CDPropertyModel.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDProtocolModel+Conformance.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDProtocolModel+Conformance.h new file mode 120000 index 0000000..7561aa9 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDProtocolModel+Conformance.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/Reflections/CDProtocolModel+Conformance.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDProtocolModel.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDProtocolModel.h new file mode 120000 index 0000000..9285e7e --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDProtocolModel.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/Reflections/CDProtocolModel.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDRecordType.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDRecordType.h new file mode 120000 index 0000000..315b937 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDRecordType.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/ParseTypes/CDRecordType.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDSemanticString.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDSemanticString.h new file mode 120000 index 0000000..65067e5 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDSemanticString.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/CDSemanticString.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDTypeParser.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDTypeParser.h new file mode 120000 index 0000000..70a8adf --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDTypeParser.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Services/CDTypeParser.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDUtilities.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDUtilities.h new file mode 120000 index 0000000..80653d4 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDUtilities.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Services/CDUtilities.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDVariableModel.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDVariableModel.h new file mode 120000 index 0000000..0a1a1b0 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/CDVariableModel.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/Models/CDVariableModel.h \ No newline at end of file diff --git a/Sources/ClassDumpRuntime/include/ClassDumpRuntime/ClassDumpRuntime.h b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/ClassDumpRuntime.h new file mode 120000 index 0000000..dae1559 --- /dev/null +++ b/Sources/ClassDumpRuntime/include/ClassDumpRuntime/ClassDumpRuntime.h @@ -0,0 +1 @@ +../../../../ClassDumpRuntime/ClassDumpRuntime.h \ No newline at end of file From 46e08cd14a42ba4b30a76c085e8c3fcea6b1ac45 Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Fri, 7 Jun 2024 23:39:56 +0800 Subject: [PATCH 06/15] Refined semanticLinesWithOptions: methods --- ClassDumpRuntime/Models/Reflections/CDClassModel.h | 2 +- .../Models/Reflections/CDProtocolModel.h | 2 +- ClassDumpRuntimeSwift/CDGenerationOptions.swift | 12 ++++++++++++ 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/ClassDumpRuntime/Models/Reflections/CDClassModel.h b/ClassDumpRuntime/Models/Reflections/CDClassModel.h index 5e06c96..2a0fc03 100644 --- a/ClassDumpRuntime/Models/Reflections/CDClassModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDClassModel.h @@ -49,7 +49,7 @@ NS_HEADER_AUDIT_BEGIN(nullability) - (CDSemanticString *)semanticLinesWithComments:(BOOL)comments synthesizeStrip:(BOOL)synthesizeStrip; /// Generate an @c interface for the class -- (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options; +- (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options NS_REFINED_FOR_SWIFT; /// Classes the class references in the declaration /// diff --git a/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h b/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h index 4ee3974..9dc9c1e 100644 --- a/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h @@ -49,7 +49,7 @@ NS_HEADER_AUDIT_BEGIN(nullability) - (CDSemanticString *)semanticLinesWithComments:(BOOL)comments synthesizeStrip:(BOOL)synthesizeStrip; /// Generate an @c interface for the protocol -- (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options; +- (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options NS_REFINED_FOR_SWIFT; /// Classes the protocol references in the declaration /// diff --git a/ClassDumpRuntimeSwift/CDGenerationOptions.swift b/ClassDumpRuntimeSwift/CDGenerationOptions.swift index f7269a2..72344fd 100644 --- a/ClassDumpRuntimeSwift/CDGenerationOptions.swift +++ b/ClassDumpRuntimeSwift/CDGenerationOptions.swift @@ -61,3 +61,15 @@ extension CDGenerationOptions: ReferenceConvertible { description } } + +extension CDClassModel { + public func semanticLines(with options: CDGenerationOptions) -> CDSemanticString { + __semanticLines(with: options as __CDGenerationOptions) + } +} + +extension CDProtocolModel { + public func semanticLines(with options: CDGenerationOptions) -> CDSemanticString { + __semanticLines(with: options as __CDGenerationOptions) + } +} From 8c58ee0b533067110381f6eec0e4ae9d33fde534 Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Fri, 7 Jun 2024 23:48:57 +0800 Subject: [PATCH 07/15] Fixes test plan missings --- ClassDumpRuntime/ClassDumpRuntime.xctestplan | 4 ++-- Package.swift | 15 +++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/ClassDumpRuntime/ClassDumpRuntime.xctestplan b/ClassDumpRuntime/ClassDumpRuntime.xctestplan index 65318ce..74cc3d2 100644 --- a/ClassDumpRuntime/ClassDumpRuntime.xctestplan +++ b/ClassDumpRuntime/ClassDumpRuntime.xctestplan @@ -18,9 +18,9 @@ "testTargets" : [ { "target" : { - "containerPath" : "container:ClassDump.xcodeproj", + "containerPath" : "container:ClassDumpRuntime.xcodeproj", "identifier" : "FA2A011823AEB15700B52F1D", - "name" : "ClassDumpTests" + "name" : "ClassDumpRuntimeTests" } } ], diff --git a/Package.swift b/Package.swift index c755ed5..ed99cf1 100644 --- a/Package.swift +++ b/Package.swift @@ -16,11 +16,16 @@ let package = Package( products: [ .library( name: "ClassDumpRuntime", - targets: ["ClassDumpRuntime"] + targets: [ + "ClassDumpRuntime", + ] ), .library( name: "ClassDumpRuntimeSwift", - targets: ["ClassDumpRuntimeSwift"] + targets: [ + "ClassDumpRuntime", + "ClassDumpRuntimeSwift", + ] ), ], targets: [ @@ -30,13 +35,15 @@ let package = Package( .target( name: "ClassDumpRuntimeSwift", dependencies: [ - "ClassDumpRuntime", + "ClassDumpRuntime", ], path: "ClassDumpRuntimeSwift" ), .testTarget( name: "ClassDumpRuntimeTests", - dependencies: ["ClassDumpRuntime"], + dependencies: [ + "ClassDumpRuntime", + ], path: "ClassDumpRuntimeTests" ), ] From bf4fc64c0856d82b43c434598fbbc228e52ed3c1 Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Sat, 8 Jun 2024 20:40:16 +0800 Subject: [PATCH 08/15] Fixed Swift PM issues --- .gitignore | 1 + ClassDumpRuntime/ClassDumpRuntime.xctestplan | 4 ++-- ClassDumpRuntimeSwift/CDGenerationOptions.swift | 4 +++- Sources/ClassDumpRuntime/ClassDumpRuntime | 1 + 4 files changed, 7 insertions(+), 3 deletions(-) create mode 120000 Sources/ClassDumpRuntime/ClassDumpRuntime diff --git a/.gitignore b/.gitignore index 0023a53..777dc81 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ DerivedData/ .swiftpm/configuration/registries.json .swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata .netrc +.swiftpm diff --git a/ClassDumpRuntime/ClassDumpRuntime.xctestplan b/ClassDumpRuntime/ClassDumpRuntime.xctestplan index 74cc3d2..cf407f9 100644 --- a/ClassDumpRuntime/ClassDumpRuntime.xctestplan +++ b/ClassDumpRuntime/ClassDumpRuntime.xctestplan @@ -18,8 +18,8 @@ "testTargets" : [ { "target" : { - "containerPath" : "container:ClassDumpRuntime.xcodeproj", - "identifier" : "FA2A011823AEB15700B52F1D", + "containerPath" : "container:", + "identifier" : "ClassDumpRuntimeTests", "name" : "ClassDumpRuntimeTests" } } diff --git a/ClassDumpRuntimeSwift/CDGenerationOptions.swift b/ClassDumpRuntimeSwift/CDGenerationOptions.swift index 72344fd..623a83b 100644 --- a/ClassDumpRuntimeSwift/CDGenerationOptions.swift +++ b/ClassDumpRuntimeSwift/CDGenerationOptions.swift @@ -1,7 +1,7 @@ import Foundation import ClassDumpRuntime -public struct CDGenerationOptions { +public struct CDGenerationOptions: Codable, Hashable, Identifiable { public var stripProtocolConformance: Bool public var stripOverrides: Bool public var stripDuplicates: Bool @@ -9,6 +9,7 @@ public struct CDGenerationOptions { public var stripCtorMethod: Bool public var stripDtorMethod: Bool public var addSymbolImageComments: Bool + public var id: Self { self } public init(stripProtocolConformance: Bool = false, stripOverrides: Bool = false, stripDuplicates: Bool = false, stripSynthesized: Bool = false, stripCtorMethod: Bool = false, stripDtorMethod: Bool = false, addSymbolImageComments: Bool = false) { self.stripProtocolConformance = stripProtocolConformance @@ -19,6 +20,7 @@ public struct CDGenerationOptions { self.stripDtorMethod = stripDtorMethod self.addSymbolImageComments = addSymbolImageComments } + } extension CDGenerationOptions: ReferenceConvertible { diff --git a/Sources/ClassDumpRuntime/ClassDumpRuntime b/Sources/ClassDumpRuntime/ClassDumpRuntime new file mode 120000 index 0000000..fd10884 --- /dev/null +++ b/Sources/ClassDumpRuntime/ClassDumpRuntime @@ -0,0 +1 @@ +../../ClassDumpRuntime \ No newline at end of file From 77ea6e2e843a31bf9b7eefc50467e896e3660959 Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Tue, 11 Jun 2024 00:27:29 +0800 Subject: [PATCH 09/15] Add ivar offset comments option --- ClassDumpRuntime/Models/CDGenerationOptions.h | 3 +- ClassDumpRuntime/Models/CDGenerationOptions.m | 1 + .../Models/Reflections/CDClassModel.h | 2 +- .../Models/Reflections/CDClassModel.m | 6 +- .../Models/Reflections/CDIvarModel.h | 2 + .../Models/Reflections/CDIvarModel.m | 1 + .../Models/Reflections/CDProtocolModel.h | 2 +- .../CDGenerationOptions.swift | 148 +++++++++--------- 8 files changed, 87 insertions(+), 78 deletions(-) diff --git a/ClassDumpRuntime/Models/CDGenerationOptions.h b/ClassDumpRuntime/Models/CDGenerationOptions.h index 071b422..288719c 100644 --- a/ClassDumpRuntime/Models/CDGenerationOptions.h +++ b/ClassDumpRuntime/Models/CDGenerationOptions.h @@ -11,7 +11,6 @@ NS_HEADER_AUDIT_BEGIN(nullability) /// Options with which a header file may be generated with -NS_REFINED_FOR_SWIFT @interface CDGenerationOptions : NSObject /// @c YES means hide properties and methods that are required by a protocol the type conforms to /// @@ -52,6 +51,8 @@ NS_REFINED_FOR_SWIFT /// This property applies to both classes and protocols. @property (nonatomic) BOOL addSymbolImageComments; +@property (nonatomic) BOOL addIvarOffsetComments; + @end NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDumpRuntime/Models/CDGenerationOptions.m b/ClassDumpRuntime/Models/CDGenerationOptions.m index 7ac6d15..30001dc 100644 --- a/ClassDumpRuntime/Models/CDGenerationOptions.m +++ b/ClassDumpRuntime/Models/CDGenerationOptions.m @@ -19,6 +19,7 @@ - (id)copyWithZone:(NSZone *)zone { options.stripCtorMethod = _stripCtorMethod; options.stripDtorMethod = _stripDtorMethod; options.addSymbolImageComments = _addSymbolImageComments; + options.addIvarOffsetComments = _addIvarOffsetComments; return options; } diff --git a/ClassDumpRuntime/Models/Reflections/CDClassModel.h b/ClassDumpRuntime/Models/Reflections/CDClassModel.h index 2a0fc03..5e06c96 100644 --- a/ClassDumpRuntime/Models/Reflections/CDClassModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDClassModel.h @@ -49,7 +49,7 @@ NS_HEADER_AUDIT_BEGIN(nullability) - (CDSemanticString *)semanticLinesWithComments:(BOOL)comments synthesizeStrip:(BOOL)synthesizeStrip; /// Generate an @c interface for the class -- (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options NS_REFINED_FOR_SWIFT; +- (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options; /// Classes the class references in the declaration /// diff --git a/ClassDumpRuntime/Models/Reflections/CDClassModel.m b/ClassDumpRuntime/Models/Reflections/CDClassModel.m index 6125d19..e2d12b5 100644 --- a/ClassDumpRuntime/Models/Reflections/CDClassModel.m +++ b/ClassDumpRuntime/Models/Reflections/CDClassModel.m @@ -257,7 +257,11 @@ - (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options { } [build appendString:@" " semanticType:CDSemanticTypeStandard]; [build appendSemanticString:[ivar semanticString]]; - [build appendString:@";\n" semanticType:CDSemanticTypeStandard]; + [build appendString:@";" semanticType:CDSemanticTypeStandard]; + if (options.addIvarOffsetComments) { + [build appendString:[NSString stringWithFormat:@" // offset: %"PRIdPTR"", ivar.offset] semanticType:CDSemanticTypeComment]; + } + [build appendString:@"\n" semanticType:CDSemanticTypeStandard]; } [build appendString:@"}" semanticType:CDSemanticTypeStandard]; } diff --git a/ClassDumpRuntime/Models/Reflections/CDIvarModel.h b/ClassDumpRuntime/Models/Reflections/CDIvarModel.h index 7bb97b2..315df12 100644 --- a/ClassDumpRuntime/Models/Reflections/CDIvarModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDIvarModel.h @@ -20,6 +20,8 @@ NS_HEADER_AUDIT_BEGIN(nullability) @property (strong, nonatomic, readonly) NSString *name; /// The type of the ivar @property (strong, nonatomic, readonly) CDParseType *type; +/// The offset of the ivar +@property (nonatomic, readonly) ptrdiff_t offset; - (instancetype)initWithIvar:(Ivar)ivar; + (instancetype)modelWithIvar:(Ivar)ivar; diff --git a/ClassDumpRuntime/Models/Reflections/CDIvarModel.m b/ClassDumpRuntime/Models/Reflections/CDIvarModel.m index 1df3c3a..7f2e591 100644 --- a/ClassDumpRuntime/Models/Reflections/CDIvarModel.m +++ b/ClassDumpRuntime/Models/Reflections/CDIvarModel.m @@ -20,6 +20,7 @@ - (instancetype)initWithIvar:(Ivar)ivar { _backing = ivar; _name = @(ivar_getName(ivar)); _type = [CDTypeParser typeForEncoding:(ivar_getTypeEncoding(ivar) ?: "")]; + _offset = ivar_getOffset(ivar); } return self; } diff --git a/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h b/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h index 9dc9c1e..4ee3974 100644 --- a/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h @@ -49,7 +49,7 @@ NS_HEADER_AUDIT_BEGIN(nullability) - (CDSemanticString *)semanticLinesWithComments:(BOOL)comments synthesizeStrip:(BOOL)synthesizeStrip; /// Generate an @c interface for the protocol -- (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options NS_REFINED_FOR_SWIFT; +- (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options; /// Classes the protocol references in the declaration /// diff --git a/ClassDumpRuntimeSwift/CDGenerationOptions.swift b/ClassDumpRuntimeSwift/CDGenerationOptions.swift index 623a83b..8a71ad4 100644 --- a/ClassDumpRuntimeSwift/CDGenerationOptions.swift +++ b/ClassDumpRuntimeSwift/CDGenerationOptions.swift @@ -1,77 +1,77 @@ import Foundation import ClassDumpRuntime -public struct CDGenerationOptions: Codable, Hashable, Identifiable { - public var stripProtocolConformance: Bool - public var stripOverrides: Bool - public var stripDuplicates: Bool - public var stripSynthesized: Bool - public var stripCtorMethod: Bool - public var stripDtorMethod: Bool - public var addSymbolImageComments: Bool - public var id: Self { self } - - public init(stripProtocolConformance: Bool = false, stripOverrides: Bool = false, stripDuplicates: Bool = false, stripSynthesized: Bool = false, stripCtorMethod: Bool = false, stripDtorMethod: Bool = false, addSymbolImageComments: Bool = false) { - self.stripProtocolConformance = stripProtocolConformance - self.stripOverrides = stripOverrides - self.stripDuplicates = stripDuplicates - self.stripSynthesized = stripSynthesized - self.stripCtorMethod = stripCtorMethod - self.stripDtorMethod = stripDtorMethod - self.addSymbolImageComments = addSymbolImageComments - } - -} - -extension CDGenerationOptions: ReferenceConvertible { - public typealias ReferenceType = __CDGenerationOptions - - public func _bridgeToObjectiveC() -> __CDGenerationOptions { - let options = __CDGenerationOptions() - options.stripProtocolConformance = stripProtocolConformance - options.stripOverrides = stripOverrides - options.stripSynthesized = stripSynthesized - options.stripCtorMethod = stripCtorMethod - options.stripDtorMethod = stripDtorMethod - options.addSymbolImageComments = addSymbolImageComments - return options - } - - public static func _forceBridgeFromObjectiveC(_ source: __CDGenerationOptions, result: inout CDGenerationOptions?) { - result = CDGenerationOptions(stripProtocolConformance: source.stripProtocolConformance, stripOverrides: source.stripOverrides, stripDuplicates: source.stripDuplicates, stripSynthesized: source.stripSynthesized, stripCtorMethod: source.stripCtorMethod, stripDtorMethod: source.stripDtorMethod, addSymbolImageComments: source.addSymbolImageComments) - } - - public static func _conditionallyBridgeFromObjectiveC(_ source: __CDGenerationOptions, result: inout CDGenerationOptions?) -> Bool { - _forceBridgeFromObjectiveC(source, result: &result) - return true - } - - public static func _unconditionallyBridgeFromObjectiveC(_ source: __CDGenerationOptions?) -> CDGenerationOptions { - if let source = source { - var result: CDGenerationOptions? - _forceBridgeFromObjectiveC(source, result: &result) - return result! - } - return CDGenerationOptions() - } - - public var description: String { - "\(self)" - } - - public var debugDescription: String { - description - } -} - -extension CDClassModel { - public func semanticLines(with options: CDGenerationOptions) -> CDSemanticString { - __semanticLines(with: options as __CDGenerationOptions) - } -} - -extension CDProtocolModel { - public func semanticLines(with options: CDGenerationOptions) -> CDSemanticString { - __semanticLines(with: options as __CDGenerationOptions) - } -} +//public struct CDGenerationOptions: Codable, Hashable, Identifiable { +// public var stripProtocolConformance: Bool +// public var stripOverrides: Bool +// public var stripDuplicates: Bool +// public var stripSynthesized: Bool +// public var stripCtorMethod: Bool +// public var stripDtorMethod: Bool +// public var addSymbolImageComments: Bool +// public var id: Self { self } +// +// public init(stripProtocolConformance: Bool = false, stripOverrides: Bool = false, stripDuplicates: Bool = false, stripSynthesized: Bool = false, stripCtorMethod: Bool = false, stripDtorMethod: Bool = false, addSymbolImageComments: Bool = false) { +// self.stripProtocolConformance = stripProtocolConformance +// self.stripOverrides = stripOverrides +// self.stripDuplicates = stripDuplicates +// self.stripSynthesized = stripSynthesized +// self.stripCtorMethod = stripCtorMethod +// self.stripDtorMethod = stripDtorMethod +// self.addSymbolImageComments = addSymbolImageComments +// } +// +//} +// +//extension CDGenerationOptions: ReferenceConvertible { +// public typealias ReferenceType = __CDGenerationOptions +// +// public func _bridgeToObjectiveC() -> __CDGenerationOptions { +// let options = __CDGenerationOptions() +// options.stripProtocolConformance = stripProtocolConformance +// options.stripOverrides = stripOverrides +// options.stripSynthesized = stripSynthesized +// options.stripCtorMethod = stripCtorMethod +// options.stripDtorMethod = stripDtorMethod +// options.addSymbolImageComments = addSymbolImageComments +// return options +// } +// +// public static func _forceBridgeFromObjectiveC(_ source: __CDGenerationOptions, result: inout CDGenerationOptions?) { +// result = CDGenerationOptions(stripProtocolConformance: source.stripProtocolConformance, stripOverrides: source.stripOverrides, stripDuplicates: source.stripDuplicates, stripSynthesized: source.stripSynthesized, stripCtorMethod: source.stripCtorMethod, stripDtorMethod: source.stripDtorMethod, addSymbolImageComments: source.addSymbolImageComments) +// } +// +// public static func _conditionallyBridgeFromObjectiveC(_ source: __CDGenerationOptions, result: inout CDGenerationOptions?) -> Bool { +// _forceBridgeFromObjectiveC(source, result: &result) +// return true +// } +// +// public static func _unconditionallyBridgeFromObjectiveC(_ source: __CDGenerationOptions?) -> CDGenerationOptions { +// if let source = source { +// var result: CDGenerationOptions? +// _forceBridgeFromObjectiveC(source, result: &result) +// return result! +// } +// return CDGenerationOptions() +// } +// +// public var description: String { +// "\(self)" +// } +// +// public var debugDescription: String { +// description +// } +//} +// +//extension CDClassModel { +// public func semanticLines(with options: CDGenerationOptions) -> CDSemanticString { +// __semanticLines(with: options as __CDGenerationOptions) +// } +//} +// +//extension CDProtocolModel { +// public func semanticLines(with options: CDGenerationOptions) -> CDSemanticString { +// __semanticLines(with: options as __CDGenerationOptions) +// } +//} From d70af94b7d6fe0208af954d538176e4d44be498b Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Tue, 11 Jun 2024 00:32:38 +0800 Subject: [PATCH 10/15] Fix Swift bridge --- ClassDumpRuntime/Models/CDGenerationOptions.h | 2 +- .../Models/Reflections/CDClassModel.h | 2 +- .../Models/Reflections/CDProtocolModel.h | 2 +- .../CDGenerationOptions.swift | 169 ++++++++++-------- 4 files changed, 98 insertions(+), 77 deletions(-) diff --git a/ClassDumpRuntime/Models/CDGenerationOptions.h b/ClassDumpRuntime/Models/CDGenerationOptions.h index 288719c..50cf2f6 100644 --- a/ClassDumpRuntime/Models/CDGenerationOptions.h +++ b/ClassDumpRuntime/Models/CDGenerationOptions.h @@ -9,8 +9,8 @@ #import NS_HEADER_AUDIT_BEGIN(nullability) - /// Options with which a header file may be generated with +NS_REFINED_FOR_SWIFT @interface CDGenerationOptions : NSObject /// @c YES means hide properties and methods that are required by a protocol the type conforms to /// diff --git a/ClassDumpRuntime/Models/Reflections/CDClassModel.h b/ClassDumpRuntime/Models/Reflections/CDClassModel.h index 5e06c96..2a0fc03 100644 --- a/ClassDumpRuntime/Models/Reflections/CDClassModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDClassModel.h @@ -49,7 +49,7 @@ NS_HEADER_AUDIT_BEGIN(nullability) - (CDSemanticString *)semanticLinesWithComments:(BOOL)comments synthesizeStrip:(BOOL)synthesizeStrip; /// Generate an @c interface for the class -- (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options; +- (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options NS_REFINED_FOR_SWIFT; /// Classes the class references in the declaration /// diff --git a/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h b/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h index 4ee3974..9dc9c1e 100644 --- a/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDProtocolModel.h @@ -49,7 +49,7 @@ NS_HEADER_AUDIT_BEGIN(nullability) - (CDSemanticString *)semanticLinesWithComments:(BOOL)comments synthesizeStrip:(BOOL)synthesizeStrip; /// Generate an @c interface for the protocol -- (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options; +- (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options NS_REFINED_FOR_SWIFT; /// Classes the protocol references in the declaration /// diff --git a/ClassDumpRuntimeSwift/CDGenerationOptions.swift b/ClassDumpRuntimeSwift/CDGenerationOptions.swift index 8a71ad4..f9b8010 100644 --- a/ClassDumpRuntimeSwift/CDGenerationOptions.swift +++ b/ClassDumpRuntimeSwift/CDGenerationOptions.swift @@ -1,77 +1,98 @@ import Foundation import ClassDumpRuntime -//public struct CDGenerationOptions: Codable, Hashable, Identifiable { -// public var stripProtocolConformance: Bool -// public var stripOverrides: Bool -// public var stripDuplicates: Bool -// public var stripSynthesized: Bool -// public var stripCtorMethod: Bool -// public var stripDtorMethod: Bool -// public var addSymbolImageComments: Bool -// public var id: Self { self } -// -// public init(stripProtocolConformance: Bool = false, stripOverrides: Bool = false, stripDuplicates: Bool = false, stripSynthesized: Bool = false, stripCtorMethod: Bool = false, stripDtorMethod: Bool = false, addSymbolImageComments: Bool = false) { -// self.stripProtocolConformance = stripProtocolConformance -// self.stripOverrides = stripOverrides -// self.stripDuplicates = stripDuplicates -// self.stripSynthesized = stripSynthesized -// self.stripCtorMethod = stripCtorMethod -// self.stripDtorMethod = stripDtorMethod -// self.addSymbolImageComments = addSymbolImageComments -// } -// -//} -// -//extension CDGenerationOptions: ReferenceConvertible { -// public typealias ReferenceType = __CDGenerationOptions -// -// public func _bridgeToObjectiveC() -> __CDGenerationOptions { -// let options = __CDGenerationOptions() -// options.stripProtocolConformance = stripProtocolConformance -// options.stripOverrides = stripOverrides -// options.stripSynthesized = stripSynthesized -// options.stripCtorMethod = stripCtorMethod -// options.stripDtorMethod = stripDtorMethod -// options.addSymbolImageComments = addSymbolImageComments -// return options -// } -// -// public static func _forceBridgeFromObjectiveC(_ source: __CDGenerationOptions, result: inout CDGenerationOptions?) { -// result = CDGenerationOptions(stripProtocolConformance: source.stripProtocolConformance, stripOverrides: source.stripOverrides, stripDuplicates: source.stripDuplicates, stripSynthesized: source.stripSynthesized, stripCtorMethod: source.stripCtorMethod, stripDtorMethod: source.stripDtorMethod, addSymbolImageComments: source.addSymbolImageComments) -// } -// -// public static func _conditionallyBridgeFromObjectiveC(_ source: __CDGenerationOptions, result: inout CDGenerationOptions?) -> Bool { -// _forceBridgeFromObjectiveC(source, result: &result) -// return true -// } -// -// public static func _unconditionallyBridgeFromObjectiveC(_ source: __CDGenerationOptions?) -> CDGenerationOptions { -// if let source = source { -// var result: CDGenerationOptions? -// _forceBridgeFromObjectiveC(source, result: &result) -// return result! -// } -// return CDGenerationOptions() -// } -// -// public var description: String { -// "\(self)" -// } -// -// public var debugDescription: String { -// description -// } -//} -// -//extension CDClassModel { -// public func semanticLines(with options: CDGenerationOptions) -> CDSemanticString { -// __semanticLines(with: options as __CDGenerationOptions) -// } -//} -// -//extension CDProtocolModel { -// public func semanticLines(with options: CDGenerationOptions) -> CDSemanticString { -// __semanticLines(with: options as __CDGenerationOptions) -// } -//} +public struct CDGenerationOptions: Codable, Hashable, Identifiable { + public var stripProtocolConformance: Bool + public var stripOverrides: Bool + public var stripDuplicates: Bool + public var stripSynthesized: Bool + public var stripCtorMethod: Bool + public var stripDtorMethod: Bool + public var addSymbolImageComments: Bool + public var addIvarOffsetComments: Bool + public var id: Self { self } + + public init( + stripProtocolConformance: Bool = false, + stripOverrides: Bool = false, + stripDuplicates: Bool = false, + stripSynthesized: Bool = false, + stripCtorMethod: Bool = false, + stripDtorMethod: Bool = false, + addSymbolImageComments: Bool = false, + addIvarOffsetComments: Bool = false + ) { + self.stripProtocolConformance = stripProtocolConformance + self.stripOverrides = stripOverrides + self.stripDuplicates = stripDuplicates + self.stripSynthesized = stripSynthesized + self.stripCtorMethod = stripCtorMethod + self.stripDtorMethod = stripDtorMethod + self.addSymbolImageComments = addSymbolImageComments + self.addIvarOffsetComments = addIvarOffsetComments + } + +} + +extension CDGenerationOptions: ReferenceConvertible { + public typealias ReferenceType = __CDGenerationOptions + + public func _bridgeToObjectiveC() -> __CDGenerationOptions { + let options = __CDGenerationOptions() + options.stripProtocolConformance = stripProtocolConformance + options.stripOverrides = stripOverrides + options.stripSynthesized = stripSynthesized + options.stripCtorMethod = stripCtorMethod + options.stripDtorMethod = stripDtorMethod + options.addSymbolImageComments = addSymbolImageComments + options.addIvarOffsetComments = addIvarOffsetComments + return options + } + + public static func _forceBridgeFromObjectiveC(_ source: __CDGenerationOptions, result: inout CDGenerationOptions?) { + result = CDGenerationOptions( + stripProtocolConformance: source.stripProtocolConformance, + stripOverrides: source.stripOverrides, + stripDuplicates: source.stripDuplicates, + stripSynthesized: source.stripSynthesized, + stripCtorMethod: source.stripCtorMethod, + stripDtorMethod: source.stripDtorMethod, + addSymbolImageComments: source.addSymbolImageComments, + addIvarOffsetComments: source.addIvarOffsetComments + ) + } + + public static func _conditionallyBridgeFromObjectiveC(_ source: __CDGenerationOptions, result: inout CDGenerationOptions?) -> Bool { + _forceBridgeFromObjectiveC(source, result: &result) + return true + } + + public static func _unconditionallyBridgeFromObjectiveC(_ source: __CDGenerationOptions?) -> CDGenerationOptions { + if let source = source { + var result: CDGenerationOptions? + _forceBridgeFromObjectiveC(source, result: &result) + return result! + } + return CDGenerationOptions() + } + + public var description: String { + "\(self)" + } + + public var debugDescription: String { + description + } +} + +extension CDClassModel { + public func semanticLines(with options: CDGenerationOptions) -> CDSemanticString { + __semanticLines(with: options as __CDGenerationOptions) + } +} + +extension CDProtocolModel { + public func semanticLines(with options: CDGenerationOptions) -> CDSemanticString { + __semanticLines(with: options as __CDGenerationOptions) + } +} From a7d62358ac451ff5601aee108797ed687e12370b Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Fri, 28 Jun 2024 14:52:53 +0800 Subject: [PATCH 11/15] CDSemanticString support NSSecureCoding --- ClassDumpRuntime/Models/CDSemanticString.h | 2 +- ClassDumpRuntime/Models/CDSemanticString.m | 37 +++++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/ClassDumpRuntime/Models/CDSemanticString.h b/ClassDumpRuntime/Models/CDSemanticString.h index 9abae6f..d345309 100644 --- a/ClassDumpRuntime/Models/CDSemanticString.h +++ b/ClassDumpRuntime/Models/CDSemanticString.h @@ -38,7 +38,7 @@ typedef NS_ENUM(NSUInteger, CDSemanticType) { NS_HEADER_AUDIT_BEGIN(nullability) /// A string composed of substrings that may have different semantic meanings -@interface CDSemanticString : NSObject +@interface CDSemanticString : NSObject /// The length of the string @property (readonly) NSUInteger length; /// Append another semantic string to the end of this string, diff --git a/ClassDumpRuntime/Models/CDSemanticString.m b/ClassDumpRuntime/Models/CDSemanticString.m index 7a0b353..a56167d 100644 --- a/ClassDumpRuntime/Models/CDSemanticString.m +++ b/ClassDumpRuntime/Models/CDSemanticString.m @@ -8,12 +8,30 @@ #import "CDSemanticString.h" -@interface CDSemanticStringStaple : NSObject +@interface CDSemanticStringStaple : NSObject @property (strong, nonatomic) NSString *string; @property (nonatomic) CDSemanticType type; @end @implementation CDSemanticStringStaple + +- (instancetype)initWithCoder:(NSCoder *)coder { + if (self = [super init]) { + _string = [coder decodeObjectOfClass:[NSString class] forKey:NSStringFromSelector(@selector(string))]; + _type = [coder decodeIntegerForKey:NSStringFromSelector(@selector(type))]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:_string forKey:NSStringFromSelector(@selector(string))]; + [coder encodeInteger:_type forKey:NSStringFromSelector(@selector(type))]; +} + ++ (BOOL)supportsSecureCoding { + return YES; +} + @end @@ -29,6 +47,23 @@ - (instancetype)init { return self; } +- (instancetype)initWithCoder:(NSCoder *)coder { + if (self = [super init]) { + _components = [coder decodeObjectOfClasses:[NSSet setWithObjects:[CDSemanticStringStaple class], [NSMutableArray class], nil] forKey:@"components"]; + _length = [coder decodeIntegerForKey:NSStringFromSelector(@selector(length))]; + } + return self; +} + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:_components forKey:@"components"]; + [coder encodeInteger:_length forKey:NSStringFromSelector(@selector(length))]; +} + ++ (BOOL)supportsSecureCoding { + return YES; +} + - (void)appendSemanticString:(CDSemanticString *)semanticString { [_components addObjectsFromArray:semanticString->_components]; _length += semanticString.length; From 13e2f822c867773e2b9d543d2b08bac257891b35 Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Wed, 3 Jul 2024 17:51:55 +0800 Subject: [PATCH 12/15] Updates --- ClassDumpRuntime/ClassDumpRuntime.xctestplan | 4 ++-- .../Models/ParseTypes/CDRecordType.h | 4 ++++ .../Models/ParseTypes/CDRecordType.m | 16 +++++++++++++++- .../Models/Reflections/CDIvarModel.m | 7 ++++++- ClassDumpRuntimeTests/CDParseAdvancedTests.m | 16 +++++++++------- 5 files changed, 36 insertions(+), 11 deletions(-) diff --git a/ClassDumpRuntime/ClassDumpRuntime.xctestplan b/ClassDumpRuntime/ClassDumpRuntime.xctestplan index cf407f9..74cc3d2 100644 --- a/ClassDumpRuntime/ClassDumpRuntime.xctestplan +++ b/ClassDumpRuntime/ClassDumpRuntime.xctestplan @@ -18,8 +18,8 @@ "testTargets" : [ { "target" : { - "containerPath" : "container:", - "identifier" : "ClassDumpRuntimeTests", + "containerPath" : "container:ClassDumpRuntime.xcodeproj", + "identifier" : "FA2A011823AEB15700B52F1D", "name" : "ClassDumpRuntimeTests" } } diff --git a/ClassDumpRuntime/Models/ParseTypes/CDRecordType.h b/ClassDumpRuntime/Models/ParseTypes/CDRecordType.h index 9e60b6e..e897391 100644 --- a/ClassDumpRuntime/Models/ParseTypes/CDRecordType.h +++ b/ClassDumpRuntime/Models/ParseTypes/CDRecordType.h @@ -30,6 +30,10 @@ NS_HEADER_AUDIT_BEGIN(nullability) /// the record is defined to have no fields. @property (nullable, strong, nonatomic) NSArray *fields; +@property (nonatomic, getter=isExpand) BOOL expand; +@property (nonatomic) NSInteger indentLevel; + + @end NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDumpRuntime/Models/ParseTypes/CDRecordType.m b/ClassDumpRuntime/Models/ParseTypes/CDRecordType.m index 7eab84b..b1392ba 100644 --- a/ClassDumpRuntime/Models/ParseTypes/CDRecordType.m +++ b/ClassDumpRuntime/Models/ParseTypes/CDRecordType.m @@ -26,14 +26,28 @@ - (CDSemanticString *)semanticStringForVariableName:(NSString *)varName { [build appendString:@" { " semanticType:CDSemanticTypeStandard]; unsigned fieldName = 0; - + if (self.isExpand) { + [build appendString:@"\n" semanticType:CDSemanticTypeStandard]; + } for (CDVariableModel *variableModel in self.fields) { + if (self.isExpand) { + [build appendString:@" " semanticType:CDSemanticTypeStandard]; + for (NSInteger i = 0; i < self.indentLevel; i++) { + [build appendString:@" " semanticType:CDSemanticTypeStandard]; + } + } NSString *variableName = variableModel.name; if (variableName == nil) { variableName = [NSString stringWithFormat:@"x%u", fieldName++]; } [build appendSemanticString:[variableModel.type semanticStringForVariableName:variableName]]; [build appendString:@"; " semanticType:CDSemanticTypeStandard]; + if (self.isExpand) { + [build appendString:@"\n" semanticType:CDSemanticTypeStandard]; + } + } + for (NSInteger i = 0; i < self.indentLevel; i++) { + [build appendString:@" " semanticType:CDSemanticTypeStandard]; } [build appendString:@"}" semanticType:CDSemanticTypeStandard]; } diff --git a/ClassDumpRuntime/Models/Reflections/CDIvarModel.m b/ClassDumpRuntime/Models/Reflections/CDIvarModel.m index 7f2e591..ebecf10 100644 --- a/ClassDumpRuntime/Models/Reflections/CDIvarModel.m +++ b/ClassDumpRuntime/Models/Reflections/CDIvarModel.m @@ -8,7 +8,7 @@ #import "CDIvarModel.h" #import "../../Services/CDTypeParser.h" - +#import "../ParseTypes/CDRecordType.h" @implementation CDIvarModel + (instancetype)modelWithIvar:(Ivar)ivar { @@ -21,6 +21,11 @@ - (instancetype)initWithIvar:(Ivar)ivar { _name = @(ivar_getName(ivar)); _type = [CDTypeParser typeForEncoding:(ivar_getTypeEncoding(ivar) ?: "")]; _offset = ivar_getOffset(ivar); + if ([_type isKindOfClass:[CDRecordType class]]) { + CDRecordType *recordType = (CDRecordType *)_type; + recordType.indentLevel = 1; + recordType.expand = YES; + } } return self; } diff --git a/ClassDumpRuntimeTests/CDParseAdvancedTests.m b/ClassDumpRuntimeTests/CDParseAdvancedTests.m index 1efcc17..1309e52 100644 --- a/ClassDumpRuntimeTests/CDParseAdvancedTests.m +++ b/ClassDumpRuntimeTests/CDParseAdvancedTests.m @@ -195,13 +195,15 @@ - (void)testBitfields { unsigned g : 10; unsigned h : 15; }; - CDParseType *type = [CDTypeParser typeForEncoding:@encode(struct BitfieldTest)]; - XCTAssert([[type stringForVariableName:@"var"] isEqualToString:@"struct BitfieldTest { " - "unsigned int x0 : 18; unsigned char x1 : 2; " - "unsigned int x2 : 30; unsigned long x3 : 34; " - "unsigned char x4 : 1; unsigned __int128 x5 : 100; " - "unsigned short x6 : 10; unsigned short x7 : 15; " - "} var"]); + CDRecordType *type = [CDTypeParser typeForEncoding:@encode(struct BitfieldTest)]; + type.expand = YES; + NSLog(@"%@", [type stringForVariableName:@"var"]); +// XCTAssert([[type stringForVariableName:@"var"] isEqualToString:@"struct BitfieldTest { " +// "unsigned int x0 : 18; unsigned char x1 : 2; " +// "unsigned int x2 : 30; unsigned long x3 : 34; " +// "unsigned char x4 : 1; unsigned __int128 x5 : 100; " +// "unsigned short x6 : 10; unsigned short x7 : 15; " +// "} var"]); } - (void)testModifiedFields { From 307c9d334ae36fff4e360ed78a63f387a1166a43 Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Thu, 4 Jul 2024 17:20:14 +0800 Subject: [PATCH 13/15] Updates --- ClassDumpRuntime/Models/CDGenerationOptions.h | 2 ++ ClassDumpRuntime/Models/CDGenerationOptions.m | 1 + ClassDumpRuntime/Models/Reflections/CDClassModel.m | 2 +- ClassDumpRuntime/Models/Reflections/CDIvarModel.h | 4 ++-- ClassDumpRuntime/Models/Reflections/CDIvarModel.m | 12 ++++++------ .../Models/Reflections/CDPropertyModel.m | 2 +- 6 files changed, 13 insertions(+), 10 deletions(-) diff --git a/ClassDumpRuntime/Models/CDGenerationOptions.h b/ClassDumpRuntime/Models/CDGenerationOptions.h index 50cf2f6..16448d7 100644 --- a/ClassDumpRuntime/Models/CDGenerationOptions.h +++ b/ClassDumpRuntime/Models/CDGenerationOptions.h @@ -53,6 +53,8 @@ NS_REFINED_FOR_SWIFT @property (nonatomic) BOOL addIvarOffsetComments; +@property (nonatomic) BOOL expandIvarRecordTypeMembers; + @end NS_HEADER_AUDIT_END(nullability) diff --git a/ClassDumpRuntime/Models/CDGenerationOptions.m b/ClassDumpRuntime/Models/CDGenerationOptions.m index 30001dc..abd2ed9 100644 --- a/ClassDumpRuntime/Models/CDGenerationOptions.m +++ b/ClassDumpRuntime/Models/CDGenerationOptions.m @@ -20,6 +20,7 @@ - (id)copyWithZone:(NSZone *)zone { options.stripDtorMethod = _stripDtorMethod; options.addSymbolImageComments = _addSymbolImageComments; options.addIvarOffsetComments = _addIvarOffsetComments; + options.expandIvarRecordTypeMembers = _expandIvarRecordTypeMembers; return options; } diff --git a/ClassDumpRuntime/Models/Reflections/CDClassModel.m b/ClassDumpRuntime/Models/Reflections/CDClassModel.m index e2d12b5..24ac6bb 100644 --- a/ClassDumpRuntime/Models/Reflections/CDClassModel.m +++ b/ClassDumpRuntime/Models/Reflections/CDClassModel.m @@ -256,7 +256,7 @@ - (CDSemanticString *)semanticLinesWithOptions:(CDGenerationOptions *)options { [build appendString:@"\n" semanticType:CDSemanticTypeStandard]; } [build appendString:@" " semanticType:CDSemanticTypeStandard]; - [build appendSemanticString:[ivar semanticString]]; + [build appendSemanticString:[ivar semanticStringWithOptions:options]]; [build appendString:@";" semanticType:CDSemanticTypeStandard]; if (options.addIvarOffsetComments) { [build appendString:[NSString stringWithFormat:@" // offset: %"PRIdPTR"", ivar.offset] semanticType:CDSemanticTypeComment]; diff --git a/ClassDumpRuntime/Models/Reflections/CDIvarModel.h b/ClassDumpRuntime/Models/Reflections/CDIvarModel.h index 315df12..49da27c 100644 --- a/ClassDumpRuntime/Models/Reflections/CDIvarModel.h +++ b/ClassDumpRuntime/Models/Reflections/CDIvarModel.h @@ -10,7 +10,7 @@ #import #import - +#import NS_HEADER_AUDIT_BEGIN(nullability) @interface CDIvarModel : NSObject @@ -26,7 +26,7 @@ NS_HEADER_AUDIT_BEGIN(nullability) - (instancetype)initWithIvar:(Ivar)ivar; + (instancetype)modelWithIvar:(Ivar)ivar; -- (CDSemanticString *)semanticString; +- (CDSemanticString *)semanticStringWithOptions:(CDGenerationOptions *)options; @end diff --git a/ClassDumpRuntime/Models/Reflections/CDIvarModel.m b/ClassDumpRuntime/Models/Reflections/CDIvarModel.m index ebecf10..66b536c 100644 --- a/ClassDumpRuntime/Models/Reflections/CDIvarModel.m +++ b/ClassDumpRuntime/Models/Reflections/CDIvarModel.m @@ -21,16 +21,16 @@ - (instancetype)initWithIvar:(Ivar)ivar { _name = @(ivar_getName(ivar)); _type = [CDTypeParser typeForEncoding:(ivar_getTypeEncoding(ivar) ?: "")]; _offset = ivar_getOffset(ivar); - if ([_type isKindOfClass:[CDRecordType class]]) { - CDRecordType *recordType = (CDRecordType *)_type; - recordType.indentLevel = 1; - recordType.expand = YES; - } } return self; } -- (CDSemanticString *)semanticString { +- (CDSemanticString *)semanticStringWithOptions:(CDGenerationOptions *)options { + if ([self.type isKindOfClass:[CDRecordType class]] && options.expandIvarRecordTypeMembers) { + CDRecordType *recordType = (CDRecordType *)self.type; + recordType.indentLevel = 1; + recordType.expand = YES; + } return [self.type semanticStringForVariableName:self.name]; } diff --git a/ClassDumpRuntime/Models/Reflections/CDPropertyModel.m b/ClassDumpRuntime/Models/Reflections/CDPropertyModel.m index 49ed212..7161d9a 100644 --- a/ClassDumpRuntime/Models/Reflections/CDPropertyModel.m +++ b/ClassDumpRuntime/Models/Reflections/CDPropertyModel.m @@ -101,7 +101,7 @@ - (instancetype)initWithProperty:(objc_property_t)property isClass:(BOOL)isClass attributeName = @"copy"; break; case '&': - attributeName = @"retain"; + attributeName = @"strong"; break; case 'D': isDynamic = YES; From ec0a8f9deead558930f92d90cdf5e72391c5ed98 Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Sat, 22 Feb 2025 00:17:24 +0800 Subject: [PATCH 14/15] Complete expandIvarRecordTypeMembers option --- .../Models/ParseTypes/CDRecordType.m | 14 +++++++ ClassDumpRuntimeTests/CDParseAdvancedTests.m | 41 +++++++++++++++---- 2 files changed, 47 insertions(+), 8 deletions(-) diff --git a/ClassDumpRuntime/Models/ParseTypes/CDRecordType.m b/ClassDumpRuntime/Models/ParseTypes/CDRecordType.m index b1392ba..febb1d2 100644 --- a/ClassDumpRuntime/Models/ParseTypes/CDRecordType.m +++ b/ClassDumpRuntime/Models/ParseTypes/CDRecordType.m @@ -96,4 +96,18 @@ - (NSString *)debugDescription { [self class], self, [self modifiersString], self.name, self.isUnion ? @"YES" : @"NO", self.fields.debugDescription]; } +- (void)setExpand:(BOOL)expand { + _expand = expand; + + if (self.fields) { + for (CDVariableModel *variableModel in self.fields) { + if ([variableModel.type isKindOfClass:[CDRecordType class]]) { + CDRecordType *recordType = (CDRecordType *)variableModel.type; + recordType.indentLevel = self.indentLevel + 1; + recordType.expand = expand; + } + } + } +} + @end diff --git a/ClassDumpRuntimeTests/CDParseAdvancedTests.m b/ClassDumpRuntimeTests/CDParseAdvancedTests.m index 1309e52..e6c6d5a 100644 --- a/ClassDumpRuntimeTests/CDParseAdvancedTests.m +++ b/ClassDumpRuntimeTests/CDParseAdvancedTests.m @@ -194,16 +194,41 @@ - (void)testBitfields { unsigned __int128 f : 100; unsigned g : 10; unsigned h : 15; + struct BitfieldTestB { + unsigned a : 18; + unsigned b : 2; + unsigned c : 30; + unsigned long d : 34; + unsigned e : 1; + unsigned __int128 f : 100; + unsigned g : 10; + unsigned h : 15; + } nested; }; - CDRecordType *type = [CDTypeParser typeForEncoding:@encode(struct BitfieldTest)]; + CDRecordType *type = (CDRecordType *)[CDTypeParser typeForEncoding:@encode(struct BitfieldTest)]; type.expand = YES; - NSLog(@"%@", [type stringForVariableName:@"var"]); -// XCTAssert([[type stringForVariableName:@"var"] isEqualToString:@"struct BitfieldTest { " -// "unsigned int x0 : 18; unsigned char x1 : 2; " -// "unsigned int x2 : 30; unsigned long x3 : 34; " -// "unsigned char x4 : 1; unsigned __int128 x5 : 100; " -// "unsigned short x6 : 10; unsigned short x7 : 15; " -// "} var"]); + NSString *expected = + @"struct BitfieldTest { \n"\ + " unsigned int x0 : 18; \n"\ + " unsigned char x1 : 2; \n"\ + " unsigned int x2 : 30; \n"\ + " unsigned long x3 : 34; \n"\ + " unsigned char x4 : 1; \n"\ + " unsigned __int128 x5 : 100; \n"\ + " unsigned short x6 : 10; \n"\ + " unsigned short x7 : 15; \n"\ + " struct BitfieldTestB { \n"\ + " unsigned int x0 : 18; \n"\ + " unsigned char x1 : 2; \n"\ + " unsigned int x2 : 30; \n"\ + " unsigned long x3 : 34; \n"\ + " unsigned char x4 : 1; \n"\ + " unsigned __int128 x5 : 100; \n"\ + " unsigned short x6 : 10; \n"\ + " unsigned short x7 : 15; \n"\ + " } x8; \n"\ + "} var"; + XCTAssert([[type stringForVariableName:@"var"] isEqualToString:expected]); } - (void)testModifiedFields { From 121b68021175d8fd25359cf72e744c5a6213909d Mon Sep 17 00:00:00 2001 From: Mx-Iris <61279231+Mx-Iris@users.noreply.github.com> Date: Sun, 9 Mar 2025 02:05:53 +0800 Subject: [PATCH 15/15] Update Swift Redefine type --- ClassDumpRuntimeSwift/CDGenerationOptions.swift | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/ClassDumpRuntimeSwift/CDGenerationOptions.swift b/ClassDumpRuntimeSwift/CDGenerationOptions.swift index f9b8010..d9375fe 100644 --- a/ClassDumpRuntimeSwift/CDGenerationOptions.swift +++ b/ClassDumpRuntimeSwift/CDGenerationOptions.swift @@ -10,6 +10,7 @@ public struct CDGenerationOptions: Codable, Hashable, Identifiable { public var stripDtorMethod: Bool public var addSymbolImageComments: Bool public var addIvarOffsetComments: Bool + public var expandIvarRecordTypeMembers: Bool public var id: Self { self } public init( @@ -20,7 +21,8 @@ public struct CDGenerationOptions: Codable, Hashable, Identifiable { stripCtorMethod: Bool = false, stripDtorMethod: Bool = false, addSymbolImageComments: Bool = false, - addIvarOffsetComments: Bool = false + addIvarOffsetComments: Bool = false, + expandIvarRecordTypeMembers: Bool = false ) { self.stripProtocolConformance = stripProtocolConformance self.stripOverrides = stripOverrides @@ -30,6 +32,7 @@ public struct CDGenerationOptions: Codable, Hashable, Identifiable { self.stripDtorMethod = stripDtorMethod self.addSymbolImageComments = addSymbolImageComments self.addIvarOffsetComments = addIvarOffsetComments + self.expandIvarRecordTypeMembers = expandIvarRecordTypeMembers } } @@ -46,6 +49,7 @@ extension CDGenerationOptions: ReferenceConvertible { options.stripDtorMethod = stripDtorMethod options.addSymbolImageComments = addSymbolImageComments options.addIvarOffsetComments = addIvarOffsetComments + options.expandIvarRecordTypeMembers = expandIvarRecordTypeMembers return options } @@ -58,7 +62,8 @@ extension CDGenerationOptions: ReferenceConvertible { stripCtorMethod: source.stripCtorMethod, stripDtorMethod: source.stripDtorMethod, addSymbolImageComments: source.addSymbolImageComments, - addIvarOffsetComments: source.addIvarOffsetComments + addIvarOffsetComments: source.addIvarOffsetComments, + expandIvarRecordTypeMembers: source.expandIvarRecordTypeMembers ) }