Skip to main content

brine_kiwi_schema/
lib.rs

1//! This is a Rust library with some helper routines for parsing files in the
2//! Kiwi serialization format. See [https://github.com/evanw/kiwi](https://github.com/evanw/kiwi)
3//! for documentation about the format.
4//!
5//! ```
6//! use brine_kiwi_schema::*;
7//!
8//! let schema = Schema::new(vec![
9//!     Def::new("Point".to_owned(), DefKind::Struct, vec![
10//!         Field {name: "x".to_owned(), type_id: TYPE_FLOAT, is_array: false, value: 0},
11//!         Field {name: "y".to_owned(), type_id: TYPE_FLOAT, is_array: false, value: 0},
12//!     ]),
13//! ]);
14//!
15//! let value = Value::decode(&schema, 0, &[126, 0, 0, 0, 126, 1, 0, 0]).unwrap();
16//! assert_eq!(format!("{:?}", value), "Point {x: 0.5, y: -0.5}");
17//! assert_eq!(value.encode(&schema), [126, 0, 0, 0, 126, 1, 0, 0]);
18//! ```
19
20pub mod bb;
21pub mod schema;
22pub mod value;
23
24pub use bb::*;
25pub use schema::*;
26pub use value::*;
27
28pub const TYPE_BOOL: i32 = -1;
29pub const TYPE_BYTE: i32 = -2;
30pub const TYPE_INT: i32 = -3;
31pub const TYPE_UINT: i32 = -4;
32pub const TYPE_FLOAT: i32 = -5;
33pub const TYPE_STRING: i32 = -6;
34pub const TYPE_INT64: i32 = -7;
35pub const TYPE_UINT64: i32 = -8;