internal void BasicFunctionParser(Packet packet, int functionPos, bool open) { var className = GetClassNameByPosition(functionPos); if (!string.IsNullOrWhiteSpace(className) && !className.StartsWith("_SafeStr")) packet.Classes.Add(className); var function = GetNearTopFunctionByPosition(functionPos, _bufferStr); if (!string.IsNullOrEmpty(function)) { var nearPacket = new Packet(GetFunctionName(function)); ParseVoid(nearPacket, function); nearPacket.Sort(); packet.NearTopPacket.Add(nearPacket); } function = GetNearBottomFunctionByPosition(functionPos, _bufferStr); if (!string.IsNullOrEmpty(function)) { var nearPacket = new Packet(GetFunctionName(function)); ParseVoid(nearPacket, function); nearPacket.Sort(); packet.NearBottomPacket.Add(nearPacket); } function = GetFunctionByPosition(functionPos); ParseVoid(packet, function); if (!open) return; var inside = RemoveSafeStr(function).Replace(" function ", string.Empty); if (!string.IsNullOrWhiteSpace(inside) && !inside.StartsWith("//")) packet.Open.Add(inside); }
public void DefinePacket(Packet packet, bool isOutGoing) { //if (packet.DelegateFunction != "_SafeStr_4296") // return; if (isOutGoing) { ParsePreStructure(packet); if (!packet.DelegateFunction.StartsWith("_Safe")) return; } var split1 = GetPositions(packet.DelegateFunction + "):void", _bufferStr); var split2 = GetPositions(packet.DelegateFunction + '(', _bufferStr); var split3 = GetPositions(packet.DelegateFunction + ';', _bufferStr); packet.References = split1.Count + split2.Count + split3.Count - 1; foreach (var splitStr in split1) { var className = GetClassNameByPosition(splitStr); if (!string.IsNullOrWhiteSpace(className) && !className.StartsWith("_SafeStr")) packet.Classes.Add(className); var function = GetFunctionByPosition(splitStr); ParseVoid(packet, function); } foreach (var functionPos in split2) { BasicFunctionParser(packet, functionPos, true); packet.FunctionsOrders.Add(string.Join("-", GetFunctionOrderOfClass(functionPos, packet.DelegateFunction))); } foreach (var splitStr in split3) { var className = GetClassNameByPosition(splitStr); if (!string.IsNullOrWhiteSpace(className) && !className.StartsWith("_SafeStr")) packet.Classes.Add(className); } if (isOutGoing) { List<int> split4 = GetPositions("(k as " + packet.DelegateFunction + ')', _bufferStr); List<int> split5 = GetPositions("(event as " + packet.DelegateFunction + ')', _bufferStr); List<int> split6 = GetPositions("(k is " + packet.DelegateFunction + ')', _bufferStr); List<int> split7 = GetPositions("(event is " + packet.DelegateFunction + ')', _bufferStr); packet.References += split4.Count + split5.Count + split6.Count + split7.Count; foreach (var functionPos in split4) { BasicFunctionParser(packet, functionPos, false); packet.FunctionsOrders.Add(string.Join("-", GetFunctionOrderOfClass(functionPos, "(k as " + packet.DelegateFunction + ')'))); } foreach (var functionPos in split5) { BasicFunctionParser(packet, functionPos, false); packet.FunctionsOrders.Add(string.Join("-", GetFunctionOrderOfClass(functionPos, "(event as " + packet.DelegateFunction + ')'))); } foreach (var functionPos in split5) { BasicFunctionParser(packet, functionPos, false); packet.FunctionsOrders.Add(string.Join("-", GetFunctionOrderOfClass(functionPos, "(k is " + packet.DelegateFunction + ')'))); } foreach (var functionPos in split6) { BasicFunctionParser(packet, functionPos, false); packet.FunctionsOrders.Add(string.Join("-", GetFunctionOrderOfClass(functionPos, "(event is " + packet.DelegateFunction + ')'))); } } packet.Sort(); Console.WriteLine(packet.DelegateFunction + " " + packet.References + " " + string.Join(",", packet.Open)); Console.WriteLine(); }