40 lines
1.9 KiB
Objective-C
Executable File
40 lines
1.9 KiB
Objective-C
Executable File
//
|
|
// FUKeysDefine.h
|
|
// FUAvatarSDK
|
|
//
|
|
// Created by ly-Mac on 2020/12/22.
|
|
//
|
|
#import "metamacros.h"
|
|
|
|
#define FUParamsKeysDefine(keyPreName,...) \
|
|
typedef NSString * keyPreName NS_STRING_ENUM; \
|
|
metamacro_foreach_cxt(params_key_define,,static keyPreName , __VA_ARGS__) \
|
|
static NSString *_##keyPreName##_constants_string = @"" #__VA_ARGS__; \
|
|
_FUParamsKeys_GenerateImplementation(keyPreName)
|
|
|
|
#define params_key_define(INDEX, CONTEXT, VAR) CONTEXT const VAR;
|
|
|
|
#define _FUParamsKeys_GenerateImplementation(keyPreName) \
|
|
static inline NSArray * keyPreName##AllKeys(){ \
|
|
static NSArray *_##keyPreName##AllKeys = NULL; \
|
|
static dispatch_once_t onceToken; \
|
|
dispatch_once(&onceToken, ^{ \
|
|
NSString *constantsString = _##keyPreName##_constants_string; \
|
|
constantsString = [[constantsString componentsSeparatedByCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] componentsJoinedByString:@""]; \
|
|
if ([constantsString hasSuffix:@","]) { \
|
|
constantsString = [constantsString substringToIndex:[constantsString length]-1]; \
|
|
} \
|
|
NSArray *stringPairs = [constantsString componentsSeparatedByString:@","]; \
|
|
NSMutableArray *keys = [NSMutableArray arrayWithCapacity:[stringPairs count]]; \
|
|
for (NSString *stringPair in stringPairs) { \
|
|
NSArray *labelAndValueString = [stringPair componentsSeparatedByString:@"="]; \
|
|
NSString *key = [labelAndValueString objectAtIndex:1]; \
|
|
key = [key stringByReplacingOccurrencesOfString:@"@\"" withString:@""]; \
|
|
key = [key stringByReplacingOccurrencesOfString:@"\"" withString:@""]; \
|
|
[keys addObject:key]; \
|
|
} \
|
|
_##keyPreName##AllKeys = [keys copy]; \
|
|
}); \
|
|
return _##keyPreName##AllKeys; \
|
|
}
|