private void DiffFunctions() { if (Left.LibraryFunctions.Count() != Right.LibraryFunctions.Count()) { Log.WriteLineWithHeader("[Diff]: ", "Left number of functions is not equal to right number of functions"); } var leftFuncs = new HashSet <LSLLibraryFunctionSignature>(Left.LibraryFunctions.SelectMany(x => x)); var rightFuncs = new HashSet <LSLLibraryFunctionSignature>(Right.LibraryFunctions.SelectMany(x => x)); if (!leftFuncs.SetEquals(rightFuncs)) { foreach (var sig in leftFuncs.Except(rightFuncs)) { if (!Right.LibraryFunctionExist(sig.Name)) { Log.WriteLineWithHeader("[Diff]: ", "Left function {0} does not exist in Right", sig.Name); NotInRight.DefineFunction(sig); } else { var overloads1 = new HashSet <LSLLibraryFunctionSignature>(Left.GetLibraryFunctionSignatures(sig.Name)); var overloads2 = new HashSet <LSLLibraryFunctionSignature>(Right.GetLibraryFunctionSignatures(sig.Name)); if (overloads1.SetEquals(overloads2)) { Log.WriteLineWithHeader("[Diff]: ", "Left function {0} is different in Right", sig.Name); } } } foreach (var sig in rightFuncs.Except(leftFuncs)) { if (!Left.LibraryFunctionExist(sig.Name)) { Log.WriteLineWithHeader("[Diff]: ", "Right function {0} does not exist in Left", sig.Name); NotInLeft.DefineFunction(sig); } else { var overloads1 = new HashSet <LSLLibraryFunctionSignature>(Left.GetLibraryFunctionSignatures(sig.Name)); var overloads2 = new HashSet <LSLLibraryFunctionSignature>(Right.GetLibraryFunctionSignatures(sig.Name)); if (overloads1.SetEquals(overloads2)) { Log.WriteLineWithHeader("[Diff]: ", "Right function {0} is different in Left", sig.Name); } } } } }
private void DiffEvents() { if (Left.LibraryEvents.Count() != Right.LibraryEvents.Count()) { Log.WriteLineWithHeader("[Diff]: ", "Left number of events is not equal to right number of events"); } var leftEvents = new HashSet <LSLLibraryEventSignature>(Left.LibraryEvents); var rightEvents = new HashSet <LSLLibraryEventSignature>(Right.LibraryEvents); if (!leftEvents.SetEquals(rightEvents)) { foreach (var sig in leftEvents.Except(rightEvents)) { if (!Right.EventHandlerExist(sig.Name)) { Log.WriteLineWithHeader("[Diff]: ", "Left event {0} does not exist in Right", sig.Name); NotInRight.DefineEventHandler(sig); } else { Log.WriteLineWithHeader("[Diff]: ", "Left event {0} is different in Right", sig.Name); } } foreach (var sig in rightEvents.Except(leftEvents)) { if (!Left.EventHandlerExist(sig.Name)) { Log.WriteLineWithHeader("[Diff]: ", "Right event {0} does not exist in Left", sig.Name); NotInLeft.DefineEventHandler(sig); } else { Log.WriteLineWithHeader("[Diff]: ", "Right event {0} is different in Left", sig.Name); } } } }