mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Enable documenting C members inside C type directive.
This commit is contained in:
parent
7ef806ffb0
commit
52ab6c99be
@ -99,13 +99,20 @@ class CObject(ObjectDescription):
|
|||||||
m = c_funcptr_name_re.match(name)
|
m = c_funcptr_name_re.match(name)
|
||||||
if m:
|
if m:
|
||||||
name = m.group(1)
|
name = m.group(1)
|
||||||
|
|
||||||
|
typename = self.env.temp_data.get('c:type')
|
||||||
|
if self.name == 'c:member' and typename:
|
||||||
|
fullname = typename + '.' + name
|
||||||
|
else:
|
||||||
|
fullname = name
|
||||||
|
|
||||||
if not arglist:
|
if not arglist:
|
||||||
if self.objtype == 'function':
|
if self.objtype == 'function':
|
||||||
# for functions, add an empty parameter list
|
# for functions, add an empty parameter list
|
||||||
signode += addnodes.desc_parameterlist()
|
signode += addnodes.desc_parameterlist()
|
||||||
if const:
|
if const:
|
||||||
signode += addnodes.desc_addname(const, const)
|
signode += addnodes.desc_addname(const, const)
|
||||||
return name
|
return fullname
|
||||||
|
|
||||||
paramlist = addnodes.desc_parameterlist()
|
paramlist = addnodes.desc_parameterlist()
|
||||||
arglist = arglist.replace('`', '').replace('\\ ', '') # remove markup
|
arglist = arglist.replace('`', '').replace('\\ ', '') # remove markup
|
||||||
@ -127,7 +134,7 @@ class CObject(ObjectDescription):
|
|||||||
signode += paramlist
|
signode += paramlist
|
||||||
if const:
|
if const:
|
||||||
signode += addnodes.desc_addname(const, const)
|
signode += addnodes.desc_addname(const, const)
|
||||||
return name
|
return fullname
|
||||||
|
|
||||||
def get_index_text(self, name):
|
def get_index_text(self, name):
|
||||||
if self.objtype == 'function':
|
if self.objtype == 'function':
|
||||||
@ -163,6 +170,17 @@ class CObject(ObjectDescription):
|
|||||||
if indextext:
|
if indextext:
|
||||||
self.indexnode['entries'].append(('single', indextext, name, name))
|
self.indexnode['entries'].append(('single', indextext, name, name))
|
||||||
|
|
||||||
|
def before_content(self):
|
||||||
|
self.typename_set = False
|
||||||
|
if self.name == 'c:type':
|
||||||
|
if self.names:
|
||||||
|
self.env.temp_data['c:type'] = self.names[0]
|
||||||
|
self.typename_set = True
|
||||||
|
|
||||||
|
def after_content(self):
|
||||||
|
if self.typename_set:
|
||||||
|
self.env.temp_data['c:type'] = None
|
||||||
|
|
||||||
|
|
||||||
class CXRefRole(XRefRole):
|
class CXRefRole(XRefRole):
|
||||||
def process_link(self, env, refnode, has_explicit_title, title, target):
|
def process_link(self, env, refnode, has_explicit_title, title, target):
|
||||||
|
Loading…
Reference in New Issue
Block a user