summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Pickel <sfiera@gmail.com>2011-04-19 22:22:33 -0400
committerChris Pickel <sfiera@gmail.com>2011-04-19 22:22:33 -0400
commit7d96bfd5644bd67cab589cf4a4c3230e6f022209 (patch)
tree25f800cfbb512c9683c04bc7194210a73f1956f3
parent77a4dd535e223664ce7c0c9780462ed381a4632d (diff)
downloadsphinx-7d96bfd5644bd67cab589cf4a4c3230e6f022209.tar.gz
Support varargs in C++ function signatures.
-rw-r--r--sphinx/domains/cpp.py7
-rw-r--r--tests/test_cpp_domain.py3
2 files changed, 10 insertions, 0 deletions
diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py
index 588a8466..c2cdd8f5 100644
--- a/sphinx/domains/cpp.py
+++ b/sphinx/domains/cpp.py
@@ -708,6 +708,13 @@ class DefinitionParser(object):
self.fail('expected comma between arguments')
self.skip_ws()
+ if self.skip_string('...'):
+ args.append(ArgumentDefExpr(None, '...', None))
+ if self.skip_string(')'):
+ break
+ else:
+ self.fail('expected closing parenthesis after ellipses')
+
argtype = self._parse_type()
argname = default = None
self.skip_ws()
diff --git a/tests/test_cpp_domain.py b/tests/test_cpp_domain.py
index 296de1c8..84649fd1 100644
--- a/tests/test_cpp_domain.py
+++ b/tests/test_cpp_domain.py
@@ -37,6 +37,9 @@ def test_type_definitions():
x = 'explicit module::myclass::foo::foo()'
assert unicode(parse('function', x)) == x
+ x = 'int printf(const char* fmt, ...)'
+ assert unicode(parse('function', x)) == x
+
x = 'std::vector<std::pair<std::string, long long>> module::blah'
assert unicode(parse('type_object', x)) == x