11e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan/*
21e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan * ARMOptions
31e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan *
41e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan * Author: Lasse Collin <lasse.collin@tukaani.org>
51e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan *
61e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan * This file has been put into the public domain.
71e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan * You can do whatever you want with this file.
81e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan */
91e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan
101e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnanpackage org.tukaani.xz;
111e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan
121e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnanimport java.io.InputStream;
131e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnanimport org.tukaani.xz.simple.ARM;
141e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan
151e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan/**
161e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan * BCJ filter for little endian ARM instructions.
171e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan */
181e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnanpublic class ARMOptions extends BCJOptions {
191e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan    private static final int ALIGNMENT = 4;
201e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan
211e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan    public ARMOptions() {
221e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan        super(ALIGNMENT);
231e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan    }
241e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan
251e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan    public FinishableOutputStream getOutputStream(FinishableOutputStream out) {
261e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan        return new SimpleOutputStream(out, new ARM(true, startOffset));
271e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan    }
281e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan
291e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan    public InputStream getInputStream(InputStream in) {
301e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan        return new SimpleInputStream(in, new ARM(false, startOffset));
311e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan    }
321e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan
331e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan    FilterEncoder getFilterEncoder() {
341e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan        return new BCJEncoder(this, BCJCoder.ARM_FILTER_ID);
351e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan    }
361e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan}
37