package com.thoughtworks.xstream.io.xml; import com.thoughtworks.xstream.converters.ErrorWriter; import com.thoughtworks.xstream.core.util.FastStack; import com.thoughtworks.xstream.io.AttributeNameIterator; import com.thoughtworks.xstream.io.naming.NameCoder; import java.util.Iterator; /* loaded from: classes.dex */ public abstract class AbstractDocumentReader extends AbstractXmlReader implements DocumentReader { private Object current; private FastStack pointers; private static class Pointer { public int v; private Pointer() { } } protected AbstractDocumentReader(Object obj) { this(obj, new XmlFriendlyNameCoder()); } @Override // com.thoughtworks.xstream.io.HierarchicalStreamReader, com.thoughtworks.xstream.converters.ErrorReporter public void appendErrors(ErrorWriter errorWriter) { } @Override // com.thoughtworks.xstream.io.HierarchicalStreamReader public void close() { } @Override // com.thoughtworks.xstream.io.HierarchicalStreamReader public Iterator getAttributeNames() { return new AttributeNameIterator(this); } protected abstract Object getChild(int i); protected abstract int getChildCount(); @Override // com.thoughtworks.xstream.io.xml.DocumentReader public Object getCurrent() { return this.current; } protected abstract Object getParent(); @Override // com.thoughtworks.xstream.io.HierarchicalStreamReader public boolean hasMoreChildren() { return ((Pointer) this.pointers.peek()).v < getChildCount(); } @Override // com.thoughtworks.xstream.io.HierarchicalStreamReader public void moveDown() { Pointer pointer = (Pointer) this.pointers.peek(); this.pointers.push(new Pointer()); this.current = getChild(pointer.v); pointer.v++; reassignCurrentElement(this.current); } @Override // com.thoughtworks.xstream.io.HierarchicalStreamReader public void moveUp() { this.current = getParent(); this.pointers.popSilently(); reassignCurrentElement(this.current); } protected abstract void reassignCurrentElement(Object obj); protected AbstractDocumentReader(Object obj, NameCoder nameCoder) { super(nameCoder); this.pointers = new FastStack(16); this.current = obj; this.pointers.push(new Pointer()); reassignCurrentElement(this.current); } protected AbstractDocumentReader(Object obj, XmlFriendlyReplacer xmlFriendlyReplacer) { this(obj, (NameCoder) xmlFriendlyReplacer); } }