📄 parseinc.pl
字号:
#!/usr/bin/perlif (scalar @ARGV != 1) { print STDERR "usage: ./parseinc.pl file.inc\n"; exit 1;}my $inc_file = $ARGV[0];my $switch_file = `basename $inc_file`;chomp $switch_file;$switch_file =~ s/\.inc$/_switch.c/;my $h_file = `basename $inc_file`;chomp $h_file;$h_file =~ s/.inc$/_switch.h/;open FH, ">$h_file" || exit 1;open FC, ">$switch_file" || exit 1;print FC "// THIS IS AN AUTOMATICALLY GENERATED FILE --- DO NOT CHANGE\n";print FC "\n";print FC "#include \"common.h\"\n";print FC "#include \"${h_file}\"\n";print FC "\n";print FC "int kernel_setproperty(struct quasarprivate *pQ,kernelproperty *pKp)\n";print FC "{\n";print FC "\tint rc=-1;\n";print FC "\n";print FC "\tswitch (pKp->kernelpropid_value) {\n";my $prop_set;my $prop_subset;my $prop_id;while (<>) { if (/^RM_DEFINE_FULL_PROPERTY\((\w+)\s*,\s*(\w+)\s*,\s*(\w+)\)/) { $prop_set = $1; $prop_subset = $2; $prop_id = $3; if ($prop_set =~ /KERNEL/) { push @subset_tab, $prop_subset; push @id_tab, $prop_id; print FH "int SetKernel${prop_subset}${prop_id}(struct quasarprivate *pQ, RMKERNEL${prop_subset}${prop_id}_type *prop);\n"; print FH "int GetKernel${prop_subset}${prop_id}(struct quasarprivate *pQ, RMKERNEL${prop_subset}${prop_id}_type *prop);\n"; } }}my $i = 0;foreach $prop_subset (@subset_tab) { $prop_id = $id_tab[$i]; print FC "\tcase PROPID_KERNEL_${prop_subset}_${prop_id}:\n"; print FC "\t\trc = SetKernel${prop_subset}${prop_id}(pQ, pKp->pValue);\n"; print FC "\t\tbreak;\n"; print FC "\n"; $i ++;}print FC "\tdefault:\n";print FC "\t\tbreak;\n";print FC "\t}\n";print FC "\n";print FC "\treadablelog(pQ,\"kernel_setproperty: \",PROP_K,pKp,rc);\n";print FC "\n";print FC "\treturn rc;\n";print FC "}\n";print FC "\n";print FC "int kernel_getproperty(struct quasarprivate *pQ,kernelproperty *pKp)\n";print FC "{\n";print FC "\tint rc=-1;\n";print FC "\n";print FC "\tswitch (pKp->kernelpropid_value) {\n";while ($prop_subset = shift @subset_tab) { $prop_id = shift @id_tab; print FC "\tcase PROPID_KERNEL_${prop_subset}_${prop_id}:\n"; print FC "\t\trc = GetKernel${prop_subset}${prop_id}(pQ, pKp->pValue);\n"; print FC "\t\tbreak;\n"; print FC "\n";}print FC "\tdefault:\n";print FC "\t\tbreak;\n";print FC "\t}\n";print FC "\n";print FC "\treadablelog(pQ,\"kernel_getproperty: \",PROP_K,pKp,rc);\n";print FC "\n";print FC "\treturn rc;\n";print FC "}\n";close FH;close FC;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -