11e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan/* 21e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan * RawCoder 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 Krishnanclass RawCoder { 131e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan static void validate(FilterCoder[] filters) 141e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan throws UnsupportedOptionsException { 151e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan for (int i = 0; i < filters.length - 1; ++i) 161e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan if (!filters[i].nonLastOK()) 171e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan throw new UnsupportedOptionsException( 181e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan "Unsupported XZ filter chain"); 191e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan 201e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan if (!filters[filters.length - 1].lastOK()) 211e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan throw new UnsupportedOptionsException( 221e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan "Unsupported XZ filter chain"); 231e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan 241e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan int changesSizeCount = 0; 251e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan for (int i = 0; i < filters.length; ++i) 261e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan if (filters[i].changesSize()) 271e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan ++changesSizeCount; 281e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan 291e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan if (changesSizeCount > 3) 301e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan throw new UnsupportedOptionsException( 311e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan "Unsupported XZ filter chain"); 321e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan } 331e977d75f657dacb4cb5c36ab6054bcf66b08076Vinod Krishnan} 34