From 4d8f2b7087fc40602933b6f366d4ad565eb0e1dd Mon Sep 17 00:00:00 2001 From: N3rdL0rd <168280212+N3rdL0rd@users.noreply.github.com> Date: Wed, 19 Jun 2024 16:21:26 -0500 Subject: [PATCH 1/4] Add MSVC int types --- cxxheaderparser/lexer.py | 4 ++++ cxxheaderparser/parser.py | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/cxxheaderparser/lexer.py b/cxxheaderparser/lexer.py index 17caf92..e0b23cc 100644 --- a/cxxheaderparser/lexer.py +++ b/cxxheaderparser/lexer.py @@ -111,6 +111,10 @@ class PlyLexer: "__inline", "inline", "int", + "__int8", + "__int16", + "__int32", + "__int64", "long", "mutable", "namespace", diff --git a/cxxheaderparser/parser.py b/cxxheaderparser/parser.py index 41b7a54..a81ebe5 100644 --- a/cxxheaderparser/parser.py +++ b/cxxheaderparser/parser.py @@ -1523,6 +1523,10 @@ def _parse_pqname_decltype_specifier(self) -> DecltypeSpecifier: "nullptr_t", "wchar_t", "void", + "__int8", + "__int16", + "__int32", + "__int64" } def _parse_pqname_fundamental(self, tok_value: str) -> FundamentalSpecifier: From 2a86c76b78240b690e009cba162a5bd61680b1e3 Mon Sep 17 00:00:00 2001 From: N3rdL0rd <168280212+N3rdL0rd@users.noreply.github.com> Date: Wed, 19 Jun 2024 16:27:07 -0500 Subject: [PATCH 2/4] Fix types --- cxxheaderparser/parser.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/cxxheaderparser/parser.py b/cxxheaderparser/parser.py index a81ebe5..8582f07 100644 --- a/cxxheaderparser/parser.py +++ b/cxxheaderparser/parser.py @@ -1514,6 +1514,10 @@ def _parse_pqname_decltype_specifier(self) -> DecltypeSpecifier: "float", "double", "char", + "__int8", + "__int16", + "__int32", + "__int64" } _fundamentals = _compound_fundamentals | { @@ -1522,11 +1526,7 @@ def _parse_pqname_decltype_specifier(self) -> DecltypeSpecifier: "char32_t", "nullptr_t", "wchar_t", - "void", - "__int8", - "__int16", - "__int32", - "__int64" + "void" } def _parse_pqname_fundamental(self, tok_value: str) -> FundamentalSpecifier: From c64d3a5d2b411cd2057f2e37b4ac7914fb3c5943 Mon Sep 17 00:00:00 2001 From: N3rdL0rd <168280212+N3rdL0rd@users.noreply.github.com> Date: Mon, 24 Jun 2024 18:11:53 +0000 Subject: [PATCH 3/4] Add test --- tests/test_msvc_types.py | 54 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 tests/test_msvc_types.py diff --git a/tests/test_msvc_types.py b/tests/test_msvc_types.py new file mode 100644 index 0000000..d83a239 --- /dev/null +++ b/tests/test_msvc_types.py @@ -0,0 +1,54 @@ +from cxxheaderparser.types import ( + ParsedData, + NamespaceScope, + Function, + Type, + PQName, + NameSpecifier, +) +from cxxheaderparser.simple import parse_string + + +def test_test_msvc_types() -> None: + content = """ + __int64 test_int64(); + __int32 test_int32(); + __int16 test_int16(); + __int8 test_int8(); + """ + data = parse_string(content, cleandoc=True) + + assert data == ParsedData( + namespace=NamespaceScope( + functions=[ + Function( + return_type=Type( + typename=PQName(segments=[NameSpecifier(name="__int64")]) + ), + name=PQName(segments=[NameSpecifier(name="test_int64")]), + parameters=[], + ), + Function( + return_type=Type( + typename=PQName(segments=[NameSpecifier(name="__int32")]) + ), + name=PQName(segments=[NameSpecifier(name="test_int32")]), + parameters=[], + ), + Function( + return_type=Type( + typename=PQName(segments=[NameSpecifier(name="__int16")]) + ), + name=PQName(segments=[NameSpecifier(name="test_int16")]), + parameters=[], + ), + Function( + return_type=Type( + typename=PQName(segments=[NameSpecifier(name="__int8")]) + ), + name=PQName(segments=[NameSpecifier(name="test_int8")]), + parameters=[], + ), + ] + ) + ) From 9c448d80f739b34a1e5f0b479cfe31d0591db9cd Mon Sep 17 00:00:00 2001 From: N3rdL0rd <168280212+N3rdL0rd@users.noreply.github.com> Date: Tue, 2 Jul 2024 14:25:51 -0500 Subject: [PATCH 4/4] Fix test --- tests/test_msvc_types.py | 56 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 tests/test_msvc_types.py diff --git a/tests/test_msvc_types.py b/tests/test_msvc_types.py new file mode 100644 index 0000000..bf08bb2 --- /dev/null +++ b/tests/test_msvc_types.py @@ -0,0 +1,56 @@ +from cxxheaderparser.types import ( + Function, + Type, + PQName, + NameSpecifier, +) +from cxxheaderparser.simple import ( + NamespaceScope, + parse_string, + ParsedData, +) + + +def test_msvc_types() -> None: + content = """ + __int64 test_int64(); + __int32 test_int32(); + __int16 test_int16(); + __int8 test_int8(); + """ + data = parse_string(content, cleandoc=True) + + assert data == ParsedData( + namespace=NamespaceScope( + functions=[ + Function( + return_type=Type( + typename=PQName(segments=[NameSpecifier(name="__int64")]) + ), + name=PQName(segments=[NameSpecifier(name="test_int64")]), + parameters=[], + ), + Function( + return_type=Type( + typename=PQName(segments=[NameSpecifier(name="__int32")]) + ), + name=PQName(segments=[NameSpecifier(name="test_int32")]), + parameters=[], + ), + Function( + return_type=Type( + typename=PQName(segments=[NameSpecifier(name="__int16")]) + ), + name=PQName(segments=[NameSpecifier(name="test_int16")]), + parameters=[], + ), + Function( + return_type=Type( + typename=PQName(segments=[NameSpecifier(name="__int8")]) + ), + name=PQName(segments=[NameSpecifier(name="test_int8")]), + parameters=[], + ), + ] + ) + )