-
Notifications
You must be signed in to change notification settings - Fork 0
/
autogen
executable file
·94 lines (88 loc) · 2.11 KB
/
autogen
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#!/usr/bin/perl
sub generate_from_file{
our @lines;
($type, $classname, $file) = @_;
open INC, $file;
while(<INC>)
{
if(m/.*\/\*AUTOGEN_(UPDATE|PASS)\*\//)
{
s/([ ]*)([a-zA-Z0-9_]+[ \*&]*)([a-zA-Z0-9_]+)(\([^)]*\))(.*)\/\*AUTOGEN_(UPDATE|PASS)\*\/[ ]*;(.*)/$1\n$2\n$3\n$4\n$5\n$6\n$7/;
@list=split('\n', $_);
($mezery, $typ, $jmeno, $parametry, $bordel, $substituce, $ocas) = @list;
$_ = $parametry;
s/[^(),=]*[ ]+([a-zA-Z0-9]+)[ ]*(=[^,()]*)?([,()])/$1$3/g;
$parametry2 = $_;
$_=$parametry;
s/=[^,()]*//g;
$parametry3 = $_;
$def = "$typ tmp = ";
$return = " return ";
$retvar = "tmp;";
if($typ =~ "void")
{
$retvar = "";
$return = "";
$def="";
}
if($substituce =~ "UPDATE")
{
$b = "{ Init(); $def this->itr.$jmeno $parametry2; Update(); $return $retvar} ";
}
else
{
$b = "{ Init(); $return this->itr.$jmeno $parametry2;}";
}
if($type =~ "HEAD")
{
$classname = "";
$b = ";";
}
else
{
$class = "${classname}::";
$parametry = $parametry3;
}
push(@lines,"$mezery/*AUTOGENERATED*/ $typ $class$jmeno $parametry $bordel $b $ocas\n");
}
}
}
sub parse{
for my $file (@ARGV)
{
our @lines=();
open FILE, $file;
print "parsing file $file\n";
while (<FILE>)
{
chomp;
if(m/.*\/\*AUTOINCLUDE_.*\*\//)
{
push(@lines, "$_\n");
print " matching $_\n";
s/.*\/\*AUTOINCLUDE_([a-zA-Z0-9_.-]*)\*\//$1/;
print " processing $_\n";
generate_from_file split('_', $_);
}
elsif(m/\/\*AUTOGENERATED\*\//)
{
}
else
{
push(@lines, "$_\n");
}
}
close FILE;
open (FILE, '>', $file);
for (@lines)
{
if(m/^(.*?)[ ]*(\/\*\!\<.*)/)
{
$_ = sprintf("%-100s %s\n", $1, $2);
}
print FILE $_;
}
close FILE;
}
}
parse;