From: dpvc v. a. <we...@ma...> - 2005-06-05 23:19:59
|
Log Message: ----------- Fix some incorrect calls when the promoting types to higher precedence object types. Modified Files: -------------- pg/lib: Value.pm pg/lib/Value: Complex.pm Formula.pm Revision Data ------------- Index: Value.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Value.pm,v retrieving revision 1.36 retrieving revision 1.37 diff -Llib/Value.pm -Llib/Value.pm -u -r1.36 -r1.37 --- lib/Value.pm +++ lib/Value.pm @@ -443,7 +443,7 @@ # sub compare_string { my ($l,$r,$flag) = @_; - if ($l->promotePrecedence($r)) {return $r->compare($l,!$flag)} + if ($l->promotePrecedence($r)) {return $r->compare_string($l,!$flag)} $l = $l->stringify; $r = $r->stringify if Value::isValue($r); if ($flag) {my $tmp = $l; $l = $r; $r = $tmp} return $l cmp $r; Index: Complex.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Value/Complex.pm,v retrieving revision 1.14 retrieving revision 1.15 diff -Llib/Value/Complex.pm -Llib/Value/Complex.pm -u -r1.14 -r1.15 --- lib/Value/Complex.pm +++ lib/Value/Complex.pm @@ -159,7 +159,7 @@ sub compare { my ($l,$r,$flag) = @_; - if ($l->promotePrecedence($r)) {return $r->power($l,!$flag)} + if ($l->promotePrecedence($r)) {return $r->compare($l,!$flag)} $r = promote($r); if ($flag) {my $tmp = $l; $l = $r; $r = $tmp} my ($a,$b) = (@{$l->data}); Index: Formula.pm =================================================================== RCS file: /webwork/cvs/system/pg/lib/Value/Formula.pm,v retrieving revision 1.25 retrieving revision 1.26 diff -Llib/Value/Formula.pm -Llib/Value/Formula.pm -u -r1.25 -r1.26 --- lib/Value/Formula.pm +++ lib/Value/Formula.pm @@ -45,6 +45,16 @@ sub blank {$pkg->SUPER::new('')} # +# with() changes tree element not formula itself +# (maybe the wrong choice?) +# +sub with { + my $self = shift; my %hash = @_; + foreach my $id (keys(%hash)) {$self->{tree}{$id} = $hash{$id}} + return $self; +} + +# # Get the type from the tree # sub typeRef {(shift)->{tree}->typeRef} @@ -106,7 +116,7 @@ # sub dot { my ($l,$r,$flag) = @_; - if ($l->promotePrecedence($r)) {return $r->compare($l,!$flag)} + if ($l->promotePrecedence($r)) {return $r->dot($l,!$flag)} return bop('.',@_) if $l->type eq 'Vector' && Value::isValue($r) && $r->type eq 'Vector'; Value::_dot(@_); @@ -139,7 +149,7 @@ # sub atan2 { my ($l,$r,$flag) = @_; - if ($l->promotePrecedence($r)) {return $r->compare($l,!$flag)} + if ($l->promotePrecedence($r)) {return $r->atan2($l,!$flag)} if ($flag) {my $tmp = $l; $l = $r; $r = $tmp} Parser::Function->call('atan2',$l,$r); } |