summaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 9f90ffb7..38b91494 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -83,6 +83,7 @@ use ir::context::{BindgenContext, ItemId};
use ir::item::Item;
use parse::{ClangItemParser, ParseError};
use regex_set::RegexSet;
+pub use codegen::EnumVariation;
use std::borrow::Cow;
use std::collections::HashMap;
@@ -203,6 +204,16 @@ impl Builder {
output_vector.push("--rust-target".into());
output_vector.push(self.options.rust_target.into());
+ if self.options.default_enum_variant != Default::default() {
+ output_vector.push("--default-enum-variant=".into());
+ output_vector.push(match self.options.default_enum_variant {
+ codegen::EnumVariation::Rust => "rust",
+ codegen::EnumVariation::Bitfield => "bitfield",
+ codegen::EnumVariation::Consts => "consts",
+ codegen::EnumVariation::ModuleConsts => "moduleconsts",
+ }.into())
+ };
+
self.options
.bitfield_enums
.get_items()
@@ -730,6 +741,12 @@ impl Builder {
}
+ /// Set the default type of code to generate for enums
+ pub fn default_enum_variant(mut self, arg: codegen::EnumVariation) -> Builder {
+ self.options.default_enum_variant = arg;
+ self
+ }
+
/// Mark the given enum (or set of enums, if using a pattern) as being
/// bitfield-like. Regular expressions are supported.
///
@@ -1240,6 +1257,9 @@ struct BindgenOptions {
/// Whitelisted variables. See docs for `whitelisted_types` for more.
whitelisted_vars: RegexSet,
+ /// The default type of code to generate for enums
+ default_enum_variant: codegen::EnumVariation,
+
/// The enum patterns to mark an enum as bitfield.
bitfield_enums: RegexSet,
@@ -1458,6 +1478,7 @@ impl Default for BindgenOptions {
whitelisted_types: Default::default(),
whitelisted_functions: Default::default(),
whitelisted_vars: Default::default(),
+ default_enum_variant: Default::default(),
bitfield_enums: Default::default(),
rustified_enums: Default::default(),
constified_enum_modules: Default::default(),