package com.oracle.objectfile.macho;
import java.util.Iterator;
import java.util.Map;
import com.oracle.objectfile.BuildDependency;
import com.oracle.objectfile.ElementImpl;
import com.oracle.objectfile.LayoutDecisionMap;
import com.oracle.objectfile.ObjectFile;
import com.oracle.objectfile.ObjectFile.Element;
import com.oracle.objectfile.StringSectionImpl;
import com.oracle.objectfile.macho.MachOObjectFile.LinkEditSegment64Command;
import com.oracle.objectfile.macho.MachOObjectFile.Segment64Command;
public class MachOStrtab extends MachOObjectFile.LinkEditElement {
StringSectionImpl impl = new StringSectionImpl(this) {
@Override
public boolean isLoadable() {
return false;
}
};
@Override
public ElementImpl getImpl() {
return impl;
}
public MachOStrtab(String name, MachOObjectFile owner, Segment64Command containingSegment) {
owner.super(name, containingSegment);
}
@Override
public byte[] getOrDecideContent(Map<Element, LayoutDecisionMap> alreadyDecided, byte[] contentHint) {
return impl.getOrDecideContent(alreadyDecided, contentHint);
}
@Override
public Iterable<BuildDependency> getDependencies(Map<Element, LayoutDecisionMap> decisions) {
return impl.getDependencies(decisions);
}
public Iterable<String> getContentProvider() {
return new Iterable<String>() {
@Override
public Iterator<String> iterator() {
return impl.iterator();
}
};
}
public void setContentProvider(Iterable<String> contentProvider) {
impl.addContentProvider(contentProvider);
}
@Override
public int getMemSize(Map<Element, LayoutDecisionMap> alreadyDecided) {
return impl.getMemSize(alreadyDecided);
}
@Override
public int getOrDecideOffset(Map<Element, LayoutDecisionMap> alreadyDecided, int offsetHint) {
return ObjectFile.defaultGetOrDecideOffset(alreadyDecided, this, offsetHint);
}
@Override
public int getOrDecideSize(Map<Element, LayoutDecisionMap> alreadyDecided, int sizeHint) {
return ObjectFile.defaultGetOrDecideSize(alreadyDecided, this, sizeHint);
}
@Override
public int getOrDecideVaddr(Map<Element, LayoutDecisionMap> alreadyDecided, int vaddrHint) {
return ObjectFile.defaultGetOrDecideVaddr(alreadyDecided, this, vaddrHint);
}
@Override
public LayoutDecisionMap getDecisions(LayoutDecisionMap copyingIn) {
return ObjectFile.defaultDecisions(this, copyingIn);
}
@Override
public boolean isLoadable() {
return segment instanceof LinkEditSegment64Command;
}
}