@@ -796,95 +796,88 @@ public static ByReference getAsReferenceWrapper(Object val, String signature){
796796 switch ( signature .charAt (0 )){
797797 case 'i' :
798798 case 'I' :
799- if ( !int .class .isInstance (val ) ){
800- if ( Number .class .isInstance (val ) ){
801- val = ((Number )val ).intValue ();
802- } else if ( String .class .isInstance (val )){
803- val = Integer .valueOf ((String ) val );
804- } else {
805- throw new RuntimeException ("Attempt to pass ineligible value to int: " +val );
806- }
799+ int intVal ;
800+ if (val instanceof Number ) {
801+ intVal = ((Number ) val ).intValue ();
802+ } else if (val instanceof String ) {
803+ intVal = Integer .parseInt ((String ) val );
804+ } else {
805+ throw new RuntimeException ("Attempt to pass ineligible value to int: " +val );
807806 }
808- return new IntByReference (( Integer ) val );
807+ return new IntByReference (intVal );
809808 case 's' :
810809 case 'S' :
811- if ( !short .class .isInstance (val ) ){
812- if ( Number .class .isInstance (val ) ){
813- val = ((Number )val ).shortValue ();
814- } else if ( String .class .isInstance (val )){
815- val = Short .valueOf ((String ) val );
816- } else {
817- throw new RuntimeException ("Attempt to pass ineligible value to short: " +val );
818- }
810+ short shortVal ;
811+ if (val instanceof Number ) {
812+ shortVal = ((Number ) val ).shortValue ();
813+ } else if (val instanceof String ) {
814+ shortVal = Short .parseShort ((String ) val );
815+ } else {
816+ throw new RuntimeException ("Attempt to pass ineligible value to short: " +val );
819817 }
820- return new ShortByReference (( Short ) val );
818+ return new ShortByReference (shortVal );
821819
822820 case 'l' :
823821 case 'L' :
824822 case 'q' :
825823 case 'Q' :
826- if ( !long .class .isInstance (val ) ){
827- if ( Number .class .isInstance (val ) ){
828- val = ((Number )val ).longValue ();
829- } else if ( String .class .isInstance (val )){
830- val = Long .valueOf ((String ) val );
831- } else {
832- throw new RuntimeException ("Attempt to pass ineligible value to long: " +val );
833- }
824+ long longVal ;
825+ if (val instanceof Number ) {
826+ longVal = ((Number ) val ).longValue ();
827+ } else if (val instanceof String ) {
828+ longVal = Long .parseLong ((String ) val );
829+ } else {
830+ throw new RuntimeException ("Attempt to pass ineligible value to long: " +val );
834831 }
835- return new LongByReference (( Long ) val );
832+ return new LongByReference (longVal );
836833
837834 case 'f' :
838- if ( !float .class .isInstance (val ) ){
839- if ( Number .class .isInstance (val ) ){
840- val = ((Number )val ).floatValue ();
841- } else if ( String .class .isInstance (val )){
842- val = Float .valueOf ((String ) val );
843- } else {
844- throw new RuntimeException ("Attempt to pass ineligible value to long: " +val );
845- }
835+ float floatVal ;
836+ if (val instanceof Number ) {
837+ floatVal = ((Number ) val ).floatValue ();
838+ } else if (val instanceof String ) {
839+ floatVal = Float .parseFloat ((String ) val );
840+ } else {
841+ throw new RuntimeException ("Attempt to pass ineligible value to float: " +val );
846842 }
847- return new FloatByReference (( Float ) val );
843+ return new FloatByReference (floatVal );
848844
849845 case 'd' :
850- if ( !double .class .isInstance (val ) ){
851- if ( Number .class .isInstance (val ) ){
852- val = ((Number )val ).doubleValue ();
853- } else if ( String .class .isInstance (val )){
854- val = Double .valueOf ((String ) val );
855- } else {
856- throw new RuntimeException ("Attempt to pass ineligible value to long: " +val );
857- }
846+ double doubleVal ;
847+ if (val instanceof Number ) {
848+ doubleVal = ((Number ) val ).doubleValue ();
849+ } else if (val instanceof String ) {
850+ doubleVal = Double .parseDouble ((String ) val );
851+ } else {
852+ throw new RuntimeException ("Attempt to pass ineligible value to double: " +val );
858853 }
859- return new DoubleByReference (( Double ) val );
854+ return new DoubleByReference (doubleVal );
860855 case 'B' :
861856 case 'b' :
862857 case 'c' :
863858 case 'C' :
864- if (Boolean .class .isInstance (val )) {
865- val = (byte ) (Boolean .TRUE .equals (val ) ? 1 : 0 );
866- } else if (Number .class .isInstance (val )) {
867- val = ((Number ) val ).byteValue ();
868- } else if (String .class .isInstance (val )) {
869- val = Byte .valueOf ((String ) val );
870- } else {
871- throw new RuntimeException ("Attempt to pass ineligible value to byte: " + val );
872- }
873- return new ByteByReference ((Byte ) val );
859+ byte byteVal ;
860+ if (val instanceof Boolean ) {
861+ byteVal = (byte ) (Boolean .TRUE .equals (val ) ? 1 : 0 );
862+ } else if (val instanceof Number ) {
863+ byteVal = ((Number ) val ).byteValue ();
864+ } else if (val instanceof String ) {
865+ byteVal = Byte .parseByte ((String ) val );
866+ } else {
867+ throw new RuntimeException ("Attempt to pass ineligible value to byte: " + val );
868+ }
869+ return new ByteByReference (byteVal );
874870 case 'v' :
875871 return null ;
876872 case '^' :
877873 default :
878- if ( Pointer . class . isInstance ( val ) ) {
874+ if (val instanceof Pointer ) {
879875 return new PointerByReference ((Pointer )val );
880- } else if ( Long . class . isInstance ( val ) || long . class . isInstance ( val )) {
881- return new PointerByReference (new Pointer ((Long )val ));
876+ } else if (val instanceof Long ) {
877+ return new PointerByReference (new Pointer ((Long ) val ));
882878 } else {
883879 throw new RuntimeException ("Don't know what to do for conversion of value " +val +" and signature " +signature );
884- }
885-
886-
887-
880+ }
888881 }
889882
890883 }
0 commit comments