Method.fromToken constructor

Method.fromToken(
  1. Scope scope,
  2. int token
)

Creates a method object from a provided token.

Implementation

factory Method.fromToken(Scope scope, int token) => using((Arena arena) {
      final ptkClass = arena<mdTypeDef>();
      final szMethod = arena<WCHAR>(MAX_STRING_SIZE).cast<Utf16>();
      final pchMethod = arena<ULONG>();
      final pdwAttr = arena<DWORD>();
      final ppvSigBlob = arena<PCCOR_SIGNATURE>();
      final pcbSigBlob = arena<ULONG>();
      final pulCodeRVA = arena<ULONG>();
      final pdwImplFlags = arena<DWORD>();

      final reader = scope.reader;
      final hr = reader.GetMethodProps(
          token,
          ptkClass,
          szMethod,
          MAX_STRING_SIZE,
          pchMethod,
          pdwAttr,
          ppvSigBlob,
          pcbSigBlob,
          pulCodeRVA,
          pdwImplFlags);

      if (SUCCEEDED(hr)) {
        final signature = ppvSigBlob.value.asTypedList(pcbSigBlob.value);
        return Method(scope, token, ptkClass.value, szMethod.toDartString(),
            pdwAttr.value, signature, pulCodeRVA.value, pdwImplFlags.value);
      } else {
        throw WindowsException(hr);
      }
    });