forked from github/codeql
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenkindenum.pl
More file actions
executable file
·40 lines (32 loc) · 862 Bytes
/
Copy pathgenkindenum.pl
File metadata and controls
executable file
·40 lines (32 loc) · 862 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#! /usr/bin/perl
# The C# extractor is developed on Windows, so output Windows line endings.
$\="\r\n";
($entity,$extension) = @ARGV;
if ($extension eq "")
{
$extension = "_" . $entity;
}
$enumname = $entity;
$enumname =~ s/^(\w)/uc($1)/e;
$enumname =~ s/_(\w)/uc($1)/e;
print "namespace Semmle.Extraction.Kinds";
print "{";
print " /// <summary>";
print " /// This enum has been auto-generated from the C# DB scheme - do not edit.";
print " /// Auto-generate command: `genkindenum.pl " . $entity . "`";
print " /// </summary>";
print " public enum " . $enumname . "Kind";
print " {";
open FILE, "semmlecode.csharp.dbscheme" or die $!;
while (<FILE>)
{
if ((/\b${entity}.kind/ .. /;/) && /\=/)
{
s/${extension}\b//;
s/^\s*\|?\s*(\d+)\s*=\s*@(\w+).*/"\t\t" . uc($2) . " = " . $1 . ","/se;
print;
}
}
close FILE or die $!;
print " }";
print "}";