Package ghidra.app.util.bin
Class ByteProviderWrapper
java.lang.Object
ghidra.app.util.bin.ByteProviderWrapper
- All Implemented Interfaces:
ByteProvider
,Closeable
,AutoCloseable
- Direct Known Subclasses:
UnlimitedByteProviderWrapper
A
ByteProvider
constrained to a sub-section of an existing ByteProvider
.-
Field Summary
Modifier and TypeFieldDescriptionprotected final FSRL
protected final ByteProvider
protected final long
protected final long
Fields inherited from interface ghidra.app.util.bin.ByteProvider
EMPTY_BYTEPROVIDER
-
Constructor Summary
ConstructorDescriptionByteProviderWrapper
(ByteProvider provider, long subOffset, long subLength) Constructs aByteProviderWrapper
around the specifiedByteProvider
, constrained to a subsection of the provider.ByteProviderWrapper
(ByteProvider provider, long subOffset, long subLength, FSRL fsrl) Constructs aByteProviderWrapper
around the specifiedByteProvider
, constrained to a subsection of the provider.ByteProviderWrapper
(ByteProvider provider, FSRL fsrl) Creates a wrapper around aByteProvider
that contains the same bytes as the specified provider, but with a newFSRL
identity. -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
Releases any resources theByteProvider
may have occupiedReturns the absolute path (similar to, but not a, URI) to theByteProvider
.getFile()
Returns the underlyingFile
for thisByteProvider
, or null if thisByteProvider
is not associated with aFile
.getFSRL()
Returns theFSRL
of the underlying file for this byte provider, or null if this byte provider is not associated with a file.getName()
Returns the name of theByteProvider
.boolean
isValidIndex
(long index) Returns true if the specified index is valid.long
length()
Returns the length of theByteProvider
byte
readByte
(long index) Reads a byte at the specified indexbyte[]
readBytes
(long index, long length) Reads a byte array at the specified indexMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface ghidra.app.util.bin.ByteProvider
getInputStream, isEmpty
-
Field Details
-
provider
-
subOffset
protected final long subOffset -
subLength
protected final long subLength -
fsrl
-
-
Constructor Details
-
ByteProviderWrapper
Creates a wrapper around aByteProvider
that contains the same bytes as the specified provider, but with a newFSRL
identity.- Parameters:
provider
-ByteProvider
to wrapfsrl
-FSRL
identity for the instance- Throws:
IOException
- if error
-
ByteProviderWrapper
Constructs aByteProviderWrapper
around the specifiedByteProvider
, constrained to a subsection of the provider.- Parameters:
provider
- theByteProvider
to wrapsubOffset
- the offset in theByteProvider
of where to start the newByteProviderWrapper
subLength
- the length of the newByteProviderWrapper
-
ByteProviderWrapper
Constructs aByteProviderWrapper
around the specifiedByteProvider
, constrained to a subsection of the provider.- Parameters:
provider
- theByteProvider
to wrapsubOffset
- the offset in theByteProvider
of where to start the newByteProviderWrapper
subLength
- the length of the newByteProviderWrapper
fsrl
-FSRL
identity of the file this ByteProvider represents
-
-
Method Details
-
close
Description copied from interface:ByteProvider
Releases any resources theByteProvider
may have occupied- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceByteProvider
- Specified by:
close
in interfaceCloseable
- Throws:
IOException
- if an I/O error occurs
-
getFSRL
Description copied from interface:ByteProvider
Returns theFSRL
of the underlying file for this byte provider, or null if this byte provider is not associated with a file.- Specified by:
getFSRL
in interfaceByteProvider
- Returns:
- The
FSRL
of the underlyingFile
, or null if no associatedFile
.
-
getFile
Description copied from interface:ByteProvider
Returns the underlyingFile
for thisByteProvider
, or null if thisByteProvider
is not associated with aFile
.- Specified by:
getFile
in interfaceByteProvider
- Returns:
- the underlying file for this byte provider
-
getName
Description copied from interface:ByteProvider
Returns the name of theByteProvider
. For example, the underlying file name.- Specified by:
getName
in interfaceByteProvider
- Returns:
- the name of the
ByteProvider
or null if there is no name
-
getAbsolutePath
Description copied from interface:ByteProvider
Returns the absolute path (similar to, but not a, URI) to theByteProvider
. For example, the complete path to the file.- Specified by:
getAbsolutePath
in interfaceByteProvider
- Returns:
- the absolute path to the
ByteProvider
or null if not associated with aFile
.
-
length
Description copied from interface:ByteProvider
Returns the length of theByteProvider
- Specified by:
length
in interfaceByteProvider
- Returns:
- the length of the
ByteProvider
- Throws:
IOException
- if an I/O error occurs
-
isValidIndex
public boolean isValidIndex(long index) Description copied from interface:ByteProvider
Returns true if the specified index is valid.- Specified by:
isValidIndex
in interfaceByteProvider
- Parameters:
index
- the index in the byte provider to check- Returns:
- true if the specified index is valid
-
readByte
Description copied from interface:ByteProvider
Reads a byte at the specified index- Specified by:
readByte
in interfaceByteProvider
- Parameters:
index
- the index of the byte to read- Returns:
- the byte read from the specified index
- Throws:
IOException
- if an I/O error occurs
-
readBytes
Description copied from interface:ByteProvider
Reads a byte array at the specified index- Specified by:
readBytes
in interfaceByteProvider
- Parameters:
index
- the index of the byte to readlength
- the number of bytes to read- Returns:
- the byte array read from the specified index
- Throws:
IOException
- if an I/O error occurs
-