Normalize all existing files to LF
This commit is contained in:
+657
-657
File diff suppressed because it is too large
Load Diff
+656
-656
File diff suppressed because it is too large
Load Diff
+73
-73
@@ -1,74 +1,74 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
partial class Program
|
||||
{
|
||||
private static readonly string csharpFieldsFile = @"d:\platform-dev\StgSharp.Tools\cs.txt";
|
||||
private static readonly string cStructFieldsFile = @"d:\platform-dev\StgSharp.Tools\c.txt";
|
||||
|
||||
static void Main()
|
||||
{
|
||||
var csharpFields = ParseFieldNames(File.ReadAllText(csharpFieldsFile), stripGlPrefix: true);
|
||||
var cStructFields = ParseFieldNames(File.ReadAllText(cStructFieldsFile), stripGlPrefix: false);
|
||||
|
||||
var missingInCStruct = new HashSet<string>(csharpFields).Except(cStructFields).ToList();
|
||||
var missingInCSharp = new HashSet<string>(cStructFields).Except(csharpFields).ToList();
|
||||
|
||||
|
||||
Console.WriteLine("Fields only in C# file:");
|
||||
missingInCStruct.ForEach(f => Console.WriteLine($" {f}"));
|
||||
|
||||
Console.WriteLine("Fields only in C struct file:");
|
||||
missingInCSharp.ForEach(f => Console.WriteLine($" {f}"));
|
||||
}
|
||||
|
||||
private static HashSet<string> ParseFieldNames(string content, bool stripGlPrefix)
|
||||
{
|
||||
content = StripComments(content);
|
||||
|
||||
var matches = stripGlPrefix
|
||||
? CSharpFieldRegex().Matches(content)
|
||||
: CStructFieldRegex().Matches(content);
|
||||
|
||||
var fields = new HashSet<string>();
|
||||
foreach (Match match in matches)
|
||||
{
|
||||
var nameGroup = match.Groups["name"];
|
||||
if (nameGroup.Success)
|
||||
{
|
||||
fields.Add(nameGroup.Value);
|
||||
}
|
||||
else if (match.Groups.Count > 1)
|
||||
{
|
||||
fields.Add(match.Groups[1].Value);
|
||||
}
|
||||
}
|
||||
return fields;
|
||||
}
|
||||
|
||||
private static string StripComments(string text)
|
||||
{
|
||||
// Remove // comments
|
||||
text = LineCommentRegex().Replace(text, string.Empty);
|
||||
// Remove /* */ comments
|
||||
text = BlockCommentRegex().Replace(text, string.Empty);
|
||||
return text;
|
||||
}
|
||||
|
||||
// C#: internal delegate*<...> glName; capture Name without the gl prefix
|
||||
[GeneratedRegex(@"^\s*internal\s+(?:unsafe\s+)?delegate\*<[^>]+?>\s+gl(?<name>[A-Za-z0-9_]+)\s*;", RegexOptions.Multiline)]
|
||||
private static partial Regex CSharpFieldRegex();
|
||||
|
||||
// C: PFNGLXYZPROC Name; capture the Name
|
||||
[GeneratedRegex(@"^\s*PFNGL[A-Z0-9_]+PROC\s+(?<name>[A-Za-z0-9_]+)\s*;", RegexOptions.Multiline)]
|
||||
private static partial Regex CStructFieldRegex();
|
||||
|
||||
[GeneratedRegex("//.*", RegexOptions.None)]
|
||||
private static partial Regex LineCommentRegex();
|
||||
|
||||
[GeneratedRegex("/\\*.*?\\*/", RegexOptions.Singleline)]
|
||||
private static partial Regex BlockCommentRegex();
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
partial class Program
|
||||
{
|
||||
private static readonly string csharpFieldsFile = @"d:\platform-dev\StgSharp.Tools\cs.txt";
|
||||
private static readonly string cStructFieldsFile = @"d:\platform-dev\StgSharp.Tools\c.txt";
|
||||
|
||||
static void Main()
|
||||
{
|
||||
var csharpFields = ParseFieldNames(File.ReadAllText(csharpFieldsFile), stripGlPrefix: true);
|
||||
var cStructFields = ParseFieldNames(File.ReadAllText(cStructFieldsFile), stripGlPrefix: false);
|
||||
|
||||
var missingInCStruct = new HashSet<string>(csharpFields).Except(cStructFields).ToList();
|
||||
var missingInCSharp = new HashSet<string>(cStructFields).Except(csharpFields).ToList();
|
||||
|
||||
|
||||
Console.WriteLine("Fields only in C# file:");
|
||||
missingInCStruct.ForEach(f => Console.WriteLine($" {f}"));
|
||||
|
||||
Console.WriteLine("Fields only in C struct file:");
|
||||
missingInCSharp.ForEach(f => Console.WriteLine($" {f}"));
|
||||
}
|
||||
|
||||
private static HashSet<string> ParseFieldNames(string content, bool stripGlPrefix)
|
||||
{
|
||||
content = StripComments(content);
|
||||
|
||||
var matches = stripGlPrefix
|
||||
? CSharpFieldRegex().Matches(content)
|
||||
: CStructFieldRegex().Matches(content);
|
||||
|
||||
var fields = new HashSet<string>();
|
||||
foreach (Match match in matches)
|
||||
{
|
||||
var nameGroup = match.Groups["name"];
|
||||
if (nameGroup.Success)
|
||||
{
|
||||
fields.Add(nameGroup.Value);
|
||||
}
|
||||
else if (match.Groups.Count > 1)
|
||||
{
|
||||
fields.Add(match.Groups[1].Value);
|
||||
}
|
||||
}
|
||||
return fields;
|
||||
}
|
||||
|
||||
private static string StripComments(string text)
|
||||
{
|
||||
// Remove // comments
|
||||
text = LineCommentRegex().Replace(text, string.Empty);
|
||||
// Remove /* */ comments
|
||||
text = BlockCommentRegex().Replace(text, string.Empty);
|
||||
return text;
|
||||
}
|
||||
|
||||
// C#: internal delegate*<...> glName; capture Name without the gl prefix
|
||||
[GeneratedRegex(@"^\s*internal\s+(?:unsafe\s+)?delegate\*<[^>]+?>\s+gl(?<name>[A-Za-z0-9_]+)\s*;", RegexOptions.Multiline)]
|
||||
private static partial Regex CSharpFieldRegex();
|
||||
|
||||
// C: PFNGLXYZPROC Name; capture the Name
|
||||
[GeneratedRegex(@"^\s*PFNGL[A-Z0-9_]+PROC\s+(?<name>[A-Za-z0-9_]+)\s*;", RegexOptions.Multiline)]
|
||||
private static partial Regex CStructFieldRegex();
|
||||
|
||||
[GeneratedRegex("//.*", RegexOptions.None)]
|
||||
private static partial Regex LineCommentRegex();
|
||||
|
||||
[GeneratedRegex("/\\*.*?\\*/", RegexOptions.Singleline)]
|
||||
private static partial Regex BlockCommentRegex();
|
||||
}
|
||||
Reference in New Issue
Block a user