diff options
author | elliott_c <ocielliottc@users.noreply.github.com> | 2002-07-24 18:11:13 +0000 |
---|---|---|
committer | elliott_c <ocielliottc@users.noreply.github.com> | 2002-07-24 18:11:13 +0000 |
commit | 59b58a2e651cd3c36ee3062ce2688eb73c26d30f (patch) | |
tree | 1c0bbacf85e76c70cb1b06ad5b91cd61d7f32efb | |
parent | 533f641371d777e2c02bbaf782c12bfa78484404 (diff) | |
download | MPC-59b58a2e651cd3c36ee3062ce2688eb73c26d30f.tar.gz |
ChangeLogTag: Wed Jul 24 13:10:19 2002 Chad Elliott <elliott_c@ociweb.com>
-rw-r--r-- | modules/Creator.pm | 26 | ||||
-rw-r--r-- | modules/GUID.pm | 42 | ||||
-rw-r--r-- | modules/ProjectCreator.pm | 2 | ||||
-rw-r--r-- | modules/VC7ProjectCreator.pm | 3 |
4 files changed, 45 insertions, 28 deletions
diff --git a/modules/Creator.pm b/modules/Creator.pm index d2dbbfc5..6b9e970f 100644 --- a/modules/Creator.pm +++ b/modules/Creator.pm @@ -34,14 +34,15 @@ sub new { my($type) = shift; my($self) = Parser::new($class); - $self->{'relative'} = $relative; - $self->{'template'} = $template; - $self->{'ti'} = $ti; - $self->{'global_cfg'} = $global; - $self->{'grammar_type'} = $type; - $self->{'type_check'} = $type . '_defined'; - $self->{'global_read'} = 0; - $self->{'include_path'} = $inc; + $self->{'relative'} = $relative; + $self->{'template'} = $template; + $self->{'ti'} = $ti; + $self->{'global_cfg'} = $global; + $self->{'grammar_type'} = $type; + $self->{'type_check'} = $type . '_defined'; + $self->{'global_read'} = 0; + $self->{'include_path'} = $inc; + $self->{'current_input'} = ""; return $self; } @@ -97,6 +98,8 @@ sub generate { } if ($status) { + $self->{'current_input'} = $input; + ## An empty input file name says that we ## should generate a default input file and use that if ($input eq "") { @@ -301,6 +304,13 @@ sub transform_file_name { return $name; } + +sub get_current_input { + my($self) = shift; + return $self->{'current_input'}; +} + + # ************************************************************ # Virtual Methods To Be Overridden # ************************************************************ diff --git a/modules/GUID.pm b/modules/GUID.pm index e53f6ea1..944813a1 100644 --- a/modules/GUID.pm +++ b/modules/GUID.pm @@ -11,6 +11,7 @@ package GUID; # ************************************************************ use strict; +use Cwd; # ************************************************************ # Subroutine Section @@ -26,27 +27,32 @@ sub new { sub generate { my($self) = shift; - my($str) = shift; - my($time) = time(); ## 32 bits - my($hash) = 0; ## 32 bits - my($rand1) = int(rand(0xffff)); ## 16 bits - my($rand2) = int(rand(0xffff)); ## 16 bits - my($rand3) = int(rand(0xffff)); ## 16 bits - my($rand4) = $$ + int(rand(0xff)); ## 16 bits - - - ## Hash the input string - my($length) = length($str); - for(my $i = 0; $i < $length; $i++) { - my($high) = $hash & 0xf8000000; - $hash <<= 5; - $hash ^= ($high >> 27); - $hash ^= ord(substr($str, $i, 1)); - } + my($out) = shift; + my($in) = shift; + my($chash) = $self->hash(getcwd()); + my($nhash) = $self->hash($out); + my($ihash) = $self->hash($in); + my($val) = 0xfeca1bad; return sprintf("%08X-%04X-%04X-%04X-%04X%08X", - $hash, $rand1, $rand2, $rand3, $rand4, $time); + $nhash, ($val >> 16) & 0xffff, ($val & 0xffff), + ($ihash >> 16) & 0xffff, $ihash & 0xffff, $chash); } +sub hash { + my($self) = shift; + my($str) = shift; + my($value) = 0; + + if (defined $str) { + my($length) = length($str); + for(my $i = 0; $i < $length; $i++) { + $value = ($value << 4) ^ ($value >> 28) ^ ord(substr($str, $i, 1)); + } + } + + return $value; +} + 1; diff --git a/modules/ProjectCreator.pm b/modules/ProjectCreator.pm index a8835e92..4cc98185 100644 --- a/modules/ProjectCreator.pm +++ b/modules/ProjectCreator.pm @@ -100,7 +100,7 @@ sub new { 'header_files' => [ "\\.h", "\\.hxx", "\\.hh", ], 'inline_files' => [ "\\.i", "\\.inl", ], 'idl_files' => [ "\\.idl", ], - 'documentation_files' => [ "\\.doc", "\\.txt", ], + 'documentation_files' => [ "README", "readme", "\\.doc", "\\.txt", ], 'resource_files' => [ "\\.rc", ], ); diff --git a/modules/VC7ProjectCreator.pm b/modules/VC7ProjectCreator.pm index c2307044..08bc44a6 100644 --- a/modules/VC7ProjectCreator.pm +++ b/modules/VC7ProjectCreator.pm @@ -80,7 +80,8 @@ sub fill_value { if ($name eq "guid") { my($guid) = new GUID(); - $value = $guid->generate($self->project_file_name()); + $value = $guid->generate($self->project_file_name(), + $self->get_current_input()); } return $value; } |