blob: 2e19d834ae077cad774e690425fa07ef93838cbb [file] [log] [blame]
part of archive;
/**
* A collection of files.
*/
class Archive extends IterableBase<ArchiveFile> {
/// The list of files in the archive.
List<ArchiveFile> files = [];
/// A global comment for the archive.
String comment;
/**
* Add a file to the archive.
*/
void addFile(ArchiveFile file) {
files.add(file);
}
/**
* The number of files in the archive.
*/
int get length => files.length;
/**
* Get a file from the archive.
*/
ArchiveFile operator[](int index) => files[index];
/**
* Find a file with the given [name] in the archive. If the file isn't found,
* null will be returned.
*/
ArchiveFile findFile(String name) {
for (ArchiveFile f in files) {
if (f.name == name) {
return f;
}
}
return null;
}
/**
* The number of files in the archive.
*/
int numberOfFiles() {
return files.length;
}
/**
* The name of the file at the given [index].
*/
String fileName(int index) {
return files[index].name;
}
/**
* The decompressed size of the file at the given [index].
*/
int fileSize(int index) {
return files[index].size;
}
/**
* The decompressed data of the file at the given [index].
*/
List<int> fileData(int index) {
return files[index].content;
}
ArchiveFile get first => files.first;
ArchiveFile get last => files.last;
bool get isEmpty => files.isEmpty;
// Returns true if there is at least one element in this collection.
bool get isNotEmpty => files.isNotEmpty;
Iterator<ArchiveFile> get iterator => files.iterator;
}