mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-30 20:34:04 -04:00 
			
		
		
		
	added files via upload
This commit is contained in:
		
							
								
								
									
										112
									
								
								Tweaks/FLEX/GlobalStateExplorers/FLEXObjectRef.m
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								Tweaks/FLEX/GlobalStateExplorers/FLEXObjectRef.m
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,112 @@ | ||||
| // | ||||
| //  FLEXObjectRef.m | ||||
| //  FLEX | ||||
| // | ||||
| //  Created by Tanner Bennett on 7/24/18. | ||||
| //  Copyright (c) 2020 FLEX Team. All rights reserved. | ||||
| // | ||||
|  | ||||
| #import "FLEXObjectRef.h" | ||||
| #import "FLEXRuntimeUtility.h" | ||||
| #import "NSArray+FLEX.h" | ||||
|  | ||||
| @interface FLEXObjectRef () { | ||||
|     /// Used to retain the object if desired | ||||
|     id _retainer; | ||||
| } | ||||
| @property (nonatomic, readonly) BOOL wantsSummary; | ||||
| @end | ||||
|  | ||||
| @implementation FLEXObjectRef | ||||
| @synthesize summary = _summary; | ||||
|  | ||||
| + (instancetype)unretained:(__unsafe_unretained id)object { | ||||
|     return [self referencing:object showSummary:YES retained:NO]; | ||||
| } | ||||
|  | ||||
| + (instancetype)unretained:(__unsafe_unretained id)object ivar:(NSString *)ivarName { | ||||
|     return [[self alloc] initWithObject:object ivarName:ivarName showSummary:YES retained:NO]; | ||||
| } | ||||
|  | ||||
| + (instancetype)retained:(id)object { | ||||
|     return [self referencing:object showSummary:YES retained:YES]; | ||||
| } | ||||
|  | ||||
| + (instancetype)retained:(id)object ivar:(NSString *)ivarName { | ||||
|     return [[self alloc] initWithObject:object ivarName:ivarName showSummary:YES retained:YES]; | ||||
| } | ||||
|  | ||||
| + (instancetype)referencing:(__unsafe_unretained id)object retained:(BOOL)retain { | ||||
|     return retain ? [self retained:object] : [self unretained:object]; | ||||
| } | ||||
|  | ||||
| + (instancetype)referencing:(__unsafe_unretained id)object ivar:(NSString *)ivarName retained:(BOOL)retain { | ||||
|     return retain ? [self retained:object ivar:ivarName] : [self unretained:object ivar:ivarName]; | ||||
| } | ||||
|  | ||||
| + (instancetype)referencing:(__unsafe_unretained id)object showSummary:(BOOL)showSummary retained:(BOOL)retain { | ||||
|     return [[self alloc] initWithObject:object ivarName:nil showSummary:showSummary retained:retain]; | ||||
| } | ||||
|  | ||||
| + (NSArray<FLEXObjectRef *> *)referencingAll:(NSArray *)objects retained:(BOOL)retain { | ||||
|     return [objects flex_mapped:^id(id obj, NSUInteger idx) { | ||||
|         return [self referencing:obj showSummary:YES retained:retain]; | ||||
|     }]; | ||||
| } | ||||
|  | ||||
| + (NSArray<FLEXObjectRef *> *)referencingClasses:(NSArray<Class> *)classes { | ||||
|     return [classes flex_mapped:^id(id obj, NSUInteger idx) { | ||||
|         return [self referencing:obj showSummary:NO retained:NO]; | ||||
|     }]; | ||||
| } | ||||
|  | ||||
| - (id)initWithObject:(__unsafe_unretained id)object | ||||
|             ivarName:(NSString *)ivar | ||||
|          showSummary:(BOOL)showSummary | ||||
|             retained:(BOOL)retain { | ||||
|     self = [super init]; | ||||
|     if (self) { | ||||
|         _object = object; | ||||
|         _wantsSummary = showSummary; | ||||
|          | ||||
|         if (retain) { | ||||
|             _retainer = object; | ||||
|         } | ||||
|  | ||||
|         NSString *class = [FLEXRuntimeUtility safeClassNameForObject:object]; | ||||
|         if (ivar) { | ||||
|             _reference = [NSString stringWithFormat:@"%@ %@", class, ivar]; | ||||
|         } else if (showSummary) { | ||||
|             _reference = [NSString stringWithFormat:@"%@ %p", class, object]; | ||||
|         } else { | ||||
|             _reference = class; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     return self; | ||||
| } | ||||
|  | ||||
| - (NSString *)summary { | ||||
|     if (self.wantsSummary) { | ||||
|         if (!_summary) { | ||||
|             _summary = [FLEXRuntimeUtility summaryForObject:self.object]; | ||||
|         } | ||||
|          | ||||
|         return _summary; | ||||
|     } | ||||
|     else { | ||||
|         return nil; | ||||
|     } | ||||
| } | ||||
|  | ||||
| - (void)retainObject { | ||||
|     if (!_retainer) { | ||||
|         _retainer = _object; | ||||
|     } | ||||
| } | ||||
|  | ||||
| - (void)releaseObject { | ||||
|     _retainer = nil; | ||||
| } | ||||
|  | ||||
| @end | ||||
		Reference in New Issue
	
	Block a user
	 Balackburn
					Balackburn