📄 ptg.java
字号:
case ArrayPtgV.sid : // 0x40 retval = new ArrayPtgV(in); break; case ArrayPtgA.sid : // 0x60 retval = new ArrayPtgA(in); break; case FuncPtg.sid : // 0x21 case FuncPtg.sid + 0x20 : // 0x41 case FuncPtg.sid + 0x40 : // 0x61 retval = new FuncPtg(in); break; case FuncVarPtg.sid : // 0x22 case FuncVarPtg.sid + 0x20 : // 0x42 case FuncVarPtg.sid + 0x40 : // 0x62 retval = new FuncVarPtg(in); break; case ReferencePtg.sid : // 0x24 retval = new ReferencePtg(in); break; case RefAPtg.sid : // 0x64 retval = new RefAPtg(in); break; case RefVPtg.sid : // 0x44 retval = new RefVPtg(in); break; case RefNAPtg.sid : // 0x6C retval = new RefNAPtg(in); break; case RefNPtg.sid : // 0x2C retval = new RefNPtg(in); break; case RefNVPtg.sid : // 0x4C retval = new RefNVPtg(in); break; case AreaPtg.sid : // 0x25 retval = new AreaPtg(in); break; case AreaVPtg.sid: // 0x45 retval = new AreaVPtg(in); break; case AreaAPtg.sid: // 0x65 retval = new AreaAPtg(in); break; case AreaNAPtg.sid : // 0x6D retval = new AreaNAPtg(in); break; case AreaNPtg.sid : // 0x2D retval = new AreaNPtg(in); break; case AreaNVPtg.sid : // 0x4D retval = new AreaNVPtg(in); break; case MemAreaPtg.sid : // 0x26 case MemAreaPtg.sid + 0x40 : // 0x46 case MemAreaPtg.sid + 0x20 : // 0x66 retval = new MemAreaPtg(in); break; case MemErrPtg.sid : // 0x27 case MemErrPtg.sid + 0x20 : // 0x47 case MemErrPtg.sid + 0x40 : // 0x67 retval = new MemErrPtg(in); break; case MemFuncPtg.sid : // 0x29 retval = new MemFuncPtg(in); break; case RefErrorPtg.sid : // 0x2a case RefErrorPtg.sid + 0x20 : // 0x4a case RefErrorPtg.sid + 0x40 : // 0x6a retval = new RefErrorPtg(in); break; case AreaErrPtg.sid : // 0x2b case AreaErrPtg.sid + 0x20 : // 0x4b case AreaErrPtg.sid + 0x40 : // 0x6b retval = new AreaErrPtg(in); break; case NamePtg.sid : // 0x23 case NamePtg.sid + 0x20 : // 0x43 case NamePtg.sid + 0x40 : // 0x63 retval = new NamePtg(in); break; case NameXPtg.sid : // 0x39 case NameXPtg.sid + 0x20 : // 0x45 case NameXPtg.sid + 0x40 : // 0x79 retval = new NameXPtg(in); break; case Area3DPtg.sid : // 0x3b case Area3DPtg.sid + 0x20 : // 0x5b case Area3DPtg.sid + 0x40 : // 0x7b retval = new Area3DPtg(in); break; case Ref3DPtg.sid : // 0x3a case Ref3DPtg.sid + 0x20: // 0x5a case Ref3DPtg.sid + 0x40: // 0x7a retval = new Ref3DPtg(in); break; case DeletedRef3DPtg.sid: // 0x3c case DeletedRef3DPtg.sid + 0x20: // 0x5c case DeletedRef3DPtg.sid + 0x40: // 0x7c retval = new DeletedRef3DPtg(in); break; case DeletedArea3DPtg.sid : // 0x3d case DeletedArea3DPtg.sid + 0x20 : // 0x5d case DeletedArea3DPtg.sid + 0x40 : // 0x7d retval = new DeletedArea3DPtg(in); break; default : //retval = new UnknownPtg(); throw new java.lang.UnsupportedOperationException(" Unknown Ptg in Formula: 0x"+ Integer.toHexString(( int ) id) + " (" + ( int ) id + ")"); } if (id > 0x60) { retval.setClass(CLASS_ARRAY); } else if (id > 0x40) { retval.setClass(CLASS_VALUE); } else { retval.setClass(CLASS_REF); } return retval; } public static int serializePtgStack(Stack expression, byte[] array, int offset) { int pos = 0; int size = 0; if (expression != null) size = expression.size(); List arrayPtgs = null; for (int k = 0; k < size; k++) { Ptg ptg = ( Ptg ) expression.get(k); ptg.writeBytes(array, pos + offset); if (ptg instanceof ArrayPtg) { if (arrayPtgs == null) arrayPtgs = new ArrayList(5); arrayPtgs.add(ptg); pos += 8; } else pos += ptg.getSize(); } if (arrayPtgs != null) { for (int i=0;i<arrayPtgs.size();i++) { ArrayPtg p = (ArrayPtg)arrayPtgs.get(i); pos += p.writeTokenValueBytes(array, pos + offset); } } return pos; } public abstract int getSize(); public final byte [] getBytes() { int size = getSize(); byte[] bytes = new byte[ size ]; writeBytes(bytes, 0); return bytes; } /** write this Ptg to a byte array*/ public abstract void writeBytes(byte [] array, int offset); /** * return a string representation of this token alone */ public abstract String toFormulaString(Workbook book); /** * dump a debug representation (hexdump) to a string */ public String toDebugString() { byte[] ba = new byte[getSize()]; String retval=null; writeBytes(ba,0); try { retval = org.apache.poi.util.HexDump.dump(ba,0,0); } catch (Exception e) { e.printStackTrace(); } return retval; } /** Overridden toString method to ensure object hash is not printed. * This helps get rid of gratuitous diffs when comparing two dumps * Subclasses may output more relevant information by overriding this method **/ public String toString(){ return this.getClass().toString(); } public static final byte CLASS_REF = 0x00; public static final byte CLASS_VALUE = 0x20; public static final byte CLASS_ARRAY = 0x40; protected byte ptgClass = CLASS_REF; //base ptg public void setClass(byte thePtgClass) { ptgClass = thePtgClass; } /** returns the class (REF/VALUE/ARRAY) for this Ptg */ public byte getPtgClass() { return ptgClass; } public abstract byte getDefaultOperandClass(); public abstract Object clone(); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -