Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
nghttp2
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Libraries
nghttp2
Commits
43ba3125
Unverified
Commit
43ba3125
authored
Dec 29, 2020
by
Tatsuhiro Tsujikawa
Committed by
GitHub
Dec 29, 2020
1
Browse files
Options
Browse Files
Download
Plain Diff
Merge pull request #1547 from nghttp2/sphinx-v3.3
Sphinx v3.3
parents
79a4f789
3c17299a
Changes
3
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
554 additions
and
444 deletions
+554
-444
doc/_exts/sphinxcontrib/rubydomain.py
doc/_exts/sphinxcontrib/rubydomain.py
+1
-1
doc/mkapiref.py
doc/mkapiref.py
+106
-42
lib/includes/nghttp2/nghttp2.h
lib/includes/nghttp2/nghttp2.h
+447
-401
No files found.
doc/_exts/sphinxcontrib/rubydomain.py
View file @
43ba3125
...
...
@@ -18,7 +18,7 @@ from docutils.parsers.rst import Directive
from
sphinx
import
addnodes
from
sphinx
import
version_info
from
sphinx.roles
import
XRefRole
from
sphinx.locale
import
l_
,
_
from
sphinx.locale
import
_
from
sphinx.domains
import
Domain
,
ObjType
,
Index
from
sphinx.directives
import
ObjectDescription
from
sphinx.util.nodes
import
make_refnode
...
...
doc/mkapiref.py
View file @
43ba3125
#!/usr/bin/env python
#!/usr/bin/env python
3
# -*- coding: utf-8 -*-
# nghttp2 - HTTP/2 C Library
#
# Copyright (c) 2020 nghttp2 contributors
# Copyright (c) 2020 ngtcp2 contributors
# Copyright (c) 2012 Tatsuhiro Tsujikawa
#
# Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the
# "Software"), to deal in the Software without restriction, including
...
...
@@ -25,17 +27,16 @@
# Generates API reference from C source code.
from
__future__
import
unicode_literals
from
__future__
import
print_function
# At least python 2.6 is required
import
re
,
sys
,
argparse
,
os
.
path
class
FunctionDoc
:
def
__init__
(
self
,
name
,
content
,
domain
):
def
__init__
(
self
,
name
,
content
,
domain
,
filename
):
self
.
name
=
name
self
.
content
=
content
self
.
domain
=
domain
if
self
.
domain
==
'function'
:
self
.
funcname
=
re
.
search
(
r'(nghttp2_[^ )]+)\('
,
self
.
name
).
group
(
1
)
self
.
filename
=
filename
def
write
(
self
,
out
):
out
.
write
(
'.. {}:: {}
\n
'
.
format
(
self
.
domain
,
self
.
name
))
...
...
@@ -64,6 +65,26 @@ class StructDoc:
out
.
write
(
' {}
\n
'
.
format
(
line
))
out
.
write
(
'
\n
'
)
class
EnumDoc
:
def
__init__
(
self
,
name
,
content
,
members
):
self
.
name
=
name
self
.
content
=
content
self
.
members
=
members
def
write
(
self
,
out
):
if
self
.
name
:
out
.
write
(
'.. type:: {}
\n
'
.
format
(
self
.
name
))
out
.
write
(
'
\n
'
)
for
line
in
self
.
content
:
out
.
write
(
' {}
\n
'
.
format
(
line
))
out
.
write
(
'
\n
'
)
for
name
,
content
in
self
.
members
:
out
.
write
(
' .. enum:: {}
\n
'
.
format
(
name
))
out
.
write
(
'
\n
'
)
for
line
in
content
:
out
.
write
(
' {}
\n
'
.
format
(
line
))
out
.
write
(
'
\n
'
)
class
MacroDoc
:
def
__init__
(
self
,
name
,
content
):
self
.
name
=
name
...
...
@@ -75,50 +96,76 @@ class MacroDoc:
for
line
in
self
.
content
:
out
.
write
(
' {}
\n
'
.
format
(
line
))
def
make_api_ref
(
infiles
):
class
MacroSectionDoc
:
def
__init__
(
self
,
content
):
self
.
content
=
content
def
write
(
self
,
out
):
out
.
write
(
'
\n
'
)
c
=
' '
.
join
(
self
.
content
).
strip
()
out
.
write
(
c
)
out
.
write
(
'
\n
'
)
out
.
write
(
'-'
*
len
(
c
))
out
.
write
(
'
\n\n
'
)
class
TypedefDoc
:
def
__init__
(
self
,
name
,
content
):
self
.
name
=
name
self
.
content
=
content
def
write
(
self
,
out
):
out
.
write
(
'''.. type:: {}
\n
'''
.
format
(
self
.
name
))
out
.
write
(
'
\n
'
)
for
line
in
self
.
content
:
out
.
write
(
' {}
\n
'
.
format
(
line
))
def
make_api_ref
(
infile
):
macros
=
[]
enums
=
[]
types
=
[]
functions
=
[]
for
infile
in
infiles
:
while
True
:
while
True
:
line
=
infile
.
readline
()
if
not
line
:
break
elif
line
==
'/**
\n
'
:
line
=
infile
.
readline
()
if
not
line
:
break
elif
line
==
'/**
\n
'
:
line
=
infile
.
readline
()
doctype
=
line
.
split
()[
1
]
if
doctype
==
'@funct
ion'
:
functions
.
append
(
process_function
(
'function'
,
infile
))
elif
doctype
==
'@functypedef
'
:
types
.
append
(
process_function
(
'type'
,
infile
))
elif
doctype
==
'@struct'
or
doctype
==
'@union
'
:
types
.
append
(
process_struct
(
infile
))
elif
doctype
==
'@enum
'
:
enums
.
append
(
process_enum
(
infile
))
elif
doctype
==
'@macro
'
:
macros
.
append
(
process_macro
(
infile
))
doctype
=
line
.
split
()[
1
]
if
doctype
==
'@function'
:
functions
.
append
(
process_function
(
'function'
,
infile
))
elif
doctype
==
'@functypedef'
:
types
.
append
(
process_function
(
'type'
,
infile
))
elif
doctype
==
'@struct'
or
doctype
==
'@un
ion'
:
types
.
append
(
process_struct
(
infile
))
elif
doctype
==
'@enum
'
:
enums
.
append
(
process_enum
(
infile
))
elif
doctype
==
'@macro
'
:
macros
.
append
(
process_macro
(
infile
))
elif
doctype
==
'@macrosection
'
:
macros
.
append
(
process_macrosection
(
infile
))
elif
doctype
==
'@typedef
'
:
types
.
append
(
process_typedef
(
infile
))
return
macros
,
enums
,
types
,
functions
alldocs
=
[(
'Macros'
,
macros
),
(
'Enums'
,
enums
),
(
'Types (structs, unions and typedefs)'
,
types
),
(
'Functions'
,
functions
)]
def
output
(
indexfile
,
macrosfile
,
enumsfile
,
typesfile
,
funcsdir
,
title
,
indexfile
,
macrosfile
,
enumsfile
,
typesfile
,
funcsdir
,
macros
,
enums
,
types
,
functions
):
indexfile
.
write
(
'''
API Reference
=============
{title}
{titledecoration}
.. toctree::
:maxdepth: 1
macros
enums
types
'''
)
{macros}
{enums}
{types}
'''
.
format
(
title
=
title
,
titledecoration
=
'='
*
len
(
title
),
macros
=
os
.
path
.
splitext
(
os
.
path
.
basename
(
macrosfile
.
name
))[
0
],
enums
=
os
.
path
.
splitext
(
os
.
path
.
basename
(
enumsfile
.
name
))[
0
],
types
=
os
.
path
.
splitext
(
os
.
path
.
basename
(
typesfile
.
name
))[
0
],
))
for
doc
in
functions
:
indexfile
.
write
(
' {}
\n
'
.
format
(
doc
.
funcname
))
...
...
@@ -153,9 +200,10 @@ Types (structs, unions and typedefs)
Synopsis
--------
*#include <nghttp2/
nghttp2.h
>*
*#include <nghttp2/
{filename}
>*
'''
.
format
(
funcname
=
doc
.
funcname
,
secul
=
'='
*
len
(
doc
.
funcname
)))
'''
.
format
(
funcname
=
doc
.
funcname
,
secul
=
'='
*
len
(
doc
.
funcname
),
filename
=
doc
.
filename
))
doc
.
write
(
f
)
def
process_macro
(
infile
):
...
...
@@ -164,6 +212,17 @@ def process_macro(infile):
macro_name
=
line
.
split
()[
1
]
return
MacroDoc
(
macro_name
,
content
)
def
process_macrosection
(
infile
):
content
=
read_content
(
infile
)
return
MacroSectionDoc
(
content
)
def
process_typedef
(
infile
):
content
=
read_content
(
infile
)
typedef
=
infile
.
readline
()
typedef
=
re
.
sub
(
r';\n$'
,
''
,
typedef
)
typedef
=
re
.
sub
(
r'typedef '
,
''
,
typedef
)
return
TypedefDoc
(
typedef
,
content
)
def
process_enum
(
infile
):
members
=
[]
enum_name
=
None
...
...
@@ -176,7 +235,7 @@ def process_enum(infile):
member_content
=
read_content
(
infile
)
line
=
infile
.
readline
()
items
=
line
.
split
()
member_name
=
items
[
0
]
member_name
=
items
[
0
]
.
rstrip
(
','
)
if
len
(
items
)
>=
3
:
member_content
.
insert
(
0
,
'(``{}``) '
\
.
format
(
' '
.
join
(
items
[
2
:]).
rstrip
(
','
)))
...
...
@@ -185,7 +244,7 @@ def process_enum(infile):
enum_name
=
line
.
rstrip
().
split
()[
1
]
enum_name
=
re
.
sub
(
r';$'
,
''
,
enum_name
)
break
return
StructDoc
(
enum_name
,
content
,
members
,
'macro'
)
return
EnumDoc
(
enum_name
,
content
,
members
)
def
process_struct
(
infile
):
members
=
[]
...
...
@@ -226,7 +285,9 @@ def process_function(domain, infile):
func_proto
=
re
.
sub
(
r';\n$'
,
''
,
func_proto
)
func_proto
=
re
.
sub
(
r'\s+'
,
' '
,
func_proto
)
func_proto
=
re
.
sub
(
r'NGHTTP2_EXTERN '
,
''
,
func_proto
)
return
FunctionDoc
(
func_proto
,
content
,
domain
)
func_proto
=
re
.
sub
(
r'typedef '
,
''
,
func_proto
)
filename
=
os
.
path
.
basename
(
infile
.
name
)
return
FunctionDoc
(
func_proto
,
content
,
domain
,
filename
)
def
read_content
(
infile
):
content
=
[]
...
...
@@ -251,6 +312,8 @@ def transform_content(content):
if
__name__
==
'__main__'
:
parser
=
argparse
.
ArgumentParser
(
description
=
"Generate API reference"
)
parser
.
add_argument
(
'--title'
,
default
=
'API Reference'
,
help
=
'title of index page'
)
parser
.
add_argument
(
'index'
,
type
=
argparse
.
FileType
(
'w'
),
help
=
'index output file'
)
parser
.
add_argument
(
'macros'
,
type
=
argparse
.
FileType
(
'w'
),
...
...
@@ -269,12 +332,13 @@ if __name__ == '__main__':
types
=
[]
funcs
=
[]
for
infile
in
args
.
files
:
m
,
e
,
t
,
f
=
make_api_ref
(
args
.
files
)
m
,
e
,
t
,
f
=
make_api_ref
(
infile
)
macros
.
extend
(
m
)
enums
.
extend
(
e
)
types
.
extend
(
t
)
funcs
.
extend
(
f
)
funcs
.
sort
(
key
=
lambda
x
:
x
.
funcname
)
output
(
args
.
title
,
args
.
index
,
args
.
macros
,
args
.
enums
,
args
.
types
,
args
.
funcsdir
,
macros
,
enums
,
types
,
funcs
)
lib/includes/nghttp2/nghttp2.h
View file @
43ba3125
This diff is collapsed.
Click to expand it.
chen2022
@chen20220110
mentioned in commit
2befadf3
·
Feb 16, 2022
mentioned in commit
2befadf3
mentioned in commit 2befadf337692f721db6f4eba808a3b7434d891b
Toggle commit list
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment