blob: 917098ff1e405693ec1909ddbf90590f2406c3e9 [file] [log] [blame]
/**
* Copyright 2018 Alibaba Group
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#import <Foundation/Foundation.h>
#define PT_1(a) [[EBTaffyTuple alloc] initWithValues:(__strong id*)&a, nil]
#define PT_2(a,b) [[EBTaffyTuple alloc] initWithValues:(__strong id*)&a, (__strong id*)&b, nil]
#define PT_3(a,b,c) [[EBTaffyTuple alloc] initWithValues:(__strong id*)&a, (__strong id*)&b, (__strong id*)&c, nil]
#define PT_4(a,b,c,d) [[EBTaffyTuple alloc] initWithValues:(__strong id*)&a, (__strong id*)&b, (__strong id*)&c, (__strong id*)&d, nil]
#define PT_5(a,b,c,d,e) [[EBTaffyTuple alloc] initWithValues:(__strong id*)&a, (__strong id*)&b, (__strong id*)&c, (__strong id*)&d, (__strong id*)&e, nil]
#define PT_6(a,b,c,d,e,f) [[EBTaffyTuple alloc] initWithValues:(__strong id*)&a, (__strong id*)&b, (__strong id*)&c, (__strong id*)&d, (__strong id*)&e, (__strong id*)&f, nil]
#define PT_7(a,b,c,d,e,f,g) [[EBTaffyTuple alloc] initWithValues:(__strong id*)&a, (__strong id*)&b, (__strong id*)&c, (__strong id*)&d, (__strong id*)&e, (__strong id*)&f, (__strong id*)&g, nil]
#define PT_8(a,b,c,d,e,f,g,h) [[EBTaffyTuple alloc] initWithValues:(__strong id*)&a, (__strong id*)&b, (__strong id*)&c, (__strong id*)&d, (__strong id*)&e, (__strong id*)&f, (__strong id*)&g, (__strong id*)&h, nil]
#define PT_9(a,b,c,d,e,f,g,h,i) [[EBTaffyTuple alloc] initWithValues:(__strong id*)&a, (__strong id*)&b, (__strong id*)&c, (__strong id*)&d, (__strong id*)&e, (__strong id*)&f, (__strong id*)&g, (__strong id*)&h, (__strong id*)&i, nil]
#define PT_10(a,b,c,d,e,f,g,h,i,j) [[EBTaffyTuple alloc] initWithValues:(__strong id*)&a, (__strong id*)&b, (__strong id*)&c, (__strong id*)&d, (__strong id*)&e, (__strong id*)&f, (__strong id*)&g, (__strong id*)&h, (__strong id*)&i, (__strong id*)&j, nil]
#define GET_PT_MACRO(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, NAME, ...) NAME
#define _(...) GET_PT_MACRO(__VA_ARGS__, PT_10, PT_9, PT_8, PT_7, PT_6, PT_5, PT_4, PT_3, PT_2, PT_1)(__VA_ARGS__)
@protocol EBTaffyUnpacker <NSObject>
- (void)wxtf_unpack:(NSEnumerator *)enumerator;
@end
@protocol EBTaffyPacker <NSObject>
- (NSEnumerator *)wxtf_pack;
@end
@interface EBTaffyTuple : NSObject
- (instancetype)initWithValues:(__strong id*)arg, ...;
- (void)unpackFrom:(id <EBTaffyPacker>)packer;
@end