1 package jp.nyatla.util;
\r
3 * double型ポインタのエミュレートクラス
\r
4 * 対象のdouble配列を基点を基準に参照する。
\r
8 public class DoublePointer
\r
10 private double[] array_ref; //配列
\r
11 private int array_offset; //配列に対する基準値
\r
12 private int position; //array_offsetに対する現在位置
\r
13 public static DoublePointer wrap(double[] i_array_ref,int i_offset)
\r
15 return new DoublePointer(i_array_ref,i_offset);
\r
17 public static DoublePointer wrap(DoublePointer i_inst)
\r
19 return new DoublePointer(i_inst.array_ref,i_inst.getPtrArrayOffset());
\r
21 //現在位置からのサブシーケンスを返す。
\r
22 public DoublePointer slice(int i_offset)
\r
24 return DoublePointer.wrap(array_ref,array_offset+position+i_offset);
\r
26 public void set(double i_value)
\r
28 array_ref[array_offset+position]=i_value;
\r
30 public void set(int i_rel_positon,double i_value)
\r
32 array_ref[array_offset+position+i_rel_positon]=i_value;
\r
40 return array_ref[array_offset+position];
\r
43 * カレント位置から+i_slideの位置にある値を取得する。
\r
47 public double get(int i_slide)
\r
49 return array_ref[array_offset+position+i_slide];
\r
51 public void incPtr()
\r
55 public void addPtr(int v)
\r
59 public double[] array()
\r
63 public void subValue(double i_val)
\r
65 array_ref[array_offset+position]-=i_val;
\r
67 public void subValue(int i_step,double i_val)
\r
69 array_ref[array_offset+position+i_step]-=i_val;
\r
71 public void addValue(double i_val)
\r
73 array_ref[array_offset+position]+=i_val;
\r
75 public void addValue(int i_step,double i_val)
\r
77 array_ref[array_offset+position+i_step]+=i_val;
\r
84 public int getPtrArrayOffset()
\r
86 return array_offset+position;
\r
88 private DoublePointer(double[] i_array_ref,int i_base_point)
\r
90 array_offset =i_base_point;
\r
91 array_ref =i_array_ref;
\r
94 public DoublePointer(int i_length)
\r
97 array_ref =new double[i_length];
\r
100 public DoublePointer()
\r
103 array_ref =new double[1];
\r