// 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:built_collection/built_collection.dart'; import 'package:built_value/built_value.dart'; import 'package:meta/meta.dart'; import '../base.dart' show Spec; import '../mixins/annotations.dart'; import '../mixins/dartdoc.dart'; import '../mixins/generics.dart'; import '../visitors.dart'; import 'constructor.dart' show Constructor; import 'expression.dart' show Expression; import 'field.dart' show Field; import 'method.dart' show Method; import 'reference.dart' show Reference; part 'enum.g.dart'; @immutable abstract class Enum extends Object with HasAnnotations, HasDartDocs, HasGenerics implements Built, Spec { factory Enum([void Function(EnumBuilder) updates]) = _$Enum; Enum._(); String get name; BuiltList get values; @override BuiltList get annotations; @override BuiltList get docs; BuiltList get implements; BuiltList get mixins; @override BuiltList get types; BuiltList get constructors; BuiltList get methods; BuiltList get fields; @override R accept(SpecVisitor visitor, [R? context]) => visitor.visitEnum(this, context); } abstract class EnumBuilder extends Object with HasAnnotationsBuilder, HasDartDocsBuilder, HasGenericsBuilder implements Builder { factory EnumBuilder() = _$EnumBuilder; EnumBuilder._(); String? name; ListBuilder values = ListBuilder(); @override ListBuilder annotations = ListBuilder(); @override ListBuilder docs = ListBuilder(); ListBuilder implements = ListBuilder(); ListBuilder mixins = ListBuilder(); @override ListBuilder types = ListBuilder(); ListBuilder constructors = ListBuilder(); ListBuilder methods = ListBuilder(); ListBuilder fields = ListBuilder(); } @immutable abstract class EnumValue extends Object with HasAnnotations, HasDartDocs, HasGenerics implements Built { factory EnumValue([void Function(EnumValueBuilder) updates]) = _$EnumValue; EnumValue._(); String get name; @override BuiltList get annotations; @override BuiltList get docs; /// The name of the constructor to target. /// /// If `null` uses the unnamed constructor. String? get constructorName; @override BuiltList get types; /// Arguments to the constructor. BuiltList get arguments; /// Named arguments to the constructor. BuiltMap get namedArguments; } abstract class EnumValueBuilder extends Object with HasAnnotationsBuilder, HasDartDocsBuilder, HasGenericsBuilder implements Builder { factory EnumValueBuilder() = _$EnumValueBuilder; EnumValueBuilder._(); String? name; @override ListBuilder annotations = ListBuilder(); @override ListBuilder docs = ListBuilder(); /// The name of the constructor to target. String? constructorName; @override ListBuilder types = ListBuilder(); /// Arguments to the constructor. ListBuilder arguments = ListBuilder(); /// Named arguments to the constructor. MapBuilder namedArguments = MapBuilder(); }