From d06c902358c78d5d0c4a907c8d1e6caf226d555d Mon Sep 17 00:00:00 2001 From: kruland2607 Date: Wed, 18 Jul 2012 20:29:05 +0000 Subject: [PATCH] Had to implement Arrays.copyOf for doubles because froyo doesn't have that either. git-svn-id: https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk@906 180e2498-e6e9-4542-8430-84ac67f01cd8 --- .../sf/openrocket/motor/ThrustCurveMotor.java | 7 ++-- .../net/sf/openrocket/util/ArrayUtils.java | 37 +++++++++++++++++++ 2 files changed, 41 insertions(+), 3 deletions(-) diff --git a/core/src/net/sf/openrocket/motor/ThrustCurveMotor.java b/core/src/net/sf/openrocket/motor/ThrustCurveMotor.java index 8467c0a3..0781c7c8 100644 --- a/core/src/net/sf/openrocket/motor/ThrustCurveMotor.java +++ b/core/src/net/sf/openrocket/motor/ThrustCurveMotor.java @@ -7,6 +7,7 @@ import java.util.Locale; import net.sf.openrocket.logging.LogHelper; import net.sf.openrocket.models.atmosphere.AtmosphericConditions; import net.sf.openrocket.startup.Application; +import net.sf.openrocket.util.ArrayUtils; import net.sf.openrocket.util.BugException; import net.sf.openrocket.util.Coordinate; import net.sf.openrocket.util.Inertia; @@ -54,11 +55,11 @@ public class ThrustCurveMotor implements Motor, Comparable { this.designation = m.designation; this.description = m.description; this.type = m.type; - this.delays = Arrays.copyOf(m.delays, m.delays.length); + this.delays = ArrayUtils.copyOf(m.delays, m.delays.length); this.diameter = m.diameter; this.length = m.length; - this.time = Arrays.copyOf(m.time, m.time.length); - this.thrust = Arrays.copyOf(m.thrust, m.thrust.length); + this.time = ArrayUtils.copyOf(m.time, m.time.length); + this.thrust = ArrayUtils.copyOf(m.thrust, m.thrust.length); this.cg = new Coordinate[ m.cg.length ]; for( int i = 0; i< cg.length; i++ ) { this.cg[i] = m.cg[i].clone(); diff --git a/core/src/net/sf/openrocket/util/ArrayUtils.java b/core/src/net/sf/openrocket/util/ArrayUtils.java index 4202c53c..ac32abbe 100644 --- a/core/src/net/sf/openrocket/util/ArrayUtils.java +++ b/core/src/net/sf/openrocket/util/ArrayUtils.java @@ -4,6 +4,10 @@ import java.lang.reflect.Array; public class ArrayUtils { + public static T[] copyOf( T[] original, int length ) { + return copyOfRange(original,0,length); + } + /** * Implementation of java.util.Arrays.copyOfRange * @@ -42,5 +46,38 @@ public class ArrayUtils { return result; } + + public static double[] copyOf( double[] original, int length ) { + return copyOfRange(original,0,length); + } + public static double[] copyOfRange( double[] original, int start, int end ) { + + if ( original == null ) { + throw new NullPointerException(); + } + + if ( start < 0 || start > original.length ) { + throw new ArrayIndexOutOfBoundsException(); + } + + if ( start > end ) { + throw new IllegalArgumentException(); + } + + double[] result = new double[(end-start)]; + + int index = 0; + int stop = original.length < end ? original.length : end; + for ( int i = start; i < stop; i ++ ) { + if ( i < original.length ) { + result[index] = original[i]; + } + index++; + } + + return result; + + } + } -- 2.47.2