📄 processinginstructiontype.java
字号:
// Copyright (c) 2001, 2002, 2003, 2006 Per M.A. Bothner and Brainfood Inc.// This is free software; for terms and warranty disclaimer see ./COPYING.package gnu.kawa.xml;import gnu.bytecode.*;import gnu.lists.*;import gnu.xml.*;import gnu.expr.*;import java.io.*;import gnu.mapping.Symbol;public class ProcessingInstructionType extends NodeTypeimplements TypeValue, Externalizable{ String target; public static final ProcessingInstructionType piNodeTest = new ProcessingInstructionType(null); public ProcessingInstructionType(String target) { super(target == null ? "processing-instruction()" : "processing-instruction("+target+")"); this.target = target; } public static ProcessingInstructionType getInstance (String target) { return target == null ? piNodeTest : new ProcessingInstructionType(target); } public Type getImplementationType() { return ClassType.make("gnu.kawa.xml.KProcessingInstruction"); } public void emitCoerceFromObject (CodeAttr code) { code.emitPushString(target); code.emitInvokeStatic(coerceMethod); } public Object coerceFromObject (Object obj) { return coerce(obj, target); } public boolean isInstancePos (AbstractSequence seq, int ipos) { int kind = seq.getNextKind(ipos); if (kind == Sequence.PROCESSING_INSTRUCTION_VALUE) return target == null || target.equals(seq.getNextTypeObject(ipos)); if (kind == Sequence.OBJECT_VALUE) return isInstance(seq.getPosNext(ipos)); return false; } public boolean isInstance (Object obj) { return coerceOrNull(obj, target) != null; } public static KProcessingInstruction coerceOrNull (Object obj, String target) { KProcessingInstruction pos = (KProcessingInstruction) NodeType.coerceOrNull(obj, PI_OK); return pos != null && (target == null || target.equals(pos.getTarget())) ? pos : null; } public static KProcessingInstruction coerce (Object obj, String target) { KProcessingInstruction pos = coerceOrNull(obj, target); if (pos == null) throw new ClassCastException(); return pos; } protected void emitCoerceOrNullMethod(Variable incoming, Compilation comp) { CodeAttr code = comp.getCode(); if (incoming != null) code.emitLoad(incoming); code.emitPushString(target); code.emitInvokeStatic(coerceOrNullMethod); } public static final ClassType typeProcessingInstructionType = ClassType.make("gnu.kawa.xml.ProcessingInstructionType"); static final Method coerceMethod = typeProcessingInstructionType.getDeclaredMethod("coerce", 2); static final Method coerceOrNullMethod = typeProcessingInstructionType.getDeclaredMethod("coerceOrNull", 2); public void writeExternal(ObjectOutput out) throws IOException { out.writeObject(target); } public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { target = (String) in.readObject(); } public String toString () { return "ProcessingInstructionType " + (target == null ? "*" : target); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -