mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
C, add __int64 as a fundamental type
This commit is contained in:
parent
b2ca906830
commit
fdc55201c8
@ -1889,8 +1889,9 @@ class Symbol:
|
|||||||
class DefinitionParser(BaseParser):
|
class DefinitionParser(BaseParser):
|
||||||
# those without signedness and size modifiers
|
# those without signedness and size modifiers
|
||||||
# see https://en.cppreference.com/w/cpp/language/types
|
# see https://en.cppreference.com/w/cpp/language/types
|
||||||
_simple_fundemental_types = (
|
_simple_fundamental_types = (
|
||||||
'void', '_Bool', 'bool', 'char', 'int', 'float', 'double',
|
'void', '_Bool', 'bool', 'char', 'int', 'float', 'double',
|
||||||
|
'__int64',
|
||||||
)
|
)
|
||||||
|
|
||||||
_prefix_keys = ('struct', 'enum', 'union')
|
_prefix_keys = ('struct', 'enum', 'union')
|
||||||
@ -2357,9 +2358,9 @@ class DefinitionParser(BaseParser):
|
|||||||
return ASTNestedName(names, rooted)
|
return ASTNestedName(names, rooted)
|
||||||
|
|
||||||
def _parse_trailing_type_spec(self) -> Any:
|
def _parse_trailing_type_spec(self) -> Any:
|
||||||
# fundemental types
|
# fundamental types
|
||||||
self.skip_ws()
|
self.skip_ws()
|
||||||
for t in self._simple_fundemental_types:
|
for t in self._simple_fundamental_types:
|
||||||
if self.skip_word(t):
|
if self.skip_word(t):
|
||||||
return ASTTrailingTypeSpecFundamental(t)
|
return ASTTrailingTypeSpecFundamental(t)
|
||||||
|
|
||||||
@ -2382,6 +2383,8 @@ class DefinitionParser(BaseParser):
|
|||||||
elements.append('int')
|
elements.append('int')
|
||||||
elif self.skip_word_and_ws('double'):
|
elif self.skip_word_and_ws('double'):
|
||||||
elements.append('double')
|
elements.append('double')
|
||||||
|
elif self.skip_word_and_ws('__int64'):
|
||||||
|
elements.append('__int64')
|
||||||
if len(elements) > 0:
|
if len(elements) > 0:
|
||||||
return ASTTrailingTypeSpecFundamental(' '.join(elements))
|
return ASTTrailingTypeSpecFundamental(' '.join(elements))
|
||||||
|
|
||||||
@ -3205,6 +3208,9 @@ class CDomain(Domain):
|
|||||||
print(self.data['root_symbol'].dump(0))
|
print(self.data['root_symbol'].dump(0))
|
||||||
print("process_doc end:", docname)
|
print("process_doc end:", docname)
|
||||||
|
|
||||||
|
def process_field_xref(self, pnode: pending_xref) -> None:
|
||||||
|
pnode.attributes.update(self.env.ref_context)
|
||||||
|
|
||||||
def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None:
|
def merge_domaindata(self, docnames: List[str], otherdata: Dict) -> None:
|
||||||
if Symbol.debug_show_tree:
|
if Symbol.debug_show_tree:
|
||||||
print("merge_domaindata:")
|
print("merge_domaindata:")
|
||||||
@ -3239,13 +3245,6 @@ class CDomain(Domain):
|
|||||||
|
|
||||||
warner = Warner()
|
warner = Warner()
|
||||||
|
|
||||||
# strip pointer asterisk
|
|
||||||
target = target.rstrip(' *')
|
|
||||||
|
|
||||||
# becase TypedField can generate xrefs
|
|
||||||
if target in _keywords:
|
|
||||||
raise NoUri(target, typ)
|
|
||||||
|
|
||||||
parser = DefinitionParser(target, warner)
|
parser = DefinitionParser(target, warner)
|
||||||
try:
|
try:
|
||||||
name = parser.parse_xref_object()
|
name = parser.parse_xref_object()
|
||||||
|
@ -6,6 +6,12 @@ directives
|
|||||||
|
|
||||||
.. c:function:: int hello(char *name)
|
.. c:function:: int hello(char *name)
|
||||||
|
|
||||||
|
:rtype: int
|
||||||
|
|
||||||
|
.. c:function:: MyStruct hello2(char *name)
|
||||||
|
|
||||||
|
:rtype: MyStruct
|
||||||
|
|
||||||
.. c:member:: float Sphinx.version
|
.. c:member:: float Sphinx.version
|
||||||
.. c:var:: int version
|
.. c:var:: int version
|
||||||
|
|
||||||
|
@ -108,6 +108,8 @@ def test_expressions():
|
|||||||
exprCheck('int *restrict*')
|
exprCheck('int *restrict*')
|
||||||
exprCheck('int *(*)(double)')
|
exprCheck('int *(*)(double)')
|
||||||
exprCheck('const int*')
|
exprCheck('const int*')
|
||||||
|
exprCheck('__int64')
|
||||||
|
exprCheck('unsigned __int64')
|
||||||
|
|
||||||
# actual expressions
|
# actual expressions
|
||||||
|
|
||||||
@ -260,6 +262,8 @@ def test_member_definitions():
|
|||||||
check('member', 'double a', {1: 'a'})
|
check('member', 'double a', {1: 'a'})
|
||||||
|
|
||||||
check('member', 'unsigned long a', {1: 'a'})
|
check('member', 'unsigned long a', {1: 'a'})
|
||||||
|
check('member', '__int64 a', {1: 'a'})
|
||||||
|
check('member', 'unsigned __int64 a', {1: 'a'})
|
||||||
|
|
||||||
check('member', 'int .a', {1: 'a'})
|
check('member', 'int .a', {1: 'a'})
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user