diff options
| author | Armin Ronacher <armin.ronacher@active-4.com> | 2011-01-07 15:49:01 +0100 |
|---|---|---|
| committer | Armin Ronacher <armin.ronacher@active-4.com> | 2011-01-07 15:49:01 +0100 |
| commit | 3411097bf8a2ba377e763c9d31e46fc74f7914c3 (patch) | |
| tree | fd6b34cfc9a7c8e3f3e0c6e19b27d162bcb5dae6 /sphinx | |
| parent | f75bb97a922e4c0b6f008d5a9b1f1802a27e0fec (diff) | |
| download | sphinx-3411097bf8a2ba377e763c9d31e46fc74f7914c3.tar.gz | |
C++ domain now supports array definitions.
Diffstat (limited to 'sphinx')
| -rw-r--r-- | sphinx/domains/cpp.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py index e712e01e..4688691d 100644 --- a/sphinx/domains/cpp.py +++ b/sphinx/domains/cpp.py @@ -28,6 +28,7 @@ _whitespace_re = re.compile(r'\s+(?u)') _string_re = re.compile(r"[LuU8]?('([^'\\]*(?:\\.[^'\\]*)*)'" r'|"([^"\\]*(?:\\.[^"\\]*)*)")', re.S) _visibility_re = re.compile(r'\b(public|private|protected)\b') +_array_def_re = re.compile(r'\[\s*(.+?)?\s*\]') _operator_re = re.compile(r'''(?x) \[\s*\] | \(\s*\) @@ -273,6 +274,22 @@ class PtrDefExpr(WrappingDefExpr): return u'%s*' % self.typename +class ArrayDefExpr(WrappingDefExpr): + + def __init__(self, typename, size_hint=None): + WrappingDefExpr.__init__(self, typename) + self.size_hint = size_hint + + def get_id(self): + return self.typename.get_id() + u'A' + + def __unicode__(self): + return u'%s[%s]' % ( + self.typename, + self.size_hint is not None and unicode(self.size_hint) or u'' + ) + + class RefDefExpr(WrappingDefExpr): def get_id(self): @@ -562,6 +579,8 @@ class DefinitionParser(object): expr = ConstDefExpr(expr) elif self.skip_string('*'): expr = PtrDefExpr(expr) + elif self.match(_array_def_re): + expr = ArrayDefExpr(expr, self.last_match.group(1)) elif self.skip_string('&'): expr = RefDefExpr(expr) else: |
