55 Commits

Author SHA1 Message Date
Dustin Spicuzza
51d29a0791 Support multiple template declarations on a class or function
- Fixes #20
2023-10-05 02:29:25 -04:00
Dustin Spicuzza
175815525f
Merge pull request #6 from robotpy/fmt-types
Add pretty formatting for types
2023-10-04 04:04:03 -04:00
Dustin Spicuzza
e30c117b62 Parse auto functions with trailing return 2023-10-04 03:29:27 -04:00
Dustin Spicuzza
a5ce9a24e6 Add pretty formatting for types and template specializations
- Fixes #3
2023-10-04 03:16:33 -04:00
Dustin Spicuzza
4d16552544 Allow forward declared template methods 2023-10-02 01:45:51 -04:00
Dustin Spicuzza
ab99f2fa72 Handle pcpp relative path quirk 2023-10-01 03:07:26 -04:00
Dustin Spicuzza
326da6112c Remove EmptyBlockState
- Turns out you can't put an empty block except in code
2023-09-27 01:14:21 -04:00
Dustin Spicuzza
c3fbe4c16c breaking change: Remove operator type and make part of Function
- Unifies free function operators and method operators -- otherwise users
  would need to parse the operator themselves to deal with free function operators
- We don't have any releases yet, so there are no stability guarantees
2023-09-23 21:45:30 -04:00
Dustin Spicuzza
09eb5af3a3 Add tokfmt test for void** 2023-09-19 00:19:46 -04:00
Dustin Spicuzza
8e2d9909fa Provide mechanism to skip entire blocks
- Simplifies usage of visitor logic considerably
- Add null_visitor to help with this
2023-09-09 23:10:17 -04:00
Dustin Spicuzza
3bae95f2a7 Allow parser visitors to leverage the parser's state instead of creating their own stacks 2023-09-03 19:49:40 -04:00
Dustin Spicuzza
a13cdf4f67 Provide mechanism to specify preprocessor file encoding 2023-09-03 18:46:31 -04:00
Dustin Spicuzza
de4d06defe Fix preprocessor option to retain content 2023-09-03 18:46:31 -04:00
Dustin Spicuzza
a60bb7fd18 Add basic preprocessor test 2023-09-03 18:46:31 -04:00
Dustin Spicuzza
4febbe5d0d Fix #line directives 2023-08-22 10:02:22 -04:00
Dustin Spicuzza
f597b691f7 Parse extra type information for conversion operators
- Fixes #57
2023-08-19 20:02:03 -04:00
Dustin Spicuzza
6ab0d00c2f
Merge pull request #56 from robotpy/remove-pp-and-handle-continuations
Remove pp and handle continuations
2023-08-19 19:45:25 -04:00
Dustin Spicuzza
bd9907ad79 Restructure preprocessor support
- Remove partial support for #define and other PP directives
- Allow pragma to span multiple lines
- Pragma now emits a list of tokens instead of a single string
- Ignore #warning directive if present
2023-08-19 19:42:05 -04:00
Dustin Spicuzza
b07e1f81a6 Discard line continuations
- Fixes #54
2023-07-23 17:02:32 -04:00
Tomaž Šuštar
3938d0ffef
fix #49 for anonymous unions (#50)
* fix #49 for anonymous unions

* fix formatting

* fix mypy and tests

* fix for structs

* fix formatting
2023-06-14 13:31:10 -04:00
Dustin Spicuzza
2fe350bf35 Parse namespace alias and emit it
- Fixes #43
2023-03-17 01:24:23 -04:00
Dustin Spicuzza
1aa9e72ca1 Upgrade black to 2023.1 2023-03-16 18:45:34 -04:00
Dustin Spicuzza
e5295070a0 Add support for parsing user defined literals 2022-12-15 02:55:07 -05:00
Dustin Spicuzza
1eaa85ae8d Split the lexer into PlyLexer and TokenStream components
- There are two types of token streams: file based, and list based
- I think this has better component separation
- Doxygen parsing is a bit weirder, but I think it's more straightforward to see all the pieces?
2022-12-15 02:38:44 -05:00
Dustin Spicuzza
40bf05b384 Add additional doxygen related testcases to make sure things don't accidentally break 2022-12-15 01:49:49 -05:00
Dustin Spicuzza
2ba5c3c829 Support extracting doxygen comments when declspec or attributes are present 2022-12-15 01:49:49 -05:00
Dustin Spicuzza
ace1d09d9d Add throw/noexcept tests 2022-12-09 03:28:50 -05:00
Dustin Spicuzza
8a0568c0f5 Change balanced token handling to allow mismatched gt/lt tokens
- These can be used for math, so we just assume the code is doing that
2022-12-09 03:26:16 -05:00
Dustin Spicuzza
ff645920b8 Capture doxygen comments for namespaces 2022-12-09 01:16:54 -05:00
Dustin Spicuzza
dc76328bd5 Add support for inline namespaces 2022-12-09 01:16:12 -05:00
Dustin Spicuzza
919e35e45f Correctly parse constructor implementations outside of a class
- Fixes #32
2022-12-08 02:00:05 -05:00
Dustin Spicuzza
15e4e0b879 Add support for parsing method implementations outside of a class
- Fixes #10
2022-12-08 01:26:16 -05:00
Dustin Spicuzza
ddad7cb6b1 Add support for parsing explicit template instantiation 2022-12-07 08:36:31 -05:00
Dustin Spicuzza
f1c1f2e6af Add misc tests added to CppHeaderParser 2022-12-06 07:52:51 -05:00
Dustin Spicuzza
9756025e2d mypy: add None return types to functions that don't return a value 2022-01-02 21:30:41 -05:00
Dustin Spicuzza
8f7455f3d3 Enable test with duplicate name 2021-12-16 23:03:18 -05:00
Dustin Spicuzza
5d564687c3 Add support for conversion operators
- Fixes #9
2021-11-29 22:56:43 -05:00
Dustin Spicuzza
92f8e72779 Support parsing MSVC calling conventions
- Fixes #5
- Fixes #33
2021-11-27 21:40:10 -05:00
Dustin Spicuzza
a67c9c4afe Add test for #21
- Fixes #21
2021-11-26 10:19:48 -05:00
Dustin Spicuzza
8d506e5700 Support __declspec (and other attributes) when parsing a name
- Sometimes this will lead to accepting invalid code, but "dont do that"
- Fixes #12
2021-11-26 10:03:26 -05:00
Dustin Spicuzza
3c5174b52f Allow typedefs of function definitions
- Fixes #13
2021-11-26 01:11:50 -05:00
Dustin Spicuzza
b611b9189a Allow using 'final' as a name in some contexts
- Strictly speaking, this fix will allow 'final' in some contexts where it isn't actually
  allowed. However, cxxheaderparser "will not reject all invalid C++ headers!" so this is ok
- Fixes #14
2021-11-26 00:28:54 -05:00
Dustin Spicuzza
c7d480e8c3 Handle function pointer parameters where the return value is a reference
- Fixes #17
2021-11-26 00:11:36 -05:00
Dustin Spicuzza
5f57509568 Format with latest black 2021-11-25 22:51:08 -05:00
Spicuzza
420f293ead Add test for inline + volatile function
- Fixes #18
2021-11-21 12:59:54 -05:00
Spicuzza
8591e3114f Add test for mutable
- Fixes #19
2021-11-21 12:56:26 -05:00
Dustin Spicuzza
65e05bfb90 Add test for volatile field
- Fixes #16
2021-09-08 09:21:01 -04:00
Dustin Spicuzza
6435b47744 Support volatile keyword correctly 2021-08-16 16:07:13 -04:00
Dustin Spicuzza
3c51a30efe Support using 'typename' qualifier before type names
- Fixes #7
2021-01-09 12:54:45 -05:00
Dustin Spicuzza
8c9f8fd8ba Add support for C++17 trailing return types 2021-01-04 21:55:29 -05:00