public Native UpdateNative(ulong hash, Stack.DataType returns, params Stack.DataType[] param) { Native native = null; lock (Program.ThreadLock) { if (!TryGetValue(hash, out native)) { throw new Exception("Unknown Native: " + hash.ToString("X")); } native.Return = returns.LongName(); for (int i = 0; i < param.Length; ++i) { if (native.Params[i].Vardiac) { break; } if (native.Params[i].StackType.IsUnknown()) { native.Params[i].Type = param[i].LongName(); } } } return(native); }
public bool UpdateRetType(ulong hash, Stack.DataType returns, bool over = false) { lock (Program.ThreadLock) { Native native; if (TryGetValue(hash, out native) && !native.ReturnParam.FixedType) { if (native.ReturnParam.StackType.Precedence() < returns.Precedence()) { native.ReturnParam.Type = returns.LongName(); return(true); } } return(false); } }
public bool UpdateParam(ulong hash, Stack.DataType type, int index) { lock (Program.ThreadLock) { Native native; if (TryGetValue(hash, out native) && !native.Vardiac && index < native.Params.Count) { Param p = native.Params[index]; if (p.StackType.Precedence() < type.Precedence() && !p.FixedType) { p.Type = type.LongName(); return(true); } } return(false); } }