Chromium Code Reviews| Index: pkg/analyzer/lib/src/summary/summary_file_builder.dart |
| diff --git a/pkg/analyzer/lib/src/summary/summary_file_builder.dart b/pkg/analyzer/lib/src/summary/summary_file_builder.dart |
| index 0d340b925b6691244041dcc75cca28af823f4b74..26fb4a75c6e0bc3355db7d76fe6642444f621eff 100644 |
| --- a/pkg/analyzer/lib/src/summary/summary_file_builder.dart |
| +++ b/pkg/analyzer/lib/src/summary/summary_file_builder.dart |
| @@ -14,10 +14,16 @@ import 'package:analyzer/src/generated/java_io.dart'; |
| import 'package:analyzer/src/generated/sdk.dart'; |
| import 'package:analyzer/src/generated/sdk_io.dart'; |
| import 'package:analyzer/src/generated/source.dart'; |
| +import 'package:analyzer/src/summary/flat_buffers.dart' as fb; |
| import 'package:analyzer/src/summary/index_unit.dart'; |
| import 'package:analyzer/src/summary/summarize_elements.dart'; |
| import 'package:path/path.dart'; |
| +const int FIELD_SPEC_INDEX = 1; |
| +const int FIELD_SPEC_SUM = 0; |
| +const int FIELD_STRONG_INDEX = 3; |
| +const int FIELD_STRONG_SUM = 2; |
| + |
| class BuilderOutput { |
| final List<int> sum; |
| final List<int> index; |
| @@ -76,6 +82,18 @@ class SummaryBuilder { |
| BuilderOutput build() => new _Builder(_context, _librarySources).build(); |
| } |
| +class SummaryOutput { |
|
Brian Wilkerson
2016/06/16 19:43:55
Comment?
pquitslund
2016/06/16 20:52:15
Done.
|
| + final BuilderOutput spec; |
| + final BuilderOutput strong; |
| + SummaryOutput(this.spec, this.strong); |
| + |
| + /** |
| + * Write this summary output to the given [outputPath] and return the |
| + * created file. |
| + */ |
| + File write(String outputPath) => new _Writer().write(this, outputPath); |
| +} |
| + |
| class _Builder { |
| final Set<Source> processedSources = new Set<Source>(); |
| @@ -126,3 +144,21 @@ class _Builder { |
| } |
| } |
| } |
| + |
| +class _Writer { |
| + File write(SummaryOutput output, String outputPath) { |
|
Brian Wilkerson
2016/06/16 19:43:55
Not sure what value there is in creating a private
pquitslund
2016/06/16 20:52:15
Done.
|
| + fb.Builder builder = new fb.Builder(); |
| + fb.Offset specSumOffset = builder.writeListUint8(output.spec.sum); |
| + fb.Offset specIndexOffset = builder.writeListUint8(output.spec.index); |
| + fb.Offset strongSumOffset = builder.writeListUint8(output.strong.sum); |
| + fb.Offset strongIndexOffset = builder.writeListUint8(output.strong.index); |
| + builder.startTable(); |
| + builder.addOffset(FIELD_SPEC_SUM, specSumOffset); |
| + builder.addOffset(FIELD_SPEC_INDEX, specIndexOffset); |
| + builder.addOffset(FIELD_STRONG_SUM, strongSumOffset); |
| + builder.addOffset(FIELD_STRONG_INDEX, strongIndexOffset); |
| + fb.Offset offset = builder.endTable(); |
| + return new File(outputPath) |
| + ..writeAsBytesSync(builder.finish(offset), mode: FileMode.WRITE_ONLY); |
| + } |
| +} |