1 package jp.nyatla.util;
\r
3 * double型ポインタのエミュレートクラス
\r
4 * 対象のdouble配列を基点を基準に参照する。
\r
7 public class DoublePointer
\r
9 private double[] array_ref; //配列
\r
10 private int array_offset; //配列に対する基準値
\r
11 private int position; //array_offsetに対する現在位置
\r
12 public static DoublePointer wrap(double[] i_array_ref,int i_offset)
\r
14 return new DoublePointer(i_array_ref,i_offset);
\r
16 public static DoublePointer wrap(DoublePointer i_inst)
\r
18 return new DoublePointer(i_inst.array_ref,i_inst.getPtrArrayOffset());
\r
20 //現在位置からのサブシーケンスを返す。
\r
21 public DoublePointer slice(int i_offset)
\r
23 return DoublePointer.wrap(array_ref,array_offset+position+i_offset);
\r
25 public void set(double i_value)
\r
27 array_ref[array_offset+position]=i_value;
\r
29 public void set(int i_rel_positon,double i_value)
\r
31 array_ref[array_offset+position+i_rel_positon]=i_value;
\r
39 return array_ref[array_offset+position];
\r
42 * カレント位置から+i_slideの位置にある値を取得する。
\r
46 public double get(int i_slide)
\r
48 return array_ref[array_offset+position+i_slide];
\r
50 public void incPtr()
\r
54 public void addPtr(int v)
\r
58 public double[] array()
\r
62 public void subValue(double i_val)
\r
64 array_ref[array_offset+position]-=i_val;
\r
66 public void subValue(int i_step,double i_val)
\r
68 array_ref[array_offset+position+i_step]-=i_val;
\r
70 public void addValue(double i_val)
\r
72 array_ref[array_offset+position]+=i_val;
\r
74 public void addValue(int i_step,double i_val)
\r
76 array_ref[array_offset+position+i_step]+=i_val;
\r
83 public int getPtrArrayOffset()
\r
85 return array_offset+position;
\r
87 private DoublePointer(double[] i_array_ref,int i_base_point)
\r
89 array_offset =i_base_point;
\r
90 array_ref =i_array_ref;
\r
93 public DoublePointer(int i_length)
\r
96 array_ref =new double[i_length];
\r
99 public DoublePointer()
\r
102 array_ref =new double[1];
\r