summaryrefslogtreecommitdiffstats
path: root/src/parser
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser')
-rw-r--r--src/parser/clang/parsing.rs21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/parser/clang/parsing.rs b/src/parser/clang/parsing.rs
index 251aefa..fd3e392 100644
--- a/src/parser/clang/parsing.rs
+++ b/src/parser/clang/parsing.rs
@@ -849,14 +849,25 @@ impl<'a> TryFrom<clang::Entity<'a>> for EnumConstant {
849 } 849 }
850 debug!("Parsing enum: {:?}", entity); 850 debug!("Parsing enum: {:?}", entity);
851 851
852 let value = entity 852 let (signed_value, unsigned_value) = entity
853 .get_enum_constant_value() 853 .get_enum_constant_value()
854 .ok_or_else(|| anyhow!("No enum constant value"))?; 854 .ok_or_else(|| anyhow!("No enum constant value"))?;
855 dbg!(value);
856 855
857 Ok(EnumConstant { 856 let is_signed = entity
858 value: String::from(""), 857 .get_semantic_parent()
859 }) 858 .ok_or_else(|| anyhow!("Enum constant not attached to an enum"))?
859 .get_enum_underlying_type()
860 .ok_or_else(|| anyhow!("Enum doesn't have an underlying type"))?
861 .get_canonical_type()
862 .is_signed_integer();
863
864 let value = if is_signed {
865 format!("{}", signed_value)
866 } else {
867 format!("{}", unsigned_value)
868 };
869
870 Ok(EnumConstant { value })
860 } 871 }
861} 872}
862 873