| // 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; |
| } |
| } |