📄 dependencygenerator.pm
字号:
package DependencyGenerator;# ************************************************************# Description : Runs the correct dependency generator on the file.# Author : Chad Elliott# Create Date : 2/10/2002# ************************************************************# ************************************************************# Pragmas# ************************************************************use strict;use Preprocessor;use DependencyWriterFactory;use ObjectGeneratorFactory;# ************************************************************# Subroutine Section# ************************************************************sub new { my($class) = shift; my($macros) = shift; my($ipaths) = shift; my($replace) = shift; my($type) = shift; my($noinline) = shift; my($exclude) = shift; my($self) = bless {'pre' => new Preprocessor($macros, $ipaths, $exclude), 'replace' => $replace, 'dwrite' => DependencyWriterFactory::create($type), 'objgen' => ObjectGeneratorFactory::create($type), 'noinline' => $noinline, }, $class; ## Set the current working directory, but ## escape regular expression special characters $self->{'cwd'} = Cwd::getcwd() . '/'; $self->{'cwd'} =~ s/([\+\-\\\$\[\]\(\)\.])/\\$1/g; ## Sort the replace keys to get the longest key first. This way ## when we are replacing portions of the file path, we replace the ## most we can. my(@repkeys) = sort { length($b) <=> length($a) } keys %$replace; $self->{'repkeys'} = \@repkeys; return $self;}sub process { my($self) = shift; my($file) = shift; ## Generate the dependency string my($depstr) = $self->{'dwrite'}->process( $self->{'objgen'}->process($file), $self->{'pre'}->process($file, $self->{'noinline'})); ## Perform the replacements on the dependency string $depstr =~ s/$self->{'cwd'}//go; my($replace) = $self->{'replace'}; foreach my $rep (@{$self->{'repkeys'}}) { $depstr =~ s/$rep/$$replace{$rep}/g; } return $depstr;}1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -