ode_base/
ode.rs

1//! ode integrates bindings to cppbridge and cppode
2//!
3//! - cc-rs https://crates.io/crates/cc
4//! - bindgen https://crates.io/crates/bindgen
5//!
6//! # cc-rs
7//!
8//! - include/bridge.hpp
9//! - src/bridge.cpp
10//!
11//! # bindgen
12//!
13//! from
14//!
15//!  - include/bridge.hpp
16//!  - ode/ode.hpp (from modified preprocess -E dum.cpp includes ode.h)
17//!
18//! to
19//!
20//!  - include/bridge_bindings.rs
21//!  - ode/ode_bindings.rs
22//!
23//! # Requirements
24//!
25//! in the running directory
26//!
27//! - ode.dll
28//! - libstdc++-6.dll
29//! - libgcc_s_seh-1.dll
30//! - libwinpthread-1.dll
31//!
32
33#![allow(unused)]
34// #![allow(unused_imports)]
35// #![allow(unused_attributes)]
36#![allow(non_snake_case)]
37#![allow(non_camel_case_types)]
38#![allow(non_upper_case_globals)]
39
40mod cppbridge;
41use cppbridge::*;
42pub use cppbridge::{dMULTIPLY0_331, dMULTIPLY0_333};
43pub use cppbridge::{dMULTIPLY0_441, dMULTIPLY0_444};
44pub use cppbridge::{convexfvp, trimeshvi};
45pub use cppbridge::{CopyConvexFVP, CopyTriMeshVI};
46// use cppbridge::{ScaleConvexFVP, ScaleTriMeshVI, SetScaleLimit}; // private
47pub use cppbridge::{CvtConvexFVPFromTriMeshVI, CvtTriMeshVIFromConvexFVP};
48pub use cppbridge::{FreeConvexFVP, FreeTriMeshVI};
49pub use cppbridge::{RecalcFaces, Normal4, Cross3};
50
51/// replace bridge.hpp (defined in ode.hpp)
52pub type dReal = f64;
53/// replace bridge.hpp (defined in ode.hpp)
54pub type dTriIndex = u32;
55
56mod cppode;
57pub use cppode::*;
58/*
59pub use cppode::{dBodyID, dGeomID, dTriIndex};
60pub use cppode::{dMatrix4, dMatrix3, dVector4, dVector3, dReal}; // 16 12 4 4
61pub use cppode::{dQuaternion};
62*/
63
64#[warn(unused)]
65// #[warn(unused_imports)]
66// #[warn(unused_attributes)]
67#[warn(non_snake_case)]
68#[warn(non_camel_case_types)]
69#[warn(non_upper_case_globals)]
70
71pub mod err;
72use err::*;
73
74pub mod mat;
75use mat::*;
76
77pub mod prim;
78use prim::*;
79pub use prim::{Matrix4, M4I, Matrix3, M3I, Quaternion, QI};
80pub use prim::{PId, PI, PIh, PIt, PIq, PIx};
81pub use prim::{PIh3, PIt2, PIt4, PIt5, PIq3, PIx5};
82
83pub mod krp;
84use krp::*;
85pub use krp::{Krp, KRPnk, KRP100, KRP095, KRP090, KRP080, KRP070};
86pub use krp::{KRP060, KRP050, KRP040, KRP030, KRP020, KRP010, KRP001};
87
88/// size_type_of
89pub fn size_type_of<T>(_t: &T) -> (usize, &str) {
90  (std::mem::size_of::<T>(), std::any::type_name::<T>()) // or type_name_of_val
91}