Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: tools/immic/lib/src/plugins/shared.dart

Issue 2035023003: Remove service-compiler related code. (Closed) Base URL: git@github.com:dartino/sdk.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/immic/lib/src/plugins/objc.dart ('k') | tools/immic/lib/src/primitives.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file.
4
5 library immic.plugins.shared;
6
7 import 'package:strings/strings.dart' as strings;
8 import 'package:path/path.dart' show basename, basenameWithoutExtension;
9
10 import '../parser.dart';
11 export '../parser.dart';
12
13 abstract class CodeGenerationVisitor extends Visitor {
14 final String path;
15 final StringBuffer buffer = new StringBuffer();
16 HashMap<String, List<Type>> methodSignatures = {};
17
18 CodeGenerationVisitor(this.path);
19
20 String get libraryFile => basenameWithoutExtension(path);
21 String get libraryName => 'immi.$libraryFile';
22 String get baseName => camelize(libraryName);
23 String serviceName = 'ImmiServiceLayer';
24 String serviceFile = 'immi_service';
25 String serviceImplName = 'ImmiServiceImpl';
26 String serviceImplFile = 'immi_service_impl';
27 String serviceImplLib = 'immi_service_impl';
28 String immiGenPkg = 'package:immi';
29 String serviceGenPkg = 'package:service';
30
31 void write(String s) => buffer.write(s);
32 void writeln([String s = '']) => buffer.writeln(s);
33 void writeComma() => buffer.write(', ');
34
35 String camelize(String name) {
36 return strings.camelize(strings.underscore(name));
37 }
38
39 void forEachSlot(Struct node,
40 void sep(),
41 void f(Type slotType, String slotName)) {
42 bool first = true;
43 for (StructSlot slot in node.layout.slots) {
44 if (!first && sep != null) sep();
45 f(slot.slot.type, slot.slot.name);
46 first = false;
47 }
48 }
49
50 void forEachSlotAndMethod(Struct node,
51 void sep(),
52 void f(field, String name)) {
53 bool first = true;
54 for (StructSlot slot in node.layout.slots) {
55 if (!first && sep != null) sep();
56 f(slot.slot, slot.slot.name);
57 first = false;
58 }
59 for (Method method in node.methods) {
60 if (!first && sep != null) sep();
61 f(method, method.name);
62 first = false;
63 }
64 }
65
66 visit(Node node) => node.accept(this);
67
68 visitStruct(Struct node) {
69 // TODO(kasper): Stop ignoring this.
70 }
71
72 visitUnion(Union node) {
73 // TODO(kasper): Stop ignoring this.
74 }
75
76 visitImport(Import node) {
77 }
78
79 visitNodes(List<Node> nodes, String separatedBy(bool first)) {
80 bool first = true;
81 for (int i = 0; i < nodes.length; i++) {
82 write(separatedBy(first));
83 if (first) first = false;
84 visit(nodes[i]);
85 }
86 }
87
88 void collectMethodSignatures(Unit unit) {
89 for (var node in unit.structs) {
90 for (var method in node.methods) {
91 assert(method.returnType.isVoid);
92 String signature =
93 method.arguments.map((formal) => formal.type.identifier);
94 methodSignatures.putIfAbsent('$signature', () {
95 return method.arguments.map((formal) => formal.type);
96 });
97 }
98 }
99 }
100
101 String actionTypeSuffix(List<Type> types) {
102 if (types.isEmpty) return 'Void';
103 return types.map((Type type) => camelize(type.identifier)).join();
104 }
105
106 Iterable mapWithIndex(List list, f(int i, element)) {
107 int i = 0;
108 return list.map((e) => f(i++, e));
109 }
110 }
OLDNEW
« no previous file with comments | « tools/immic/lib/src/plugins/objc.dart ('k') | tools/immic/lib/src/primitives.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698