diff options
Diffstat (limited to 'ir/enum_ty.rs')
-rw-r--r-- | ir/enum_ty.rs | 15 |
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( |