mirror of
https://github.com/encounter/msvc-demangler-rust.git
synced 2026-07-10 12:18:38 -07:00
Added int128/uint128 support (#55)
This commit is contained in:
+22
-2
@@ -437,6 +437,8 @@ pub enum Type<'a> {
|
||||
Ulong(StorageClass),
|
||||
Int64(StorageClass),
|
||||
Uint64(StorageClass),
|
||||
Int128(StorageClass),
|
||||
Uint128(StorageClass),
|
||||
Wchar(StorageClass),
|
||||
Char8(StorageClass),
|
||||
Char16(StorageClass),
|
||||
@@ -1349,6 +1351,8 @@ impl<'a> ParserState<'a> {
|
||||
b'N' => Type::Bool(sc),
|
||||
b'J' => Type::Int64(sc),
|
||||
b'K' => Type::Uint64(sc),
|
||||
b'L' => Type::Int128(sc),
|
||||
b'M' => Type::Uint128(sc),
|
||||
b'W' => Type::Wchar(sc),
|
||||
b'Q' => Type::Char8(sc),
|
||||
b'S' => Type::Char16(sc),
|
||||
@@ -1357,8 +1361,8 @@ impl<'a> ParserState<'a> {
|
||||
return Err(self.fail("unknown primitive type"));
|
||||
}
|
||||
},
|
||||
_ => {
|
||||
return Err(self.fail("unknown primitive type: {}"));
|
||||
_c => {
|
||||
return Err(self.fail("unknown primitive type"));
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -1784,6 +1788,22 @@ impl<'a> Serializer<'a> {
|
||||
}
|
||||
sc
|
||||
}
|
||||
Type::Int128(sc) => {
|
||||
if self.flags.contains(DemangleFlags::MS_TYPENAMES) {
|
||||
write!(self.w, "__int128")?;
|
||||
} else {
|
||||
write!(self.w, "int128_t")?;
|
||||
}
|
||||
sc
|
||||
}
|
||||
Type::Uint128(sc) => {
|
||||
if self.flags.contains(DemangleFlags::MS_TYPENAMES) {
|
||||
write!(self.w, "unsigned __int128")?;
|
||||
} else {
|
||||
write!(self.w, "uint128_t")?;
|
||||
}
|
||||
sc
|
||||
}
|
||||
Type::Wchar(sc) => {
|
||||
write!(self.w, "wchar_t")?;
|
||||
sc
|
||||
|
||||
Reference in New Issue
Block a user