Visitar URL original
Enum support in Pigeon (#331) · creatorpiyush/packages@27246fe · GitHub
Skip to content

Commit 27246fe

Browse files
authored
Enum support in Pigeon (flutter#331)
1 parent 3f0527c commit 27246fe

22 files changed

Lines changed: 765 additions & 199 deletions

File tree

‎packages/pigeon/e2e_tests/test_objc/ios/Runner/MyApi.m‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,14 @@
66
#import <Flutter/Flutter.h>
77

88
@implementation MyApi
9-
- (ACSearchReply*)search:(ACSearchRequest*)input error:(FlutterError**)error {
9+
- (ACSearchReply *)search:(ACSearchRequest *)input error:(FlutterError **)error {
1010
if ([input.query isEqualToString:@"error"]) {
1111
*error = [FlutterError errorWithCode:@"somecode" message:@"somemessage" details:nil];
1212
return nil;
1313
} else {
14-
ACSearchReply* reply = [[ACSearchReply alloc] init];
14+
ACSearchReply *reply = [[ACSearchReply alloc] init];
1515
reply.result = [NSString stringWithFormat:@"Hello %@!", input.query];
16+
reply.state = ACRequestStateSuccess;
1617
return reply;
1718
}
1819
}

‎packages/pigeon/e2e_tests/test_objc/ios/Runner/MyNestedApi.m‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ @implementation MyNestedApi
88
- (ACSearchReply *)search:(ACNested *)input error:(FlutterError **)error {
99
ACSearchReply *reply = [[ACSearchReply alloc] init];
1010
reply.result = [NSString stringWithFormat:@"Hello %@!", input.request.query];
11+
reply.state = ACRequestStateSuccess;
1112
return reply;
1213
}
1314
@end

‎packages/pigeon/e2e_tests/test_objc/ios/Runner/dartle.h‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
// Autogenerated from Pigeon (v0.1.2), do not edit directly.
5+
// Autogenerated from Pigeon (v0.2.1), do not edit directly.
66
// See also: https://pub.dev/packages/pigeon
77
#import <Foundation/Foundation.h>
88
@protocol FlutterBinaryMessenger;
@@ -11,13 +11,20 @@
1111

1212
NS_ASSUME_NONNULL_BEGIN
1313

14+
typedef NS_ENUM(NSUInteger, ACRequestState) {
15+
ACRequestStatePending = 0,
16+
ACRequestStateSuccess = 1,
17+
ACRequestStateFailure = 2,
18+
};
19+
1420
@class ACSearchReply;
1521
@class ACSearchRequest;
1622
@class ACNested;
1723

1824
@interface ACSearchReply : NSObject
1925
@property(nonatomic, copy, nullable) NSString *result;
2026
@property(nonatomic, copy, nullable) NSString *error;
27+
@property(nonatomic, assign) ACRequestState state;
2128
@end
2229

2330
@interface ACSearchRequest : NSObject
@@ -32,7 +39,8 @@ NS_ASSUME_NONNULL_BEGIN
3239

3340
@interface ACFlutterSearchApi : NSObject
3441
- (instancetype)initWithBinaryMessenger:(id<FlutterBinaryMessenger>)binaryMessenger;
35-
- (void)search:(ACSearchRequest *)input completion:(void (^)(ACSearchReply *, NSError *))completion;
42+
- (void)search:(ACSearchRequest *)input
43+
completion:(void (^)(ACSearchReply *, NSError *_Nullable))completion;
3644
@end
3745
@protocol ACNestedApi
3846
- (nullable ACSearchReply *)search:(ACNested *)input error:(FlutterError *_Nullable *_Nonnull)error;
@@ -42,6 +50,7 @@ extern void ACNestedApiSetup(id<FlutterBinaryMessenger> binaryMessenger,
4250
id<ACNestedApi> _Nullable api);
4351

4452
@protocol ACApi
53+
- (void)initialize:(FlutterError *_Nullable *_Nonnull)error;
4554
- (nullable ACSearchReply *)search:(ACSearchRequest *)input
4655
error:(FlutterError *_Nullable *_Nonnull)error;
4756
@end

‎packages/pigeon/e2e_tests/test_objc/ios/Runner/dartle.m‎

Lines changed: 34 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
44

5-
// Autogenerated from Pigeon (v0.1.2), do not edit directly.
5+
// Autogenerated from Pigeon (v0.2.1), do not edit directly.
66
// See also: https://pub.dev/packages/pigeon
77
#import "dartle.h"
88
#import <Flutter/Flutter.h>
@@ -11,17 +11,19 @@
1111
#error File requires ARC to be enabled.
1212
#endif
1313

14-
static NSDictionary *wrapResult(NSDictionary *result, FlutterError *error) {
14+
static NSDictionary<NSString *, id> *wrapResult(NSDictionary *result, FlutterError *error) {
1515
NSDictionary *errorDict = (NSDictionary *)[NSNull null];
1616
if (error) {
17-
errorDict = [NSDictionary
18-
dictionaryWithObjectsAndKeys:(error.code ? error.code : [NSNull null]), @"code",
19-
(error.message ? error.message : [NSNull null]), @"message",
20-
(error.details ? error.details : [NSNull null]), @"details",
21-
nil];
17+
errorDict = @{
18+
@"code" : (error.code ? error.code : [NSNull null]),
19+
@"message" : (error.message ? error.message : [NSNull null]),
20+
@"details" : (error.details ? error.details : [NSNull null]),
21+
};
2222
}
23-
return [NSDictionary dictionaryWithObjectsAndKeys:(result ? result : [NSNull null]), @"result",
24-
errorDict, @"error", nil];
23+
return @{
24+
@"result" : (result ? result : [NSNull null]),
25+
@"error" : errorDict,
26+
};
2527
}
2628

2729
@interface ACSearchReply ()
@@ -48,12 +50,14 @@ + (ACSearchReply *)fromMap:(NSDictionary *)dict {
4850
if ((NSNull *)result.error == [NSNull null]) {
4951
result.error = nil;
5052
}
53+
result.state = (int)dict[@"state"];
5154
return result;
5255
}
5356
- (NSDictionary *)toMap {
54-
return [NSDictionary
55-
dictionaryWithObjectsAndKeys:(self.result ? self.result : [NSNull null]), @"result",
56-
(self.error ? self.error : [NSNull null]), @"error", nil];
57+
return [NSDictionary dictionaryWithObjectsAndKeys:(self.result ? self.result : [NSNull null]),
58+
@"result",
59+
(self.error ? self.error : [NSNull null]),
60+
@"error", @(self.state), @"state", nil];
5761
}
5862
@end
5963

@@ -106,13 +110,13 @@ @implementation ACFlutterSearchApi
106110
- (instancetype)initWithBinaryMessenger:(NSObject<FlutterBinaryMessenger> *)binaryMessenger {
107111
self = [super init];
108112
if (self) {
109-
self.binaryMessenger = binaryMessenger;
113+
_binaryMessenger = binaryMessenger;
110114
}
111115
return self;
112116
}
113117

114118
- (void)search:(ACSearchRequest *)input
115-
completion:(void (^)(ACSearchReply *, NSError *))completion {
119+
completion:(void (^)(ACSearchReply *, NSError *_Nullable))completion {
116120
FlutterBasicMessageChannel *channel = [FlutterBasicMessageChannel
117121
messageChannelWithName:@"dev.flutter.pigeon.FlutterSearchApi.search"
118122
binaryMessenger:self.binaryMessenger];
@@ -132,8 +136,8 @@ void ACNestedApiSetup(id<FlutterBinaryMessenger> binaryMessenger, id<ACNestedApi
132136
binaryMessenger:binaryMessenger];
133137
if (api) {
134138
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
135-
FlutterError *error;
136139
ACNested *input = [ACNested fromMap:message];
140+
FlutterError *error;
137141
ACSearchReply *output = [api search:input error:&error];
138142
callback(wrapResult([output toMap], error));
139143
}];
@@ -145,12 +149,26 @@ void ACNestedApiSetup(id<FlutterBinaryMessenger> binaryMessenger, id<ACNestedApi
145149
void ACApiSetup(id<FlutterBinaryMessenger> binaryMessenger, id<ACApi> api) {
146150
{
147151
FlutterBasicMessageChannel *channel =
148-
[FlutterBasicMessageChannel messageChannelWithName:@"dev.flutter.pigeon.Api.search"
152+
[FlutterBasicMessageChannel messageChannelWithName:@"dev.flutter.pigeon.Api.initialize"
149153
binaryMessenger:binaryMessenger];
150154
if (api) {
151155
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
152156
FlutterError *error;
157+
[api initialize:&error];
158+
callback(wrapResult(nil, error));
159+
}];
160+
} else {
161+
[channel setMessageHandler:nil];
162+
}
163+
}
164+
{
165+
FlutterBasicMessageChannel *channel =
166+
[FlutterBasicMessageChannel messageChannelWithName:@"dev.flutter.pigeon.Api.search"
167+
binaryMessenger:binaryMessenger];
168+
if (api) {
169+
[channel setMessageHandler:^(id _Nullable message, FlutterReply callback) {
153170
ACSearchRequest *input = [ACSearchRequest fromMap:message];
171+
FlutterError *error;
154172
ACSearchReply *output = [api search:input error:&error];
155173
callback(wrapResult([output toMap], error));
156174
}];

0 commit comments

Comments
 (0)