aboutsummaryrefslogtreecommitdiff
path: root/ir/enum_ty.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ir/enum_ty.rs')
-rw-r--r--ir/enum_ty.rs15
1 files changed, 13 insertions, 2 deletions
diff --git a/ir/enum_ty.rs b/ir/enum_ty.rs
index 70cf0ea..a863340 100644
--- a/ir/enum_ty.rs
+++ b/ir/enum_ty.rs
@@ -2,6 +2,7 @@
use super::super::codegen::EnumVariation;
use super::context::{BindgenContext, TypeId};
+use super::function::Visibility;
use super::item::Item;
use super::ty::{Type, TypeKind};
use crate::clang;
@@ -32,6 +33,10 @@ pub(crate) struct Enum {
/// The different variants, with explicit values.
variants: Vec<EnumVariant>,
+
+ /// The visibility of this enum if it was declared inside of
+ /// another type. Top-level types always have public visibility.
+ pub(crate) visibility: Visibility,
}
impl Enum {
@@ -39,8 +44,13 @@ impl Enum {
pub(crate) fn new(
repr: Option<TypeId>,
variants: Vec<EnumVariant>,
+ visibility: Visibility,
) -> Self {
- Enum { repr, variants }
+ Enum {
+ repr,
+ variants,
+ visibility,
+ }
}
/// Get this enumeration's representation.
@@ -56,6 +66,7 @@ impl Enum {
/// Construct an enumeration from the given Clang type.
pub(crate) fn from_ty(
ty: &clang::Type,
+ visibility: Visibility,
ctx: &mut BindgenContext,
) -> Result<Self, ParseError> {
use clang_sys::*;
@@ -147,7 +158,7 @@ impl Enum {
}
CXChildVisit_Continue
});
- Ok(Enum::new(repr, variants))
+ Ok(Enum::new(repr, variants, visibility))
}
fn is_matching_enum(