1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// TODO: Update this documentation.
//! # Ligen
//! Ligen (Language Interface Generator) is an extensible macro-based multi-language binding
//! generator.
//!
//! We officially support `ligen-c`, a binding generator for the Programming Language C.
//!
//! ### Requirements
//!
//! `cargo install cargo-ligen`
//!
//! ### How to use
//!
//! Here is an library on how to use the C generator and the CMake library generator in your crate:
//! `Cargo.toml`
//! ```toml
//! [dev-dependencies]
//! ligen = "0.1"
//! ligen-c = "0.1"
//! ligen-cmake = "0.1"
//! ```
//!
//! Now you can use it in your `build.rs` file as following:
//! ```rust,ignore
//! use ligen::prelude::*;
//! use ligen_c::Generator as CGenerator;
//! use ligen_cmake::Generator as CMakeGenerator;
//!
//! fn main() {
//! if let Ok(library) = Library::read() {
//! let c_generator = CGenerator::default();
//! let cmake_generator = CMakeGenerator::default();
//! cmake_generator.generate(&library).expect("Couldn't generate CMake library.");
//! c_generator.generate(&library).expect("Couldn't generate C bindings");
//! }
//! }
//! ```
//!
//! Then to generate the language bindings run: `cargo ligen`
//!
//! `cargo ligen` passes all its extra parameters to `cargo build`, so you can use `cargo ligen --release` to
//! generate a library with optimized production code (`--debug` is default).
//!
//! ### Getting started
//!
//! Here are a few links to get started:
//! * [List of officially supported languages](https://github.com/search?q=org%3Asensorial-systems+ligen).
//! * [Usage library](https://github.com/sensorial-systems/ligen-c/tree/main/examples/counter/README.md).
pub use *;
pub use ligen_ir as ir;
pub use ligen_utils as utils;
pub use ligen_traits as traits;
pub use ligen_parser as parser;
pub use ligen_common as common;
pub use ligen_generator as generator;