summaryrefslogtreecommitdiff
path: root/sphinx/domains/cpp.py
diff options
context:
space:
mode:
authormitsuhiko <devnull@localhost>2010-05-30 13:51:50 +0200
committermitsuhiko <devnull@localhost>2010-05-30 13:51:50 +0200
commit9c3e7a6f5585b2f9a93b99db4698393eda610468 (patch)
treeeef4a8dba47ae8e6447726b82805c1d2c18d7dff /sphinx/domains/cpp.py
parentca23d0062208d7c982d128b55b426b8fbb75cdb5 (diff)
downloadsphinx-9c3e7a6f5585b2f9a93b99db4698393eda610468.tar.gz
Fixed a C++ bug that caused bad references to be generated. This also
adds a note on overloads always ending up on the first version of the method in case more than one is defined.
Diffstat (limited to 'sphinx/domains/cpp.py')
-rw-r--r--sphinx/domains/cpp.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/sphinx/domains/cpp.py b/sphinx/domains/cpp.py
index 9ec2ab4b..d5e59bc7 100644
--- a/sphinx/domains/cpp.py
+++ b/sphinx/domains/cpp.py
@@ -828,8 +828,13 @@ class CPPObject(ObjectDescription):
signode['ids'].append(theid)
signode['first'] = (not self.names)
self.state.document.note_explicit_target(signode)
- self.env.domaindata['cpp']['objects'][name] = \
- (self.env.docname, self.objtype)
+
+ # XXX: why is objtype function? How to get to func?
+ typ = self.objtype
+ if typ == 'function':
+ typ = 'func'
+ self.env.domaindata['cpp']['objects'].setdefault(name,
+ (self.env.docname, typ, theid))
indextext = self.get_index_text(name)
if indextext:
@@ -1053,7 +1058,7 @@ class CPPDomain(Domain):
}
def clear_doc(self, docname):
- for fullname, (fn, _) in self.data['objects'].items():
+ for fullname, (fn, _, _) in self.data['objects'].items():
if fn == docname:
del self.data['objects'][fullname]
@@ -1066,7 +1071,7 @@ class CPPDomain(Domain):
obj = self.data['objects'][name]
if obj[1] != typ:
return None
- return make_refnode(builder, fromdocname, obj[0], expr.get_id(),
+ return make_refnode(builder, fromdocname, obj[0], obj[2],
contnode, name)
parser = DefinitionParser(target)
@@ -1094,5 +1099,5 @@ class CPPDomain(Domain):
return _create_refnode(expr.prefix(parent))
def get_objects(self):
- for refname, (docname, type) in self.data['objects'].iteritems():
+ for refname, (docname, type, theid) in self.data['objects'].iteritems():
yield (refname, refname, type, docname, refname, 1)