00001 package javasci ;
00002
00003
00004
00005
00006 public class SciStringArray implements java.io.Serializable
00007 {
00008
00009 private String [] x ;
00010 private int m, n;
00011 private String name;
00012
00013
00014 private static native void Initialize();
00019 private native int getRowFromScilab(String name);
00026 private native int getColFromScilab(String name);
00033 public native boolean Job(String job);
00038 public native String GetElement(int indr, int indc);
00039 private native void SendString(String str,int indr, int indc);
00040
00044
00045 static
00046 {
00047 System.loadLibrary("javasci");
00048 Initialize();
00049 }
00050
00051 public SciStringArray(String name,SciStringArray Obj)
00052 {
00053 this.name = name;
00054 this.m = Obj.getRow() ;
00055 this.n = Obj.getCol();
00056 this.x = new String[m*n];
00057
00058 this.x =Obj.getData() ;
00059 Send();
00060 }
00061
00062 public SciStringArray(String name,int r,int c)
00063 {
00064 this.m = r ;
00065 this.n = c ;
00066 this.x = new String[r*c];
00067 this.name = name;
00068
00069 if ( (Scilab.TypeVar(name) == 10) &
00070 (getRowFromScilab(name) == c) &
00071 (getColFromScilab(name) == r) )
00072 {
00073 Get();
00074 }
00075 else
00076 {
00077 for ( int i = 0 ; i < r*c ; i++)x[i]="";
00078 Send();
00079 }
00080 }
00081
00082 public SciStringArray(String name,int r,int c,String [] x )
00083 {
00084 if ( r*c != x.length)
00085 {
00086 throw new BadDataArgumentException("Bad Matrix call, size of third argument is wrong");
00087 }
00088 this.m = r ;
00089 this.n = c;
00090 this.x = x;
00091 this.name = name;
00092 Send();
00093 }
00094
00095 public int getRow()
00096 {
00097 return m;
00098 }
00099
00100 public int getCol()
00101 {
00102 return n;
00103 }
00104
00105 public String getName()
00106 {
00107 return name;
00108 }
00109
00110 public String[] getData()
00111 {
00112 Get();
00113 return x;
00114 }
00115
00116 public void Get()
00117 {
00118 int indr, indc;
00119
00120 for(indr=1;indr<=m;indr++)
00121 {
00122 for(indc=1;indc<=n;indc++)
00123 {
00124 x[(indc-1)*m+(indr-1)]=GetElement(indr,indc);
00125 }
00126
00127 }
00128 }
00129
00130 public void Send()
00131 {
00132 int indx, indy;
00133
00134 for(indx=0;indx<m;indx++)
00135 {
00136 for(indy=0;indy<n;indy++)
00137 {
00138 SendString(x[indx+indy*m],indx,indy);
00139 }
00140 }
00141 }
00142
00143 public void disp()
00144 {
00145 Get();
00146 System.out.println("Matrix "+ getName() +"=");
00147 Job( "disp(" + getName() +");");
00148 }
00149 }
00150