# CodeMap
**[Documentation](https://docs.rs/codemap)**
[![Build Status](https://travis-ci.org/kevinmehall/codemap.svg?branch=master)](https://travis-ci.org/kevinmehall/codemap)
A data structure for tracking source positions in language implementations, inspired by the
[CodeMap type in rustc's libsyntax](https://github.com/rust-lang/rust/blob/master/src/libsyntax/codemap.rs).
The `CodeMap` tracks all source files and maps positions within them to linear indexes as if all
source files were concatenated. This allows a source position to be represented by a small
32-bit `Pos` indexing into the `CodeMap`, under the assumption that the total amount of parsed
source code will not exceed 4GiB. The `CodeMap` can look up the source file, line, and column
of a `Pos` or `Span`, as well as provide source code snippets for error reporting.
## License
Licensed under either of
* Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
* MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.
### Contribution
Unless you explicitly state otherwise, any contribution intentionally
submitted for inclusion in the work by you, as defined in the Apache-2.0
license, shall be dual licensed as above, without any additional terms or
conditions.