Skip to content
Closed
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
df851d5
Rename generator class to Adapter
tarrinneal Dec 21, 2022
e40d679
create new generator class and dart subclass
tarrinneal Dec 21, 2022
8c4e2a0
cpp and dart test gen
tarrinneal Dec 21, 2022
bcdbdbc
added files
tarrinneal Dec 21, 2022
31bb701
Adds Generator class to all generators
tarrinneal Dec 21, 2022
06315ce
adds swift
tarrinneal Dec 21, 2022
5675c64
Updates tests to use new Adapter naming scheme
tarrinneal Dec 21, 2022
a319b48
Dart generate methods
tarrinneal Dec 21, 2022
6d7405d
convert all generate functions to use new method
tarrinneal Dec 21, 2022
72a380c
Merge branch 'main' of github.com:flutter/packages into skeleton2
tarrinneal Dec 21, 2022
1e59fef
chagngelog
tarrinneal Dec 21, 2022
0964cd3
remove Generator class fields
tarrinneal Dec 21, 2022
f589da4
move paths to options
tarrinneal Dec 22, 2022
637679d
remove dartTestOptions
tarrinneal Dec 22, 2022
68a23e2
Nits and combines source and header generators
tarrinneal Dec 27, 2022
67282cf
renames Adapter to GeneratorAdapter
tarrinneal Dec 27, 2022
d08606c
Update version number for breaking changes
tarrinneal Dec 27, 2022
90fcb67
nits
tarrinneal Dec 27, 2022
ea0ec6c
more personal nits
tarrinneal Dec 27, 2022
6206bad
Fixes dart header bug
tarrinneal Dec 27, 2022
7c3d35c
add gen files for clarity
tarrinneal Dec 27, 2022
ef0b71a
Merge branch 'main' of github.com:flutter/packages into skeleton2
tarrinneal Dec 27, 2022
8bf2dfb
better field naming
tarrinneal Dec 28, 2022
8c6abf2
better field naming
tarrinneal Dec 28, 2022
93a5d1b
removed unneeded dart test generator
tarrinneal Dec 28, 2022
710d1a1
Add filetype to generator
tarrinneal Dec 28, 2022
d189d11
Adds filetype as field to generatorAdapters
tarrinneal Dec 29, 2022
daae569
Merge branch 'main' of github.com:flutter/packages into skeleton2
tarrinneal Dec 29, 2022
88905e3
Merge branch 'main' of github.com:flutter/packages into skeleton2
tarrinneal Dec 30, 2022
29decb9
nits
tarrinneal Dec 30, 2022
b7abbe4
assert
tarrinneal Jan 3, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions packages/pigeon/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## 4.2.16

* Creates new Generator classes for each language.

## 4.2.15

* Relocates generator classes. (Reverted)
Expand Down
44 changes: 35 additions & 9 deletions packages/pigeon/lib/cpp_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import 'ast.dart';
import 'functional.dart';
import 'generator.dart';
import 'generator_tools.dart';
import 'pigeon_lib.dart' show Error;

Expand All @@ -20,11 +21,8 @@ const String _defaultCodecSerializer = 'flutter::StandardCodecSerializer';
/// Options that control how C++ code will be generated.
class CppOptions {
/// Creates a [CppOptions] object
const CppOptions({
this.header,
this.namespace,
this.copyrightHeader,
});
const CppOptions(
{this.header, this.namespace, this.copyrightHeader, this.cppHeaderOut});
Comment thread
tarrinneal marked this conversation as resolved.
Outdated

/// The path to the header that will get placed in the source filed (example:
/// "foo.h").
Expand All @@ -36,14 +34,17 @@ class CppOptions {
/// A copyright header that will get prepended to generated code.
final Iterable<String>? copyrightHeader;

///
Comment thread
tarrinneal marked this conversation as resolved.
Outdated
final String? cppHeaderOut;
Comment thread
tarrinneal marked this conversation as resolved.
Outdated

/// Creates a [CppOptions] from a Map representation where:
/// `x = CppOptions.fromMap(x.toMap())`.
static CppOptions fromMap(Map<String, Object> map) {
return CppOptions(
header: map['header'] as String?,
namespace: map['namespace'] as String?,
copyrightHeader: map['copyrightHeader'] as Iterable<String>?,
);
header: map['header'] as String?,
namespace: map['namespace'] as String?,
copyrightHeader: map['copyrightHeader'] as Iterable<String>?,
cppHeaderOut: map['cppHeaderOut'] as String?);
}

/// Converts a [CppOptions] to a Map representation where:
Expand All @@ -64,6 +65,31 @@ class CppOptions {
}
}

/// Class that manages all Cpp header code generation.
Comment thread
tarrinneal marked this conversation as resolved.
Outdated
class CppHeaderGenerator extends Generator<CppOptions> {
Comment thread
tarrinneal marked this conversation as resolved.
Outdated
/// Instantiates a Cpp Generator.
CppHeaderGenerator();

/// Generates Cpp header files with specified [CppOptions]
@override
void generate(CppOptions languageOptions, Root root, StringSink sink) {
generateCppHeader(
languageOptions.cppHeaderOut, languageOptions, root, sink);
}
}

/// Class that manages all Cpp code generation.
class CppSourceGenerator extends Generator<CppOptions> {
/// Instantiates a Cpp Generator.
CppSourceGenerator();

/// Generates Cpp files with specified [CppOptions]
@override
void generate(CppOptions languageOptions, Root root, StringSink sink) {
generateCppSource(languageOptions, root, sink);
}
}

String _getCodecSerializerName(Api api) => '${api.name}CodecSerializer';

const String _pointerPrefix = 'pointer';
Expand Down
49 changes: 48 additions & 1 deletion packages/pigeon/lib/dart_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import 'package:yaml/yaml.dart' as yaml;

import 'ast.dart';
import 'functional.dart';
import 'generator.dart';
import 'generator_tools.dart';

/// Documentation comment open symbol.
Expand All @@ -24,18 +25,30 @@ const String _standardMessageCodec = 'StandardMessageCodec';
/// Options that control how Dart code will be generated.
class DartOptions {
/// Constructor for DartOptions.
const DartOptions({this.copyrightHeader});
DartOptions({
this.copyrightHeader,
this.dartOutPath,
Comment thread
tarrinneal marked this conversation as resolved.
Outdated
this.testOutPath,
});

/// A copyright header that will get prepended to generated code.
final Iterable<String>? copyrightHeader;

/// Path to output generated Dart file for tests.
Comment thread
tarrinneal marked this conversation as resolved.
Outdated
String? dartOutPath;

/// Path to output generated Test file for tests.
String? testOutPath;

/// Creates a [DartOptions] from a Map representation where:
/// `x = DartOptions.fromMap(x.toMap())`.
static DartOptions fromMap(Map<String, Object> map) {
final Iterable<dynamic>? copyrightHeader =
map['copyrightHeader'] as Iterable<dynamic>?;
return DartOptions(
copyrightHeader: copyrightHeader?.cast<String>(),
dartOutPath: map['dartOutPath'] as String?,
testOutPath: map['testOutPath'] as String?,
);
}

Expand All @@ -44,6 +57,8 @@ class DartOptions {
Map<String, Object> toMap() {
final Map<String, Object> result = <String, Object>{
if (copyrightHeader != null) 'copyrightHeader': copyrightHeader!,
if (dartOutPath != null) 'dartOutPath': dartOutPath!,
if (testOutPath != null) 'testOutPath': testOutPath!,
};
return result;
}
Expand All @@ -55,6 +70,38 @@ class DartOptions {
}
}

/// Class that manages all Dart code generation.
class DartGenerator extends Generator<DartOptions> {
/// Instantiates a Dart Generator.
DartGenerator();

/// Generates Dart files with specified [DartOptions]
@override
void generate(DartOptions languageOptions, Root root, StringSink sink) {
generateDart(languageOptions, root, sink);
}
}

/// Class that manages all Dart code generation.
class DartTestGenerator extends Generator<DartOptions> {
Comment thread
tarrinneal marked this conversation as resolved.
Outdated
/// Instantiates a Dart Generator.
DartTestGenerator();

/// Generates Dart files with specified [DartOptions]
@override
void generate(DartOptions languageOptions, Root root, StringSink sink) {
final String dartOutPath = languageOptions.dartOutPath ?? '';
final String testOutPath = languageOptions.testOutPath ?? '';
generateTestDart(
languageOptions,
root,
sink,
dartOutPath: dartOutPath,
testOutPath: testOutPath,
);
}
}

String _escapeForDartSingleQuotedString(String raw) {
return raw
.replaceAll(r'\', r'\\')
Expand Down
16 changes: 16 additions & 0 deletions packages/pigeon/lib/generator.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'ast.dart';

/// A Super class of generator classes.
Comment thread
tarrinneal marked this conversation as resolved.
Outdated
///
/// This is meant to provide structure and direction for future generator work.
Comment thread
tarrinneal marked this conversation as resolved.
Outdated
abstract class Generator<T> {
/// Instantiates a Generator.
const Generator();
Comment thread
tarrinneal marked this conversation as resolved.
Outdated

/// Generates files for specified language with specified [languageOptions]
void generate(T languageOptions, Root root, StringSink sink);
}
2 changes: 1 addition & 1 deletion packages/pigeon/lib/generator_tools.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import 'dart:mirrors';
import 'ast.dart';

/// The current version of pigeon. This must match the version in pubspec.yaml.
const String pigeonVersion = '4.2.15';
const String pigeonVersion = '4.2.16';

/// Read all the content from [stdin] to a String.
String readStdin() {
Expand Down
13 changes: 13 additions & 0 deletions packages/pigeon/lib/java_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import 'ast.dart';
import 'functional.dart';
import 'generator.dart';
import 'generator_tools.dart';
import 'pigeon_lib.dart' show TaskQueueType;

Expand Down Expand Up @@ -84,6 +85,18 @@ class JavaOptions {
}
}

/// Class that manages all Java code generation.
class JavaGenerator extends Generator<JavaOptions> {
/// Instantiates a Java Generator.
JavaGenerator();

/// Generates Java files with specified [JavaOptions]
@override
void generate(JavaOptions languageOptions, Root root, StringSink sink) {
generateJava(languageOptions, root, sink);
}
}

/// Calculates the name of the codec that will be generated for [api].
String _getCodecName(Api api) => '${api.name}Codec';

Expand Down
13 changes: 13 additions & 0 deletions packages/pigeon/lib/kotlin_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import 'ast.dart';
import 'functional.dart';
import 'generator.dart';
import 'generator_tools.dart';
import 'pigeon_lib.dart' show TaskQueueType;

Expand Down Expand Up @@ -64,6 +65,18 @@ class KotlinOptions {
}
}

/// Class that manages all Kotlin code generation.
class KotlinGenerator extends Generator<KotlinOptions> {
/// Instantiates a Kotlin Generator.
KotlinGenerator();

/// Generates Kotlin files with specified [KotlinOptions]
@override
void generate(KotlinOptions languageOptions, Root root, StringSink sink) {
generateKotlin(languageOptions, root, sink);
Comment thread
tarrinneal marked this conversation as resolved.
}
}

/// Calculates the name of the codec that will be generated for [api].
String _getCodecName(Api api) => '${api.name}Codec';

Expand Down
25 changes: 25 additions & 0 deletions packages/pigeon/lib/objc_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

import 'ast.dart';
import 'functional.dart';
import 'generator.dart';
import 'generator_tools.dart';
import 'pigeon_lib.dart' show Error, TaskQueueType;

Expand Down Expand Up @@ -63,6 +64,30 @@ class ObjcOptions {
}
}

/// Class that manages all Objc header code generation.
class ObjcHeaderGenerator extends Generator<ObjcOptions> {
/// Instantiates a Objc Generator.
ObjcHeaderGenerator();

/// Generates Objc header files with specified [ObjcOptions]
@override
void generate(ObjcOptions languageOptions, Root root, StringSink sink) {
generateObjcHeader(languageOptions, root, sink);
}
}

/// Class that manages all Objc code generation.
class ObjcSourceGenerator extends Generator<ObjcOptions> {
/// Instantiates a Objc Generator.
ObjcSourceGenerator();

/// Generates Objc files with specified [ObjcOptions]
@override
void generate(ObjcOptions languageOptions, Root root, StringSink sink) {
generateObjcSource(languageOptions, root, sink);
}
}

/// Calculates the ObjC class name, possibly prefixed.
String _className(String? prefix, String className) {
if (prefix != null) {
Expand Down
Loading