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

编译器/解释器

开发平台:

Others

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