private void GetModifiedRegisters <T> ( MemoryRegisterDictionary changes, Dictionary <string, dynamic> mixedRegisters) { foreach (KeyValuePair <string, dynamic> entry in mixedRegisters) { dynamic register = entry.Value; switch (Type.GetTypeCode(typeof(T))) { case TypeCode.Int32: if (( RegType )register.valueType == RegType.INT) { changes.AddElement <int> (register); } break; case TypeCode.UInt32: if (( RegType )register.valueType == RegType.UINT) { changes.AddElement <uint> (register); } break; case TypeCode.UInt64: if (( RegType )register.valueType == RegType.ULONG) { changes.AddElement <ulong> (register); } break; case TypeCode.Boolean: if (( RegType )register.valueType == RegType.BOOL) { changes.AddElement <bool> (register); } break; case TypeCode.Char: if (( RegType )register.valueType == RegType.CHAR) { changes.AddElement <char> (register); } break; case TypeCode.String: if (( RegType )register.valueType == RegType.STRING) { changes.AddElement <string> (register); } break; } } /* * return this.registersObjs.Where(reg => reg.Value.used) * .ToDictionary(reg => reg.Key, reg => reg.Value) * .Values.ToArray<RegisterObj> (); */ }
public MemoryRegisterDictionary GetModifiedRegisters() { MemoryRegisterDictionary changes = new MemoryRegisterDictionary(); Dictionary <string, dynamic> mixedRegisters = this.registersObjs.Where(reg => reg.Value.used) .ToDictionary(reg => reg.Key, reg => reg.Value); this.GetModifiedRegisters <int> (changes, mixedRegisters); this.GetModifiedRegisters <uint> (changes, mixedRegisters); this.GetModifiedRegisters <ulong> (changes, mixedRegisters); this.GetModifiedRegisters <bool> (changes, mixedRegisters); this.GetModifiedRegisters <char> (changes, mixedRegisters); this.GetModifiedRegisters <string> (changes, mixedRegisters); return(changes); }