Change default visibility for C++ superclasses.

This commit is contained in:
Robert Lehmann 2011-10-08 14:55:18 +02:00
parent ea5d3359e9
commit 1a287bb7e2
2 changed files with 12 additions and 11 deletions

View File

@ -382,9 +382,9 @@ class NamedDefExpr(DefExpr):
def get_name(self): def get_name(self):
return self.name.get_name() return self.name.get_name()
def get_modifiers(self): def get_modifiers(self, visibility='public'):
rv = [] rv = []
if self.visibility != 'public': if self.visibility != visibility:
rv.append(self.visibility) rv.append(self.visibility)
if self.static: if self.static:
rv.append(u'static') rv.append(u'static')
@ -495,12 +495,13 @@ class ClassDefExpr(NamedDefExpr):
def get_id(self): def get_id(self):
return self.name.get_id() return self.name.get_id()
def __unicode__(self): def __unicode__(self, visibility='public'):
buf = self.get_modifiers() buf = self.get_modifiers(visibility)
buf.append(unicode(self.name)) buf.append(unicode(self.name))
if self.bases: if self.bases:
buf.append(u':') buf.append(u':')
buf.append(u', '.join(unicode(base) for base in self.bases)) buf.append(u', '.join(base.__unicode__('private')
for base in self.bases))
return u' '.join(buf) return u' '.join(buf)
@ -888,7 +889,7 @@ class DefinitionParser(object):
if self.skip_string(':'): if self.skip_string(':'):
self.skip_ws() self.skip_ws()
while 1: while 1:
access = 'public' access = 'private'
if self.match(_visibility_re): if self.match(_visibility_re):
access = self.matched_text access = self.matched_text
base = self._parse_type() base = self._parse_type()
@ -947,8 +948,8 @@ class CPPObject(ObjectDescription):
pnode += nodes.Text(text) pnode += nodes.Text(text)
node += pnode node += pnode
def attach_modifiers(self, node, obj): def attach_modifiers(self, node, obj, visibility='public'):
if obj.visibility != 'public': if obj.visibility != visibility:
node += addnodes.desc_annotation(obj.visibility, node += addnodes.desc_annotation(obj.visibility,
obj.visibility) obj.visibility)
node += nodes.Text(' ') node += nodes.Text(' ')
@ -1026,7 +1027,7 @@ class CPPClassObject(CPPObject):
if cls.bases: if cls.bases:
signode += nodes.Text(' : ') signode += nodes.Text(' : ')
for base in cls.bases: for base in cls.bases:
self.attach_modifiers(signode, base) self.attach_modifiers(signode, base, 'private')
signode += nodes.emphasis(unicode(base.name), unicode(base.name)) signode += nodes.emphasis(unicode(base.name), unicode(base.name))
signode += nodes.Text(', ') signode += nodes.Text(', ')
signode.pop() # remove the trailing comma signode.pop() # remove the trailing comma

View File

@ -82,10 +82,10 @@ def test_bases():
assert unicode(parse('class', x)) == x assert unicode(parse('class', x)) == x
x = 'A : private B' x = 'A : private B'
assert unicode(parse('class', x)) == x assert unicode(parse('class', x)) == 'A : B'
x = 'A : public B' x = 'A : public B'
assert unicode(parse('class', x)) == 'A : B' assert unicode(parse('class', x)) == x
x = 'A : B, C' x = 'A : B, C'
assert unicode(parse('class', x)) == x assert unicode(parse('class', x)) == x