DTArray3D.java
上传用户:afrynkmhm
上传日期:2007-01-06
资源大小:1262k
文件大小:2k
源码类别:

编译器/解释器

开发平台:

Others

  1. package tinybasic;
  2. import antlr.collections.AST;
  3. public class DTArray3D extends DTDataType{
  4. private Object data[][][];
  5. protected int dim1,dim2,dim3;
  6. protected int base=0;
  7. public DTArray3D(int _ttype,Scope scope){
  8. super(scope,_ttype);
  9. dim1=dim2=dim3=0;
  10. }
  11. protected void init(){
  12. data =new Object[dim1][dim2][dim3];
  13. }
  14. public DTDataType getDTDataType(DTDataType i1,DTDataType i2,DTDataType i3){
  15. int idx1=i1.getInteger()-base;
  16. int idx2=i2.getInteger()-base;
  17. int idx3=i3.getInteger()-base;
  18. if(dim1==0){
  19.     dim1=10;dim2=10;dim3=10;
  20.     init();
  21. }
  22. if(idx1>dim1){
  23.     return null;
  24. } else if(idx2>dim2){
  25.     return null;
  26. } else if(idx3>dim3){
  27.     return null;
  28. } else {
  29.     DTDataType t=(DTDataType)data[idx1][idx2][idx3];
  30.     if(t==null){
  31. data[idx1][idx2][idx3]=t=getOne();
  32.     }
  33.     return t;
  34. }
  35.     }
  36. public void setDTDataType(DTDataType i1,DTDataType i2,DTDataType i3,DTDataType s){
  37. int idx1=i1.getInteger()-base;
  38. int idx2=i2.getInteger()-base;
  39. int idx3=i3.getInteger()-base;
  40. if(dim1==0){
  41.     dim1=10;dim2=10;dim3=10;
  42.     init();
  43. }
  44. if(idx1<=dim1 && idx2<=dim2 && idx3<=dim3){
  45.     DTDataType t=(DTDataType)data[idx1][idx2][idx3];
  46.     if(t==null){
  47. data[idx1][idx2][idx3]=getOne(s);
  48.     } else {
  49. t.assign(s);
  50.     }
  51. }
  52. }
  53. public int getDimension(){return 3;}
  54. public int getDimensioned(int i){
  55.     if(i==1){
  56. return dim1;
  57.     } else if (i==2){
  58. return dim2;
  59.     } else if (i==3){
  60. return dim3;
  61.     }
  62.     return 0;
  63. }
  64.     public void setDimension(int i1,int i2,int i3){
  65. dim1=i1;dim2=i2;dim3=i3;
  66. init();
  67.     }
  68.     
  69.     public int compareTo(Object o){
  70. return 0;
  71.     }
  72. }