quake_util/qmap/
mod.rs

1//! Quake source map data structures, parsing, and writing
2//!
3//! # Example
4//!
5//! ```
6//! # use std::ffi::CString;
7//! # use std::io::Read;
8//! #
9//! #
10//! # fn main() -> Result<(), String> {
11//! #   #[cfg(feature="std")]
12//! #   {
13//! #       let mut source = &b"
14//! #           {
15//! #           }
16//! #           "[..];
17//! #
18//! #       let mut dest = Vec::<u8>::new();
19//! #
20//! use quake_util::{qmap, WriteError, TextParseError};
21//! use qmap::Entity;
22//!
23//! let mut map = qmap::parse(&mut source).map_err(|err| match err {
24//!     TextParseError::Io(_) => String::from("Failed to read map"),
25//!     l_err@TextParseError::Lexer(_) => l_err.to_string(),
26//!     p_err@TextParseError::Parser(_) => p_err.to_string(),
27//! })?;
28//!
29//! let mut soldier = Entity::new();
30//!
31//! soldier.edict.push((
32//!     CString::new("classname").unwrap(),
33//!     CString::new("monster_army").unwrap(),
34//! ));
35//!
36//! soldier.edict.push((
37//!     CString::new("origin").unwrap(),
38//!     CString::new("128 -256 24").unwrap(),
39//! ));
40//!
41//! map.entities.push(soldier);
42//!
43//! map.write_to(&mut dest).map_err(|err| match err {
44//!     WriteError::Io(e) => e.to_string(),
45//!     WriteError::Validation(msg) => msg
46//! })?;
47//! #  
48//! #   }
49//! #   Ok(())
50//! # }
51//! ```
52
53mod repr;
54
55#[cfg(feature = "std")]
56mod lexer;
57
58#[cfg(feature = "std")]
59mod parser;
60
61pub use repr::{
62    Alignment, Brush, CheckWritable, Edict, Entity, EntityKind, HalfSpace,
63    Point, QuakeMap, Surface, ValidationResult, Vec2, Vec3,
64};
65
66#[cfg(feature = "std")]
67pub use parser::parse;
68
69// test suites
70
71#[cfg(all(test, feature = "std"))]
72mod parser_test;
73
74#[cfg(all(test, feature = "std"))]
75mod lexer_test;
76
77#[cfg(test)]
78mod repr_test;