📄 varray.java
字号:
package HECore.stddata;
import HPCore.Exception.*;
import java.util.*;
public class VArray extends Variant {
private int dim=0;
private int pushdim=0;
private int rdimnum=0;
private int ldimnum=0;
private int rpopdim=0;
private int lpopdim=0;
private Vector decHsuffix;
private String classtype="";
private Vector decLsuffix;
private Hashtable array =new Hashtable() ;
private Vector num =new Vector();
private int type=0;
private Object udtobj;
private String classType=null;
private int param_num=0;
public VArray(int dim ,int type)
{
this.dim=dim;
this.type=type;
decHsuffix =new Vector();
decLsuffix =new Vector();
}
/**
* replace a array .it's dimension
*
*
*/
public VArray(int dim, int type ,String classType)
{
this.dim=dim;
this.type=type;
this.classType=classType;
decHsuffix =new Vector();
decLsuffix =new Vector();
}
public VArray()
{
this.dim=1;
}
public VArray add(short i)
{
array.put(new Integer(param_num).toString(),new Short(i));
param_num++;
return this;
}
public VArray add(int i)
{
array.put(new Integer(param_num).toString(),new Integer(i));
param_num++;
return this;
}
public VArray add(boolean i)
{
array.put(new Integer(param_num).toString(),new Boolean(i));
param_num++;
return this;
}
public VArray add(float f)
{
array.put(new Integer(param_num).toString(),new Float(f));
param_num++;
return this;
}
public VArray add(double dbl)
{
array.put(new Integer(param_num).toString(),new Double(dbl));
param_num++;
return this;
}
public VArray add(String src)
{
array.put(new Integer(param_num).toString(),src);
param_num++;
return this;
}
public VArray add(Variant var)
{
array.put(new Integer(param_num).toString(),var);
param_num++;
return this;
}
public void dynamic(int num)
{
this.dim=num;
decHsuffix.removeAllElements();
decLsuffix.removeAllElements();
array.clear();
this.num.removeAllElements();
rpopdim=0;
lpopdim=0;
pushdim=0;
rdimnum=0;
ldimnum=0;
}
public VArray push(double ldim,double hdim)
{
int mdim =(int)(hdim - ldim)+1;
decHsuffix.addElement(new Integer((int)hdim));
decLsuffix.addElement(new Integer((int)ldim));
if(pushdim<(int)dim)
{
num.addElement(new Integer((int)mdim));
pushdim++;
return this;
}
else
{
pushdim=0;
return null;
}
}
/*****************Pop******************************/
/**
* set array index .
* return current VArray
*/
public VArray popr(short dim) throws HpException
{
int dimm=0;
if(rpopdim<this.dim)
{
if(type!=Variant.V_CTL)
{
if((((int)dim>((Integer)decHsuffix.elementAt(rpopdim)).intValue())||((int)dim<((Integer)decLsuffix.elementAt(rpopdim)).intValue())) )
throw new HpException(9," Subscript out of range");
}
if(rpopdim==this.dim-1)
dimm=(int)dim;
else
{
dimm=dim;
for(int i=rpopdim+1;i<this.dim;i++)
dimm=dimm*((Integer)num.elementAt(rpopdim)).intValue();
}
rpopdim++;
rdimnum=rdimnum+dimm;
return this;
}
rpopdim=0;
return null;
}
/**
* set array index .
* return current VArray
*/
public VArray popr(int dim) throws HpException
{
int dimm=0;
if(rpopdim<this.dim)
{
if(type!=Variant.V_CTL)
{
if((((int)dim>((Integer)decHsuffix.elementAt(rpopdim)).intValue())||((int)dim<((Integer)decLsuffix.elementAt(rpopdim)).intValue())) )
throw new HpException(9," Subscript out of range");
}
if(rpopdim==this.dim-1)
dimm=(int)dim;
else
{
dimm=dim;
for(int i=rpopdim+1;i<this.dim;i++)
dimm=dimm*((Integer)num.elementAt(rpopdim)).intValue();
}
rpopdim++;
rdimnum=rdimnum+dimm;
return this;
}
rpopdim=0;
return null;
}
/**
* set array index .
* return current VArray
*/
public VArray popr(float dim) throws HpException
{
int dimm=0;
if(rpopdim<this.dim)
{
if(type!=Variant.V_CTL)
{
if((((int)dim>((Integer)decHsuffix.elementAt(rpopdim)).intValue())||((int)dim<((Integer)decLsuffix.elementAt(rpopdim)).intValue())) )
throw new HpException(9," Subscript out of range");
}
if(rpopdim==this.dim-1)
dimm=(int)dim;
else
{
dimm=(int)dim;
for(int i=rpopdim+1;i<this.dim;i++)
dimm=dimm*((Integer)num.elementAt(rpopdim)).intValue();
}
rdimnum=rdimnum+dimm;
rpopdim++;
return this;
}
rpopdim=0;
return null;
}
/**
* set array index .
* return current VArray
*/
public VArray popr(double dim) throws HpException
{
int dimm=0;
if(rpopdim<this.dim)
{
if(type!=Variant.V_CTL)
{
if((((int)dim>((Integer)decHsuffix.elementAt(rpopdim)).intValue())||((int)dim<((Integer)decLsuffix.elementAt(rpopdim)).intValue())) )
throw new HpException(9," Subscript out of range");
}
if(rpopdim==this.dim-1)
rdimnum=(int)dim;
else
{
dimm=(int)dim;
for(int i=rpopdim+1;i<this.dim;i++)
dimm=dimm*((Integer)num.elementAt(rpopdim)).intValue();
}
rdimnum=rdimnum+dimm;
rpopdim++;
return this;
}
rpopdim=0;
return null;
}
/**
* set array index .
* return current VArray
*/
public VArray popr(Variant dim) throws HpException
{
int dimm=0;
if(rpopdim<this.dim)
{
if(type!=Variant.V_CTL)
{
if((((int)dim.dblValue()>((Integer)decHsuffix.elementAt(rpopdim)).intValue())||((int)dim.dblValue()<((Integer)decLsuffix.elementAt(rpopdim)).intValue())) )
throw new HpException(9," Subscript out of range");
}
if(rpopdim==this.dim-1)
dimm=(int)dim.dblValue();
else
{
dimm=(int)dim.dblValue();
for(int i=rpopdim+1;i<this.dim;i++)
dimm=dimm*((Integer)num.elementAt(rpopdim)).intValue();
}
rdimnum=rdimnum+dimm;
rpopdim++;
return this;
}
rpopdim=0;
return null;
}
/* ********************************
expression left
*********************************/
public VArray popl(short dim) throws HpException
{
int dimm=0;
if(lpopdim<this.dim)
{
if(type!=Variant.V_CTL)
{
if((((int)dim>((Integer)decHsuffix.elementAt(lpopdim)).intValue())||((int)dim<((Integer)decLsuffix.elementAt(lpopdim)).intValue())) )
throw new HpException(9," Subscript out of range");
}
if(lpopdim==this.dim-1)
dimm=(int)dim;
else
{
dimm=dim;
for(int i=lpopdim+1;i<this.dim;i++)
dimm=dimm*((Integer)num.elementAt(lpopdim)).intValue();
}
lpopdim++;
ldimnum=ldimnum+dimm;
return this;
}
lpopdim=0;
return null;
}
/**
* set array index .
* return current VArray
*/
public VArray popl(int dim) throws HpException
{
int dimm=0;
if(lpopdim<this.dim)
{
if(type!=Variant.V_CTL)
{
if((((int)dim>((Integer)decHsuffix.elementAt(lpopdim)).intValue())||((int)dim<((Integer)decLsuffix.elementAt(lpopdim)).intValue())) )
throw new HpException(9," Subscript out of range");
}
if(lpopdim==this.dim-1)
dimm=(int)dim;
else
{
dimm=dim;
for(int i=lpopdim+1;i<this.dim;i++)
dimm=dimm*((Integer)num.elementAt(lpopdim)).intValue();
}
lpopdim++;
ldimnum=ldimnum+dimm;
return this;
}
lpopdim=0;
return null;
}
/**
* set array index .
* return current VArray
*/
public VArray popl(float dim) throws HpException
{
int dimm=0;
if(lpopdim<this.dim)
{
if(type!=Variant.V_CTL)
{
if((((int)dim>((Integer)decHsuffix.elementAt(lpopdim)).intValue())||((int)dim<((Integer)decLsuffix.elementAt(lpopdim)).intValue())) )
throw new HpException(9," Subscript out of range");
}
if(lpopdim==this.dim-1)
dimm=(int)dim;
else
{
dimm=(int)dim;
for(int i=lpopdim+1;i<this.dim;i++)
dimm=dimm*((Integer)num.elementAt(lpopdim)).intValue();
}
ldimnum=ldimnum+dimm;
lpopdim++;
return this;
}
lpopdim=0;
return null;
}
/**
* set array index .
* return current VArray
*/
public VArray popl(double dim) throws HpException
{
int dimm=0;
if(lpopdim<this.dim)
{
if(type!=Variant.V_CTL)
{
if((((int)dim>((Integer)decHsuffix.elementAt(lpopdim)).intValue())||((int)dim<((Integer)decLsuffix.elementAt(lpopdim)).intValue())) )
throw new HpException(9," Subscript out of range");
}
if(lpopdim==this.dim-1)
ldimnum=(int)dim;
else
{
dimm=(int)dim;
for(int i=lpopdim+1;i<this.dim;i++)
dimm=dimm*((Integer)num.elementAt(lpopdim)).intValue();
}
ldimnum=ldimnum+dimm;
lpopdim++;
return this;
}
lpopdim=0;
return null;
}
/**
* set array index .
* return current VArray
*/
public VArray popl(Variant dim) throws HpException
{
int dimm=0;
if(lpopdim<this.dim)
{
if(type!=Variant.V_CTL)
{
if((((int)dim.dblValue()>((Integer)decHsuffix.elementAt(lpopdim)).intValue())||((int)dim.dblValue()<((Integer)decLsuffix.elementAt(lpopdim)).intValue())) )
throw new HpException(9," Subscript out of range");
}
if(lpopdim==this.dim-1)
dimm=(int)dim.dblValue();
else
{
dimm=(int)dim.dblValue();
for(int i=lpopdim+1;i<this.dim;i++)
dimm=dimm*((Integer)num.elementAt(lpopdim)).intValue();
}
ldimnum=ldimnum+dimm;
lpopdim++;
return this;
}
lpopdim=0;
return null;
}
/* **************************************************
expression end
****************************************/
/**
* set a String element into array.
*
*/
public void set(String src) throws HpException
{
VObject obj=null;
if(type==Variant.V_CTL && array.get(new Integer(ldimnum).toString()) instanceof VObject)
throw new HpException(28,"Out of stack space");
else
if(classType!=null && array.get(new Integer(ldimnum).toString())==null)
{
throw new HpException(91,"Object variable or With block variable not set");
}
else
if(type!=Variant.V_STR)
{
if(is_numric())
{
double d =new VString(src).dblValue();
}
}
else
array.put(new Integer(ldimnum).toString(),src);
ldimnum=0;
lpopdim=0;
pushdim=0;
}
/**
* set a short element into array.
*
*/
public void set(short i) throws HpException
{
VObject obj=null;
if(type==Variant.V_CTL && array.get(new Integer(ldimnum).toString()) instanceof VObject)
throw new HpException(28,"Out of stack space");
else
if(classType!=null && array.get(new Integer(ldimnum).toString())==null)
{
throw new HpException(91,"Object variable or With block variable not set");
}
else
array.put(new Integer(ldimnum).toString(),new Double((double)i));
ldimnum=0;
lpopdim=0;
pushdim=0;
}
/**
* set a int element into array.
*
*/
public void set(int i) throws HpException
{
VObject obj=null;
if(type==Variant.V_CTL && array.get(new Integer(ldimnum).toString()) instanceof VObject)
throw new HpException(28,"Out of stack space");
else
if(classType!=null && array.get(new Integer(ldimnum).toString())==null)
{
throw new HpException(91,"Object variable or With block variable not set");
}
else
array.put(new Integer(ldimnum).toString(),new Double((double)i));
ldimnum=0;
lpopdim=0;
pushdim=0;
}
/**
* set a float element into array.
*
*/
public void set(float f) throws HpException
{
VObject obj=null;
if(type==Variant.V_CTL && array.get(new Integer(ldimnum).toString()) instanceof VObject)
throw new HpException(28,"Out of stack space");
else
if(classType!=null && array.get(new Integer(ldimnum).toString())==null)
{
throw new HpException(91,"Object variable or With block variable not set");
}
else
array.put(new Integer(ldimnum).toString(),new Double((double)f));
ldimnum=0;
lpopdim=0;
pushdim=0;
}
/**
* set a double element into array.
*
*/
public void set(double dbl) throws HpException
{
VObject obj=null;
if(type==Variant.V_CTL && array.get(new Integer(ldimnum).toString()) instanceof VObject)
throw new HpException(28,"Out of stack space");
else
if(classType!=null && array.get(new Integer(ldimnum).toString())==null)
{
throw new HpException(91,"Object variable or With block variable not set");
}
array.put(new Integer(ldimnum).toString(),new Double(dbl));
ldimnum=0;
lpopdim=0;
pushdim=0;
}
/**
* set a boolean element into array.
*
*/
public void set(boolean flag) throws HpException
{
VObject obj=null;
if(type==Variant.V_CTL && array.get(new Integer(ldimnum).toString()) instanceof VObject)
throw new HpException(28,"Out of stack space");
else
if(classType!=null && array.get(new Integer(ldimnum).toString())==null)
{
throw new HpException(91,"Object variable or With block variable not set");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -