1
Fork 0

Make BytePos 32-bit

This commit is contained in:
Seo Sanghyeon 2013-11-20 02:15:49 +09:00
parent c4e28ae068
commit 5e1e487624
5 changed files with 16 additions and 14 deletions

View file

@ -29,9 +29,11 @@ pub trait Pos {
fn to_uint(&self) -> uint;
}
/// A byte offset
/// A byte offset. Keep this small (currently 32-bits), as AST contains
/// a lot of them.
#[deriving(Clone, Eq, IterBytes, Ord)]
pub struct BytePos(uint);
pub struct BytePos(u32);
/// A character offset. Because of multibyte utf8 characters, a byte offset
/// is not equivalent to a character offset. The CodeMap will convert BytePos
/// values to CharPos values as necessary.
@ -42,8 +44,8 @@ pub struct CharPos(uint);
// have been unsuccessful
impl Pos for BytePos {
fn from_uint(n: uint) -> BytePos { BytePos(n) }
fn to_uint(&self) -> uint { **self }
fn from_uint(n: uint) -> BytePos { BytePos(n as u32) }
fn to_uint(&self) -> uint { **self as uint }
}
impl Add<BytePos, BytePos> for BytePos {
@ -278,7 +280,7 @@ impl CodeMap {
let filemap = @FileMap {
name: filename, substr: substr, src: src,
start_pos: BytePos(start_pos),
start_pos: Pos::from_uint(start_pos),
lines: @mut ~[],
multibyte_chars: @mut ~[],
};