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

Unified Diff: tools/servicec/lib/src/plugins/dart.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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/servicec/lib/src/plugins/cc.dart ('k') | tools/servicec/lib/src/plugins/java.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/servicec/lib/src/plugins/dart.dart
diff --git a/tools/servicec/lib/src/plugins/dart.dart b/tools/servicec/lib/src/plugins/dart.dart
deleted file mode 100644
index 28c3cb549a8946086b411e790cec7d6666168fb4..0000000000000000000000000000000000000000
--- a/tools/servicec/lib/src/plugins/dart.dart
+++ /dev/null
@@ -1,482 +0,0 @@
-// Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-
-library old_servicec.plugins.dart;
-
-import 'dart:core' hide Type;
-import 'dart:io' show Platform, File;
-
-import 'package:path/path.dart' show basenameWithoutExtension, join, dirname;
-import 'package:servicec/util.dart' as strings;
-
-import 'shared.dart';
-import '../emitter.dart';
-import '../struct_layout.dart';
-import '../primitives.dart' as primitives;
-
-const COPYRIGHT = """
-// Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE.md file.
-""";
-
-const int HEADER_SIZE = 56;
-
-const List<String> RESOURCES = const [
- "struct.dart",
-];
-
-void generate(String path,
- Unit unit,
- String resourcesDirectory,
- String outputDirectory) {
- _DartVisitor visitor = new _DartVisitor(path);
- visitor.visit(unit);
- String contents = visitor.buffer.toString();
- String directory = join(outputDirectory, 'dart');
- writeToFile(directory, path, contents, extension: 'dart');
-
- resourcesDirectory = join(resourcesDirectory, 'dart');
- for (String resource in RESOURCES) {
- String resourcePath = join(resourcesDirectory, resource);
- File file = new File(resourcePath);
- String contents = file.readAsStringSync();
- writeToFile(directory, resource, contents);
- }
-}
-
-class _DartVisitor extends CodeGenerationVisitor {
- final Set<Type> neededListTypes = new Set<Type>();
- final List<Method> methods = new List();
- _DartVisitor(String path) : super(path);
-
- static Map<String, String> _GETTERS = const {
- 'bool' : 'getUint8',
-
- 'uint8' : 'getUint8',
- 'uint16' : 'getUint16',
-
- 'int8' : 'getInt8',
- 'int16' : 'getInt16',
- 'int32' : 'getInt32',
- 'int64' : 'getInt64',
-
- 'float32' : 'getFloat32',
- 'float64' : 'getFloat64',
- };
-
- static Map<String, String> _SETTERS = const {
- 'bool' : 'setUint8',
-
- 'uint8' : 'setUint8',
- 'uint16' : 'setUint16',
-
- 'int8' : 'setInt8',
- 'int16' : 'setInt16',
- 'int32' : 'setInt32',
- 'int64' : 'setInt64',
-
- 'float32' : 'setFloat32',
- 'float64' : 'setFloat64',
- };
-
- visitUnit(Unit node) {
- writeln(COPYRIGHT);
-
- writeln('// Generated file. Do not edit.');
- writeln();
-
- String libraryName = basenameWithoutExtension(path);
- writeln('library $libraryName;');
- writeln();
-
- writeln('import "dart:dartino";');
- writeln('import "dart:dartino.ffi";');
- writeln('import "dart:dartino.service" as service;');
- if (node.structs.isNotEmpty) {
- writeln('import "struct.dart";');
- }
- writeln();
-
- writeln('final Channel _channel = new Channel();');
- writeln('final Port _port = new Port(_channel);');
- write('final ForeignFunction _postResult = ');
- writeln('ForeignLibrary.main.lookup("PostResultToService");');
-
- node.services.forEach(visit);
- node.structs.forEach(visit);
-
- for (Type listType in neededListTypes) {
- String name = listType.identifier;
- if (listType.isPrimitive) {
- int elementSize = primitives.size(listType.primitiveType);
- String getter = '\$segment.memory.${_GETTERS[name]}';
- String setter = '\$segment.memory.${_SETTERS[name]}';
- String offset = '\$offset + index * $elementSize';
-
- writeln();
- write('class _${name}List extends ListReader<');
- writeType(listType);
- write('> implements List<');
- writeType(listType);
- writeln('> {');
- write(' ');
- writeType(listType);
- writeln(' operator[](int index) => $getter($offset);');
- writeln('}');
-
- writeln();
- write('class _${name}BuilderList extends ListBuilder<');
- writeType(listType);
- write('> implements List<');
- writeType(listType);
- writeln('> {');
- write(' ');
- writeType(listType);
- writeln(' operator[](int index) => $getter($offset);');
- write(' void operator[]=(int index, ');
- writeType(listType);
- writeln(' value) { $setter($offset, value); }');
- writeln('}');
- } else {
- Struct element = listType.resolved;
- StructLayout elementLayout = element.layout;
- int elementSize = elementLayout.size;
-
- writeln();
- write('class _${name}List extends ListReader<$name>');
- writeln(' implements List<$name> {');
- writeln(' $name operator[](int index) => '
- 'readListElement(new $name(), index, $elementSize);');
- writeln('}');
-
- writeln();
- write('class _${name}BuilderList extends ListBuilder<${name}Builder>');
- writeln(' implements List<${name}Builder> {');
- writeln(' ${name}Builder operator[](int index) => '
- 'readListElement(new ${name}Builder(), index, $elementSize);');
- writeln('}');
- }
- }
- }
-
- writeImplCall(Method method) {
- write('_impl.${method.name}(');
- if (method.inputKind == InputKind.STRUCT) {
- write('getRoot(new ');
- writeType(method.arguments.single.type);
- write('(), request)');
- } else {
- assert(method.inputKind == InputKind.PRIMITIVES);
- StructLayout inputLayout = method.inputPrimitiveStructLayout;
- for (int i = 0; i < method.arguments.length; i++) {
- if (i != 0) write(', ');
- Formal argument = method.arguments[i];
- String getter = _GETTERS[argument.type.identifier];
- int offset = inputLayout[argument].offset + HEADER_SIZE;
- write('request.$getter($offset)');
- }
- }
- }
-
- visitService(Service node) {
- String serviceName = node.name;
-
- writeln();
- writeln('bool _terminated = false;');
- writeln('$serviceName _impl;');
-
- writeln();
- writeln('abstract class $serviceName {');
-
- node.methods.forEach(visit);
-
- writeln();
- writeln(' static void initialize($serviceName impl) {');
- writeln(' if (_impl != null) {');
- writeln(' throw new UnsupportedError("Cannot re-initialize");');
- writeln(' }');
- writeln(' _impl = impl;');
- writeln(' _terminated = false;');
- writeln(' service.register("$serviceName", _port);');
- writeln(' }');
-
- writeln();
- writeln(' static bool hasNextEvent() {');
- writeln(' return !_terminated;');
- writeln(' }');
-
-
- List<String> methodIds = methods.map((method) =>
- '_${strings.underscore(method.name).toUpperCase()}_METHOD_ID')
- .toList();
-
- writeln();
- writeln(' static void handleNextEvent() {');
- writeln(' var request = _channel.receive();');
- writeln(' switch (request.getInt32(0)) {');
- writeln(' case _TERMINATE_METHOD_ID:');
- writeln(' _terminated = true;');
- writeln(' _postResult.vcall\$1(request);');
- writeln(' break;');
-
- String setInt32() => 'request.setInt32($HEADER_SIZE, result)';
- String setInt64() => 'request.setInt64($HEADER_SIZE, result)';
-
- for (int i = 0; i < methods.length; ++i) {
- Method method = methods[i];
- writeln(' case ${methodIds[i]}:');
- if (method.returnType.isVoid) {
- write(' ');
- writeImplCall(method);
- writeln(');');
- } else if (method.returnType.isPrimitive) {
- write(' var result = ');
- writeImplCall(method);
- writeln(');');
- writeln(' ${setInt32()};');
- } else {
- Struct resultType = method.returnType.resolved;
- StructLayout resultLayout = new StructLayout(resultType);
- int size = resultLayout.size;
- writeln(' MessageBuilder mb = new MessageBuilder(${size + 8});');
- String builderName = '${method.returnType.identifier}Builder';
- writeln(' $builderName builder = '
- 'mb.initRoot(new $builderName(), $size);');
- write(' ');
- writeImplCall(method);
- write('${method.arguments.length > 0 ? ", " : ""}builder');
- writeln(');');
- writeln(' var result = getResultMessage(builder);');
- writeln(' ${setInt64()};');
- }
- writeln(' _postResult.vcall\$1(request);');
- writeln(' break;');
- }
- writeln(' default:');
- writeln(' throw new UnsupportedError("Unknown method");');
- writeln(' }');
- writeln(' }');
-
- writeln();
- int nextId = 0;
- writeln(' static const int _TERMINATE_METHOD_ID = ${nextId++};');
- for (String id in methodIds) {
- writeln(' static const int $id = ${nextId++};');
- }
-
- writeln('}');
- }
-
- visitStruct(Struct node) {
- StructLayout layout = node.layout;
-
- writeln();
- writeln('class ${node.name} extends Reader {');
- for (StructSlot slot in layout.slots) {
- String slotName = slot.slot.name;
- Type slotType = slot.slot.type;
-
- if (slot.isUnionSlot) {
- String camel = camelize(slotName);
- String tagName = slot.union.tag.name;
- int tag = slot.unionTag;
- writeln(' bool get is$camel => $tag == this.$tagName;');
- }
-
- if (slotType.isList) {
- write(' List<');
- writeType(slotType);
- write('> get $slotName => ');
- neededListTypes.add(slotType);
- writeln('readList(new _${slotType.identifier}List(), ${slot.offset});');
- } else if (slotType.isVoid) {
- // No getters for void slots.
- } else if (slotType.isString) {
- Type uint16ListType = new ListType(new SimpleType("uint16", false));
- uint16ListType.primitiveType = primitives.lookup("uint16");
- neededListTypes.add(uint16ListType);
- writeln(' String get $slotName => '
- 'readString(new _uint16List(), ${slot.offset});');
- writeln(' List<int> get ${slotName}Data => '
- 'readList(new _uint16List(), ${slot.offset});');
- } else if (slotType.isPrimitive) {
- String getter = _GETTERS[slotType.identifier];
- String offset = '\$offset + ${slot.offset}';
-
- write(' ');
- writeType(slotType);
- if (slotType.isBool) {
- writeln(' get $slotName => \$segment.memory.$getter($offset) != 0;');
- } else {
- writeln(' get $slotName => \$segment.memory.$getter($offset);');
- }
- } else {
- write(' ');
- writeType(slotType);
- write(' get $slotName => ');
- if (!slotType.isPointer) {
- write('new ');
- writeType(slotType);
- writeln('()');
- writeln(' ..\$segment = \$segment');
- writeln(' ..\$offset = \$offset + ${slot.offset};');
- } else {
- write('readStruct(new ');
- writeType(slotType);
- writeln('(), ${slot.offset});');
- }
- }
- }
- writeln('}');
-
- writeln();
- writeln('class ${node.name}Builder extends Builder {');
- for (StructSlot slot in layout.slots) {
- String slotName = slot.slot.name;
- Type slotType = slot.slot.type;
-
- String updateTag = '';
- if (slot.isUnionSlot) {
- String tagName = slot.union.tag.name;
- int tag = slot.unionTag;
- updateTag = ' $tagName = $tag;\n';
- }
-
- String camel = camelize(slotName);
- if (slotType.isList) {
- write(' List<');
- writeReturnType(slotType);
- writeln('> init$camel(int length) {');
- write(updateTag);
- int size = 0;
- if (slotType.isPrimitive) {
- size = primitives.size(slotType.primitiveType);
- } else {
- Struct element = slotType.resolved;
- StructLayout elementLayout = element.layout;
- size = elementLayout.size;
- }
- String type = '_${slotType.identifier}BuilderList';
- writeln(' $type result = NewList(new $type(), ${slot.offset},'
- ' length, $size);');
- writeln(' return result;');
- writeln(' }');
- } else if (slotType.isVoid) {
- writeln(' void set$camel() {');
- write(updateTag);
- writeln(' }');
- } else if (slotType.isString) {
- String type = '_uint16BuilderList';
- writeln(' void set ${slotName}(String value) {');
- write(updateTag);
- writeln(' NewString(new $type(), ${slot.offset}, value);');
- writeln(' }');
- writeln(' List<int> init${camel}Data(int length) {');
- write(updateTag);
- writeln(' $type result = NewList(new $type(), ${slot.offset},'
- ' length, 2);');
- writeln(' return result;');
- writeln(' }');
- } else if (slotType.isPrimitive) {
- String setter = _SETTERS[slotType.identifier];
- write(' void set ${slotName}(');
- writeType(slotType);
- writeln(' value) {');
- write(updateTag);
- String offset = '\$offset + ${slot.offset}';
- if (slotType.isBool) {
- writeln(' \$segment.memory.$setter($offset, value ? 1 : 0);');
- } else {
- writeln(' \$segment.memory.$setter($offset, value);');
- }
- writeln(' }');
- } else {
- write(' ');
- writeReturnType(slotType);
- writeln(' init$camel() {');
- write(updateTag);
- if (!slotType.isPointer) {
- write(' return new ');
- writeReturnType(slotType);
- writeln('()');
- writeln(' ..\$segment = \$segment');
- writeln(' ..\$offset = \$offset + ${slot.offset};');
- } else {
- Struct element = slotType.resolved;
- StructLayout elementLayout = element.layout;
- int size = elementLayout.size;
- write(' return NewStruct(new ');
- writeReturnType(slotType);
- writeln('(), ${slot.offset}, $size);');
- }
- writeln(' }');
- }
- }
- writeln('}');
- }
-
- visitUnion(Union node) {
- // Ignored for now.
- }
-
- visitMethod(Method node) {
- methods.add(node);
- if (node.outputKind == OutputKind.STRUCT) {
- String builderName = '${node.returnType.identifier}Builder';
- write(' void ${node.name}(');
- visitNodes(node.arguments, (first) => first ? '' : ', ');
- write('${node.arguments.length > 0 ? ", " : ""}$builderName result');
- } else {
- assert(node.outputKind == OutputKind.PRIMITIVE);
- write(' ');
- writeType(node.returnType);
- write(' ${node.name}(');
- visitNodes(node.arguments, (first) => first ? '' : ', ');
- }
- writeln(');');
- }
-
- visitFormal(Formal node) {
- writeType(node.type);
- write(' ${node.name}');
- }
-
- static const Map<String, String> _types = const {
- 'void' : 'void',
- 'bool' : 'bool',
-
- 'uint8' : 'int',
- 'uint16' : 'int',
-
- 'int8' : 'int',
- 'int16' : 'int',
- 'int32' : 'int',
- 'int64' : 'int',
-
- 'float32' : 'double',
- 'float64' : 'double',
- };
-
- void writeType(Type node) {
- Node resolved = node.resolved;
- if (resolved != null) {
- write(node.identifier);
- } else {
- String type = _types[node.identifier];
- write(type);
- }
- }
-
- void writeReturnType(Type node) {
- Node resolved = node.resolved;
- if (resolved != null) {
- write('${node.identifier}Builder');
- } else {
- String type = _types[node.identifier];
- write(type);
- }
- }
-
-}
« no previous file with comments | « tools/servicec/lib/src/plugins/cc.dart ('k') | tools/servicec/lib/src/plugins/java.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698