Struct syntax_pos::FileMap [−][src]
pub struct FileMap { pub name: FileName, pub name_was_remapped: bool, pub unmapped_path: Option<FileName>, pub crate_of_origin: u32, pub src: Option<Lrc<String>>, pub src_hash: u128, pub external_src: Lock<ExternalSource>, pub start_pos: BytePos, pub end_pos: BytePos, pub lines: Lock<Vec<BytePos>>, pub multibyte_chars: Lock<Vec<MultiByteChar>>, pub non_narrow_chars: Lock<Vec<NonNarrowChar>>, pub name_hash: u128, }
A single source in the CodeMap.
Fields
name: FileName
The name of the file that the source came from, source that doesn't
originate from files has names between angle brackets by convention,
e.g. <anon>
name_was_remapped: bool
True if the name
field above has been modified by --remap-path-prefix
unmapped_path: Option<FileName>
The unmapped path of the file that the source came from.
Set to None
if the FileMap was imported from an external crate.
crate_of_origin: u32
Indicates which crate this FileMap was imported from.
src: Option<Lrc<String>>
The complete source code
src_hash: u128
The source code's hash
external_src: Lock<ExternalSource>
The external source code (used for external crates, which will have a None
value as self.src
.
start_pos: BytePos
The start position of this source in the CodeMap
end_pos: BytePos
The end position of this source in the CodeMap
lines: Lock<Vec<BytePos>>
Locations of lines beginnings in the source code
multibyte_chars: Lock<Vec<MultiByteChar>>
Locations of multi-byte characters in the source code
non_narrow_chars: Lock<Vec<NonNarrowChar>>
Width of characters that are not narrow in the source code
name_hash: u128
A hash of the filename, used for speeding up the incr. comp. hashing.
Methods
impl FileMap
[src]
impl FileMap
pub fn new(
name: FileName,
name_was_remapped: bool,
unmapped_path: FileName,
src: String,
start_pos: BytePos
) -> FileMap
[src]
pub fn new(
name: FileName,
name_was_remapped: bool,
unmapped_path: FileName,
src: String,
start_pos: BytePos
) -> FileMap
pub fn next_line(&self, pos: BytePos)
[src]
pub fn next_line(&self, pos: BytePos)
EFFECT: register a start-of-line offset in the table of line-beginnings. UNCHECKED INVARIANT: these offsets must be added in the right order and must be in the right places; there is shared knowledge about what ends a line between this file and parse.rs WARNING: pos param here is the offset relative to start of CodeMap, and CodeMap will append a newline when adding a filemap without a newline at the end, so the safe way to call this is with value calculated as filemap.start_pos + newline_offset_relative_to_the_start_of_filemap.
pub fn line_begin_pos(&self) -> BytePos
[src]
pub fn line_begin_pos(&self) -> BytePos
Return the BytePos of the beginning of the current line.
pub fn add_external_src<F>(&self, get_src: F) -> bool where
F: FnOnce() -> Option<String>,
[src]
pub fn add_external_src<F>(&self, get_src: F) -> bool where
F: FnOnce() -> Option<String>,
Add externally loaded source. If the hash of the input doesn't match or no input is supplied via None, it is interpreted as an error and the corresponding enum variant is set. The return value signifies whether some kind of source is present.
pub fn get_line(&self, line_number: usize) -> Option<Cow<str>>
[src]
pub fn get_line(&self, line_number: usize) -> Option<Cow<str>>
Get a line from the list of pre-computed line-beginnings. The line number here is 0-based.
pub fn record_multibyte_char(&self, pos: BytePos, bytes: usize)
[src]
pub fn record_multibyte_char(&self, pos: BytePos, bytes: usize)
pub fn record_width(&self, pos: BytePos, ch: char)
[src]
pub fn record_width(&self, pos: BytePos, ch: char)
pub fn is_real_file(&self) -> bool
[src]
pub fn is_real_file(&self) -> bool
pub fn is_imported(&self) -> bool
[src]
pub fn is_imported(&self) -> bool
pub fn byte_length(&self) -> u32
[src]
pub fn byte_length(&self) -> u32
pub fn count_lines(&self) -> usize
[src]
pub fn count_lines(&self) -> usize
pub fn lookup_line(&self, pos: BytePos) -> Option<usize>
[src]
pub fn lookup_line(&self, pos: BytePos) -> Option<usize>
Find the line containing the given position. The return value is the
index into the lines
array of this FileMap, not the 1-based line
number. If the filemap is empty or the position is located before the
first line, None is returned.
pub fn line_bounds(&self, line_index: usize) -> (BytePos, BytePos)
[src]
pub fn line_bounds(&self, line_index: usize) -> (BytePos, BytePos)
pub fn contains(&self, byte_pos: BytePos) -> bool
[src]
pub fn contains(&self, byte_pos: BytePos) -> bool
Trait Implementations
impl Clone for FileMap
[src]
impl Clone for FileMap
fn clone(&self) -> FileMap
[src]
fn clone(&self) -> FileMap
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read more
impl Encodable for FileMap
[src]
impl Encodable for FileMap
impl Decodable for FileMap
[src]
impl Decodable for FileMap
impl Debug for FileMap
[src]
impl Debug for FileMap