hank
2019-01-22 ab662912a378edb0878538b40a531434dbbe6792
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/*
 * Copyright (C) 2017 Twitter, Inc.
 *
 * 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 <TwitterCore/TWTRConstants.h>
 
#ifdef __OBJC__
 
#define TWTRParameterAssertSettingError(condition, errorPointer)                                                                                                                                                 \
    NSParameterAssert((condition));                                                                                                                                                                              \
    if (!(condition)) {                                                                                                                                                                                          \
        NSLog(@"[TwitterKit] %@ Invalid parameter not satisfying: %s", NSStringFromSelector(_cmd), #condition);                                                                                                  \
        if (errorPointer != NULL) {                                                                                                                                                                              \
            *errorPointer = [NSError errorWithDomain:TWTRErrorDomain code:TWTRErrorCodeMissingParameter userInfo:@{NSLocalizedDescriptionKey: [NSString stringWithFormat:@"Missing parameter %s", #condition]}]; \
        }                                                                                                                                                                                                        \
    }
 
#define TWTRParameterAssertOrReturnValue(condition, returnValue)                                                \
    NSParameterAssert((condition));                                                                             \
    if (!(condition)) {                                                                                         \
        NSLog(@"[TwitterKit] %@ Invalid parameter not satisfying: %s", NSStringFromSelector(_cmd), #condition); \
        return returnValue;                                                                                     \
    }
 
#define TWTRParameterAssertOrReturnNil(condition)                                                               \
    NSParameterAssert((condition));                                                                             \
    if (!(condition)) {                                                                                         \
        NSLog(@"[TwitterKit] %@ Invalid parameter not satisfying: %s", NSStringFromSelector(_cmd), #condition); \
        return nil;                                                                                             \
    }
 
#define TWTRParameterAssertOrReturn(condition)                                                                  \
    NSParameterAssert((condition));                                                                             \
    if (!(condition)) {                                                                                         \
        NSLog(@"[TwitterKit] %@ Invalid parameter not satisfying: %s", NSStringFromSelector(_cmd), #condition); \
        return;                                                                                                 \
    }
 
#define TWTRAssertMainThread()                                                                         \
    if (![NSThread isMainThread]) {                                                                    \
        [NSException raise:NSInternalInconsistencyException format:@"Need to be on the main thread."]; \
        return;                                                                                        \
    }
 
// Check a single argument, and call a completion block if it's missing
#define TWTRCheckArgumentWithCompletion(condition, completion)     \
    TWTRParameterAssertOrReturn(completion);                       \
    NSError *parameterError;                                       \
    TWTRParameterAssertSettingError((condition), &parameterError); \
    if (parameterError) {                                          \
        completion(nil, nil, parameterError);                      \
        return;                                                    \
    }
 
#define TWTRCheckArgumentWithCompletion2(condition, completion)    \
    TWTRParameterAssertOrReturn(completion);                       \
    NSError *parameterError;                                       \
    TWTRParameterAssertSettingError((condition), &parameterError); \
    if (parameterError) {                                          \
        completion(nil, parameterError);                           \
        return;                                                    \
    }
 
#endif