Skip to content

Commit fe6e241

Browse files
Merge pull request #62 from MarcelKoch/parse-parameter-pack
Handle parameter packs `T...`
2 parents a976300 + 0410fe6 commit fe6e241

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

sphinxcontrib/doxylink/parsing.py

+7-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,10 @@ def normalise_templates(toks):
5757

5858
# A combination building up the interesting bit -- the argument type, e.g. 'const QString &', 'int' or 'char*'
5959
argument_type = Opt(qualifier, default='')("qualifier1") + \
60-
input_type("input_type").setParseAction(' '.join) + Opt(qualifier, default='')("qualifier2") + Group(ZeroOrMore(pointer_or_reference))("pointer_or_references")
60+
input_type("input_type").setParseAction(' '.join) + \
61+
Opt(qualifier, default='')("qualifier2") + \
62+
Group(ZeroOrMore(pointer_or_reference))("pointer_or_references") + \
63+
Opt('...')("parameter_pack")
6164

6265
# Argument + variable name + default
6366
argument = Group(argument_type('argument_type') + Opt(input_name) + Opt(default_value))
@@ -137,6 +140,9 @@ def normalise(symbol: str) -> Tuple[str, str]:
137140
# Functions can have a funny combination of *, & and const between the type and the name so build up a list of those here:
138141
argument_string_list.extend(''.join(arg.pointer_or_references))
139142

143+
# Add template parameter pack
144+
argument_string_list.append(arg.parameter_pack)
145+
140146
# Finally we join our argument string and add it to our list
141147
normalised_arg_list.append(''.join(argument_string_list))
142148

tests/test_parser.py

+1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
]
5757

5858
varargs = [
59+
('(Args&& ... args)', ('', '(Args&&...)')),
5960
('(int nb=0,...)', ('', '(int, ...)')),
6061
('printf( const char* format, ... )', ('printf', '(const char*, ...)')),
6162
('fprintf( std::FILE* stream, const char* format, ... )', ('fprintf', '(std::FILE*, const char*, ...)')),

0 commit comments

Comments
 (0)