diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py index acb8ba094..319ded44c 100644 --- a/sphinx/domains/cpp.py +++ b/sphinx/domains/cpp.py @@ -108,18 +108,15 @@ class DefinitionError(Exception): def __init__(self, description): self.description = description - def __unicode__(self): - return self.description - def __str__(self): return unicode(self).encode('utf-8') + def __unicode__(self): + return self.description + class DefExpr(object): - def __unicode__(self): - raise NotImplementedError() - def __eq__(self, other): if type(self) is not type(other): return False @@ -167,6 +164,9 @@ class DefExpr(object): def __str__(self): return unicode(self).encode('utf-8') + def __unicode__(self): + raise NotImplementedError() + def __repr__(self): return '<%s %s>' % (self.__class__.__name__, self) @@ -495,15 +495,17 @@ class ClassDefExpr(NamedDefExpr): def get_id(self): return self.name.get_id() - def __unicode__(self, visibility='public'): + def _tostring(self, visibility='public'): buf = self.get_modifiers(visibility) buf.append(unicode(self.name)) if self.bases: buf.append(u':') - buf.append(u', '.join(base.__unicode__('private') + buf.append(u', '.join(base._tostring('private') for base in self.bases)) return u' '.join(buf) + def __unicode__(self): + return self._tostring('public') class DefinitionParser(object): diff --git a/sphinx/writers/latex.py b/sphinx/writers/latex.py index 75d6e8ec7..0ff2a1247 100644 --- a/sphinx/writers/latex.py +++ b/sphinx/writers/latex.py @@ -280,7 +280,8 @@ class LaTeXTranslator(nodes.NodeVisitor): def idescape(self, id): return unicode(id).translate(tex_replace_map).\ - encode('ascii', 'backslashreplace').replace('\\', '_') + encode('ascii', 'backslashreplace').decode('ascii').\ + replace('\\', '_') def generate_indices(self): def generate(content, collapsed):