public static void AddOverload(Runtime runtime, string pack_name, P5Array args) { var overloads = new Overloads(); var pack = runtime.SymbolTable.GetPackage(runtime, pack_name, true); for (int i = 0; i < args.GetCount(runtime); i += 2) { string key = args.GetItem(runtime, i).AsString(runtime); var value = args.GetItem(runtime, i + 1); overloads.AddOperation(runtime, key, value); } pack.SetOverloads(overloads); }
public static bool IsOverloaded(Runtime runtime, P5Scalar scalar, out Overloads overloads) { overloads = null; if (!scalar.IsReference(runtime)) return false; var stash = scalar.Dereference(runtime).Blessed(runtime); if (stash == null) return false; overloads = stash.Overloads; return stash.HasOverloading; }
public static bool IsOverloaded(Runtime runtime, IP5Any value, out Overloads overloads) { overloads = null; var scalar = value as P5Scalar; return scalar == null ? false : IsOverloaded(runtime, scalar, out overloads); }