| // Copyright (c) 2020, the Dart 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. |
| |
| import 'package:meta/meta.dart'; |
| |
| import 'binding_string.dart'; |
| import 'typedef.dart'; |
| import 'writer.dart'; |
| |
| /// Base class for all Bindings. |
| /// |
| /// Do not extend directly, use [LookUpBinding] or [NoLookUpBinding]. |
| abstract class Binding { |
| String name; |
| |
| final String dartDoc; |
| |
| Binding({@required this.name, this.dartDoc}); |
| |
| /// Return typedef dependencies. |
| List<Typedef> getTypedefDependencies(Writer w); |
| |
| /// Converts a Binding to its actual string representation. |
| /// |
| /// Note: This does not print the typedef dependencies. |
| /// Must call [getTypedefDependencies] first. |
| BindingString toBindingString(Writer w); |
| } |
| |
| /// Base class for bindings which look up symbols in dynamic library. |
| abstract class LookUpBinding extends Binding { |
| LookUpBinding({String name, String dartDoc}) |
| : super(name: name, dartDoc: dartDoc); |
| } |
| |
| /// Base class for bindings which don't look up symbols in dynamic library. |
| abstract class NoLookUpBinding extends Binding { |
| NoLookUpBinding({String name, String dartDoc}) |
| : super(name: name, dartDoc: dartDoc); |
| } |