/*
Copyright (C) 2014-2019 de4dot@gmail.com
This file is part of dnSpy
dnSpy is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
dnSpy is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with dnSpy. If not, see .
*/
using System;
namespace dnSpy.Contracts.Disassembly {
///
/// Resolves symbols
///
public interface ISymbolResolver {
///
/// Tries to get symbols
///
/// Addresses
/// Elements that were resolved get updated, the other elements aren't touched.
/// It has the same number of elements as
void Resolve(ulong[] addresses, SymbolResolverResult[] result);
}
///
/// Symbol kind
///
public enum SymbolKind {
///
/// Unknown kind
///
Unknown,
///
/// Code label
///
Label,
///
/// Function
///
Function,
///
/// Data
///
Data,
}
///
/// Symbol resolver result
///
public readonly struct SymbolResolverResult {
///
/// Checks if this is the default instance
///
public bool IsDefault => Symbol is null;
///
/// Symbol kind
///
public SymbolKind Kind { get; }
///
/// Symbol name
///
public string Symbol { get; }
///
/// Address of the symbol, usually identical to the address passed to
///
public ulong Address { get; }
///
/// Constructor
///
/// Symbol kind
/// Symbol name
/// Address of symbol, usually the same as the address passed to
public SymbolResolverResult(SymbolKind kind, string symbol, ulong address) {
Kind = kind;
Symbol = symbol ?? throw new ArgumentNullException(nameof(symbol));
Address = address;
}
}
}