
org.robolectric.res.android.AssetDir Maven / Gradle / Ivy
package org.robolectric.res.android;
import org.robolectric.res.android.CppAssetManager.FileType;
// transliterated from
// https://android.googlesource.com/platform/frameworks/base/+/android-9.0.0_r12/libs/androidfw/AssetDir.cpp and
// https://android.googlesource.com/platform/frameworks/base/+/android-9.0.0_r12/include/androidfw/AssetDir.h
public class AssetDir {
private SortedVector mFileInfo;
AssetDir() {
mFileInfo = null;
}
AssetDir(AssetDir src) {}
/*
* Vector-style access.
*/
public int getFileCount() {
if (mFileInfo == null) {
return 0;
}
return mFileInfo.size();
}
public String8 getFileName(int idx) {
return mFileInfo.itemAt(idx).getFileName();
}
// const String8& getSourceName(int idx) {
// return mFileInfo->itemAt(idx).getSourceName();
// }
/*
* Get the type of a file (usually regular or directory).
*/
// FileType getFileType(int idx) {
// return mFileInfo->itemAt(idx).getFileType();
// }
/** This holds information about files in the asset hierarchy. */
static class FileInfo implements Comparable {
private String8 mFileName; // filename only
private FileType mFileType; // regular, directory, etc
private String8 mSourceName; // currently debug-only
FileInfo() {}
FileInfo(String8 path) { // useful for e.g. svect.indexOf
mFileName = path;
mFileType = FileType.kFileTypeUnknown;
}
FileInfo(FileInfo src) {
copyMembers(src);
}
// const FileInfo& operator= (const FileInfo& src) {
// if (this != &src)
// copyMembers(src);
// return *this;
// }
void copyMembers(final FileInfo src) {
mFileName = src.mFileName;
mFileType = src.mFileType;
mSourceName = src.mSourceName;
}
/* need this for SortedVector; must compare only on file name */
// bool operator< (const FileInfo& rhs) const {
// return mFileName < rhs.mFileName;
// }
//
// /* used by AssetManager */
// bool operator== (const FileInfo& rhs) const {
// return mFileName == rhs.mFileName;
// }
void set(final String8 path, FileType type) {
mFileName = path;
mFileType = type;
}
String8 getFileName() {
return mFileName;
}
void setFileName(String8 path) {
mFileName = path;
}
FileType getFileType() {
return mFileType;
}
void setFileType(FileType type) {
mFileType = type;
}
String8 getSourceName() {
return mSourceName;
}
void setSourceName(String8 path) {
mSourceName = path;
}
public boolean isLessThan(FileInfo fileInfo) {
return mFileName.string().compareTo(fileInfo.mFileName.string()) < 0;
}
@Override
public int compareTo(FileInfo other) {
return mFileName.string().compareTo(other.mFileName.string());
}
/*
* Handy utility for finding an entry in a sorted vector of FileInfo.
* Returns the index of the matching entry, or -1 if none found.
*/
static int findEntry(SortedVector pVector, String8 fileName) {
FileInfo tmpInfo = new FileInfo();
tmpInfo.setFileName(fileName);
return pVector.indexOf(tmpInfo);
}
}
;
/* AssetManager uses this to initialize us */
void setFileList(SortedVector list) {
mFileInfo = list;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy