blob: d0df34c0b8e1626040dcc2bceeb1f09c3d12f72b [file] [log] [blame]
// Copyright (c) 2025, 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 '../fragment/fragment.dart';
import 'source_loader.dart' show SourceLoader;
class NativeMethodRegistry {
final List<FactoryFragment> _nativeFactoryFragments = [];
final List<GetterFragment> _nativeGetterFragments = [];
final List<SetterFragment> _nativeSetterFragments = [];
final List<MethodFragment> _nativeMethodFragments = [];
final List<ConstructorFragment> _nativeConstructorFragments = [];
void registerNativeGetterFragment(GetterFragment fragment) {
_nativeGetterFragments.add(fragment);
}
void registerNativeSetterFragment(SetterFragment fragment) {
_nativeSetterFragments.add(fragment);
}
void registerNativeMethodFragment(MethodFragment fragment) {
_nativeMethodFragments.add(fragment);
}
void registerNativeConstructorFragment(ConstructorFragment fragment) {
_nativeConstructorFragments.add(fragment);
}
void registerNativeFactoryFragment(FactoryFragment method) {
_nativeFactoryFragments.add(method);
}
int finishNativeMethods(SourceLoader loader) {
for (FactoryFragment fragment in _nativeFactoryFragments) {
fragment.declaration.becomeNative(loader);
}
for (GetterFragment fragment in _nativeGetterFragments) {
fragment.declaration.becomeNative(loader);
}
for (SetterFragment fragment in _nativeSetterFragments) {
fragment.declaration.becomeNative(loader);
}
for (MethodFragment fragment in _nativeMethodFragments) {
fragment.declaration.becomeNative(loader);
}
for (ConstructorFragment fragment in _nativeConstructorFragments) {
fragment.declaration.becomeNative(loader);
}
return _nativeFactoryFragments.length;
}
}