[libinline-java-perl] 347/398: performed many optimizations
Jonas Smedegaard
dr at jones.dk
Thu Feb 26 11:43:21 UTC 2015
This is an automated email from the git hooks/post-receive script.
js pushed a commit to tag 0.55
in repository libinline-java-perl.
commit b7d68dfc1f18482905f77bc3081066c842dcaf7b
Author: patrick_leb <>
Date: Wed Aug 10 16:53:25 2005 +0000
performed many optimizations
---
Java/Class.pm | 116 ++++++++++++++++++++++++----------------------------------
1 file changed, 48 insertions(+), 68 deletions(-)
diff --git a/Java/Class.pm b/Java/Class.pm
index 5123373..a39e3e8 100644
--- a/Java/Class.pm
+++ b/Java/Class.pm
@@ -60,6 +60,38 @@ $RANGE->{double} = $RANGE->{'java.lang.Double'} ;
$RANGE->{'java.lang.Number'} = $RANGE->{'java.lang.Double'} ;
+my %numeric_classes = map {($_ => 1)} qw(
+ java.lang.Byte
+ java.lang.Short
+ java.lang.Integer
+ java.lang.Long
+ java.lang.Float
+ java.lang.Double
+ java.lang.Number
+ byte
+ short
+ int
+ long
+ float
+ double
+) ;
+
+my %string_classes = map {($_ => 1)} qw(
+ java.lang.String
+ java.lang.StringBuffer
+) ;
+
+my %char_classes = map {($_ => 1)} qw(
+ java.lang.Character
+ char
+) ;
+
+my %bool_classes = map {($_ => 1)} qw(
+ java.lang.Boolean
+ boolean
+) ;
+
+
# This method makes sure that the class we are asking for
# has the correct form for a Java class.
sub ValidateClass {
@@ -71,13 +103,16 @@ sub ValidateClass {
}
+my $class_name_regexp = '([\w$]+)(((\.([\w$]+))+)?)' ;
+my $class_regexp1 = qr/^($class_name_regexp)()()()$/o ;
+my $class_regexp2 = qr/^(\[+)([BCDFIJSZ])()()$/o ;
+my $class_regexp3 = qr/^(\[+)([L])($class_name_regexp)(;)$/o ;
sub ValidateClassSplit {
my $class = shift ;
- my $cre = '([\w$]+)(((\.([\w$]+))+)?)' ;
- if (($class =~ /^($cre)()()()$/)||
- ($class =~ /^(\[+)([BCDFIJSZ])()()$/)||
- ($class =~ /^(\[+)([L])($cre)(;)$/)){
+ if (($class =~ $class_regexp1)||
+ ($class =~ $class_regexp2)||
+ ($class =~ $class_regexp3)){
return (wantarray ? ($1, $2, $3, $4) : $class) ;
}
@@ -93,13 +128,14 @@ sub CastArguments {
Inline::Java::debug_obj($args) ;
Inline::Java::debug_obj($proto) ;
- if (scalar(@{$args}) != scalar(@{$proto})){
+ my $nb_args = scalar(@{$args}) ;
+ if ($nb_args != scalar(@{$proto})){
croak "Wrong number of arguments" ;
}
my $ret = [] ;
my $score = 0 ;
- for (my $i = 0 ; $i < scalar(@{$args}) ; $i++){
+ for (my $i = 0 ; $i < $nb_args ; $i++){
my $arg = $args->[$i] ;
my $pro = $proto->[$i] ;
my @r = CastArgument($arg, $pro, $inline) ;
@@ -124,7 +160,7 @@ sub CastArgument {
my $array_score = 0 ;
- my $sub = sub {
+ my @ret = eval {
my $array_type = undef ;
if ((defined($arg))&&(UNIVERSAL::isa($arg, "Inline::Java::Class::Coerce"))){
my $v = $arg->__get_value() ;
@@ -302,8 +338,7 @@ sub CastArgument {
return ($arg, 1) ;
}
} ;
-
- my @ret = $sub->() ;
+ die("$@\n") if $@ ;
if ((defined($arg_ori))&&(UNIVERSAL::isa($arg_ori, "Inline::Java::Class::Coerce"))){
# It seems we had casted the variable to a specific type
@@ -338,83 +373,28 @@ sub IsMaxArgumentsScore {
sub ClassIsNumeric {
my $class = shift ;
- my @list = qw(
- java.lang.Byte
- java.lang.Short
- java.lang.Integer
- java.lang.Long
- java.lang.Float
- java.lang.Double
- java.lang.Number
- byte
- short
- int
- long
- float
- double
- ) ;
-
- foreach my $l (@list){
- if ($class eq $l){
- return 1 ;
- }
- }
-
- return 0 ;
+ return $numeric_classes{$class} ;
}
sub ClassIsString {
my $class = shift ;
- my @list = qw(
- java.lang.String
- java.lang.StringBuffer
- ) ;
-
- foreach my $l (@list){
- if ($class eq $l){
- return 1 ;
- }
- }
-
- return 0 ;
+ return $string_classes{$class} ;
}
sub ClassIsChar {
my $class = shift ;
- my @list = qw(
- java.lang.Character
- char
- ) ;
-
- foreach my $l (@list){
- if ($class eq $l){
- return 1 ;
- }
- }
-
- return 0 ;
+ return $char_classes{$class} ;
}
sub ClassIsBool {
my $class = shift ;
- my @list = qw(
- java.lang.Boolean
- boolean
- ) ;
-
- foreach my $l (@list){
- if ($class eq $l){
- return 1 ;
- }
- }
-
- return 0 ;
+ return $bool_classes{$class} ;
}
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libinline-java-perl.git
More information about the Pkg-perl-cvs-commits
mailing list