AvalonStudio.Debugging.GDB.GDBDebugger.GetRegistersAsync C# (CSharp) Method

GetRegistersAsync() public method

public GetRegistersAsync ( ) : Register>>.Task
return Register>>.Task
		public async Task<Dictionary<int, Register>> GetRegistersAsync()
		{
			var result = new Dictionary<int, Register>();

			List<string> registerNames = null;
			List<Tuple<int, string>> registerValues = null;

			await SafelyExecuteCommand(async () =>
			{
				registerNames = (await new DataListRegisterNamesCommand().Execute(this)).Value;

				registerValues = (await new DataListRegisterValuesCommand().Execute(this)).Value;
			});

			if (registerNames != null && registerValues != null)
			{
				for (var i = 0; i < registerNames.Count; i++)
				{
					var name = registerNames[i];

					if (name != string.Empty)
					{
						result.Add(i, new Register {Name = name, Index = i});
					}
				}

				foreach (var regVal in registerValues)
				{
					if (regVal.Item1 != -1)
					{
						Register value;

						if (result.TryGetValue(regVal.Item1, out value))
						{
							value.Value = regVal.Item2;
						}
					}
				}
			}

			return result;
		}