mirror of
				https://github.com/SoPat712/YTLitePlus.git
				synced 2025-10-31 12:54:13 -04:00 
			
		
		
		
	added files via upload
This commit is contained in:
		| @@ -0,0 +1,80 @@ | ||||
| // | ||||
| //  FLEXClassBuilder.h | ||||
| //  FLEX | ||||
| // | ||||
| //  Derived from MirrorKit. | ||||
| //  Created by Tanner on 7/3/15. | ||||
| //  Copyright (c) 2020 FLEX Team. All rights reserved. | ||||
| // | ||||
|  | ||||
| #import <Foundation/Foundation.h> | ||||
| @class FLEXIvarBuilder, FLEXMethodBase, FLEXProperty, FLEXProtocol; | ||||
|  | ||||
|  | ||||
| #pragma mark FLEXClassBuilder | ||||
| @interface FLEXClassBuilder : NSObject | ||||
|  | ||||
| @property (nonatomic, readonly) Class workingClass; | ||||
|  | ||||
| /// Begins constructing a class with the given name. | ||||
| /// | ||||
| /// This new class will implicitly inherits from \c NSObject with \c 0 extra bytes. | ||||
| /// Classes created this way must be registered with \c -registerClass before being used. | ||||
| + (instancetype)allocateClass:(NSString *)name; | ||||
| /// Begins constructing a class with the given name and superclass. | ||||
| /// @discussion Calls \c -allocateClass:superclass:extraBytes: with \c 0 extra bytes. | ||||
| /// Classes created this way must be registered with \c -registerClass before being used. | ||||
| + (instancetype)allocateClass:(NSString *)name superclass:(Class)superclass; | ||||
| /// Begins constructing a new class object with the given name and superclass. | ||||
| /// @discussion Pass \c nil to \e superclass to create a new root class. | ||||
| /// Classes created this way must be registered with \c -registerClass before being used. | ||||
| + (instancetype)allocateClass:(NSString *)name superclass:(Class)superclass extraBytes:(size_t)bytes; | ||||
| /// Begins constructing a new root class object with the given name and \c 0 extra bytes. | ||||
| /// @discussion Classes created this way must be registered with \c -registerClass before being used. | ||||
| + (instancetype)allocateRootClass:(NSString *)name; | ||||
| /// Use this to modify existing classes. @warning You cannot add instance variables to existing classes. | ||||
| + (instancetype)builderForClass:(Class)cls; | ||||
|  | ||||
| /// @return Any methods that failed to be added. | ||||
| - (NSArray<FLEXMethodBase *> *)addMethods:(NSArray<FLEXMethodBase *> *)methods; | ||||
| /// @return Any properties that failed to be added. | ||||
| - (NSArray<FLEXProperty *> *)addProperties:(NSArray<FLEXProperty *> *)properties; | ||||
| /// @return Any protocols that failed to be added. | ||||
| - (NSArray<FLEXProtocol *> *)addProtocols:(NSArray<FLEXProtocol *> *)protocols; | ||||
| /// @warning Adding Ivars to existing classes is not supported and will always fail. | ||||
| - (NSArray<FLEXIvarBuilder *> *)addIvars:(NSArray<FLEXIvarBuilder *> *)ivars; | ||||
|  | ||||
| /// Finalizes construction of a new class. | ||||
| /// @discussion Once a class is registered, instance variables cannot be added. | ||||
| /// @note Raises an exception if called on a previously registered class. | ||||
| - (Class)registerClass; | ||||
| /// Uses \c objc_lookupClass to determine if the working class is registered. | ||||
| @property (nonatomic, readonly) BOOL isRegistered; | ||||
|  | ||||
| @end | ||||
|  | ||||
|  | ||||
| #pragma mark FLEXIvarBuilder | ||||
| @interface FLEXIvarBuilder : NSObject | ||||
|  | ||||
| /// Consider using the \c FLEXIvarBuilderWithNameAndType() macro below.  | ||||
| /// @param name The name of the Ivar, such as \c \@"_value". | ||||
| /// @param size The size of the Ivar. Usually \c sizeof(type). For objects, this is \c sizeof(id). | ||||
| /// @param alignment The alignment of the Ivar. Usually \c log2(sizeof(type)). | ||||
| /// @param encoding The type encoding of the Ivar. For objects, this is \c \@(\@encode(id)), and for others it is \c \@(\@encode(type)). | ||||
| + (instancetype)name:(NSString *)name size:(size_t)size alignment:(uint8_t)alignment typeEncoding:(NSString *)encoding; | ||||
|  | ||||
| @property (nonatomic, readonly) NSString *name; | ||||
| @property (nonatomic, readonly) NSString *encoding; | ||||
| @property (nonatomic, readonly) size_t   size; | ||||
| @property (nonatomic, readonly) uint8_t  alignment; | ||||
|  | ||||
| @end | ||||
|  | ||||
|  | ||||
| #define FLEXIvarBuilderWithNameAndType(nameString, type) [FLEXIvarBuilder \ | ||||
|     name:nameString \ | ||||
|     size:sizeof(type) \ | ||||
|     alignment:log2(sizeof(type)) \ | ||||
|     typeEncoding:@(@encode(type)) \ | ||||
| ] | ||||
		Reference in New Issue
	
	Block a user
	 Balackburn
					Balackburn