Skip to content

Commit 109cfa4

Browse files
committed
minor documentation fixes
1 parent 307b83c commit 109cfa4

18 files changed

Lines changed: 129 additions & 97 deletions

.github/workflows/gh-pages.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,18 @@ jobs:
3434

3535
- name: Install dependencies
3636
run: |
37-
sudo apt-get install -y doxygen python3-sphinx python3-sphinx-rtd-theme graphviz
37+
sudo apt-get install -y doxygen python3-sphinx python3-sphinx-rtd-theme graphviz \
38+
libtbb-dev libtaskflow-cpp-dev
3839
pip3 install breathe sphinxcontrib-bibtex sphinx_copybutton IPython myst_parser \
3940
nbsphinx
4041
4142
- name: Configure CMake
42-
run: cmake -B ${{github.workspace}}/build -DSTDEXEC_BUILD_DOCS:BOOL=ON
43+
run: cmake -B ${{github.workspace}}/build \
44+
-DSTDEXEC_BUILD_DOCS:BOOL=ON \
45+
-DSTDEXEC_ENABLE_ASIO:BOOL=ON \
46+
-DSTDEXEC_ASIO_IMPLEMENTATION:STRING=standalone \
47+
-DSTDEXEC_ENABLE_TASKFLOW:BOOL=ON \
48+
-DSTDEXEC_ENABLE_TBB:BOOL=ON
4349

4450
- name: Build
4551
run: cmake --build ${{github.workspace}}/build --target docs

docs/CMakeLists.txt

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,26 @@
1717
find_package(Doxygen REQUIRED)
1818
find_package(Sphinx REQUIRED)
1919

20-
include(../cmake/Modules/ConfigureASIO.cmake)
21-
2220
# Find all the public headers
2321
set(STDEXEC_PUBLIC_HEADER_DIR ${CMAKE_SOURCE_DIR}/include)
2422
file(GLOB_RECURSE STDEXEC_PUBLIC_HEADERS ${STDEXEC_PUBLIC_HEADER_DIR}/*.hpp)
2523

26-
set(DOXYGEN_INPUT_DIR ${PROJECT_SOURCE_DIR}/include)
24+
# Doxygen's INPUT tag accepts whitespace-separated, individually-quoted
25+
# paths. CMake serializes lists with ';', which Doxygen would treat as
26+
# part of a single path, so we explicitly quote each entry and join
27+
# with a space here. (The corresponding line in Doxyfile.in must NOT
28+
# wrap @DOXYGEN_INPUT_DIR@ in another layer of quotes.)
29+
string(JOIN " " DOXYGEN_INPUT_DIR
30+
"\"${PROJECT_SOURCE_DIR}/include\""
31+
"\"${CMAKE_CURRENT_BINARY_DIR}\"")
32+
string(JOIN " " DOXYGEN_EXCLUDE_DIR
33+
"\"${PROJECT_SOURCE_DIR}/include/execpools\""
34+
"\"${PROJECT_SOURCE_DIR}/include/tbbexec\""
35+
"\"${PROJECT_SOURCE_DIR}/include/asioexec\"")
2736
set(DOXYGEN_OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/build/doxygen)
28-
set(DOXYGEN_EXCLUDE_DIR ${PROJECT_SOURCE_DIR}/include/execpools)
2937
set(DOXYGEN_INDEX_FILE ${DOXYGEN_OUTPUT_DIR}/xml/index.xml)
3038
set(DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in)
3139
set(DOXYFILE_OUT ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile)
32-
set(COMPILATION_DB_PATH ${PROJECT_SOURCE_DIR})
3340

3441
# Find the location of stddef.h
3542
execute_process(COMMAND echo "#include <stddef.h>"

docs/Doxyfile.in

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ FULL_PATH_NAMES = YES
184184
# will be relative from the directory where doxygen is started.
185185
# This tag requires that the tag FULL_PATH_NAMES is set to YES.
186186

187-
STRIP_FROM_PATH =
187+
STRIP_FROM_PATH = @PROJECT_SOURCE_DIR@
188188

189189
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
190190
# path mentioned in the documentation of a class, which tells the reader which
@@ -943,7 +943,7 @@ WARN_LOGFILE =
943943
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
944944
# Note: If this tag is empty the current directory is searched.
945945

946-
INPUT = "@DOXYGEN_INPUT_DIR@"
946+
INPUT = @DOXYGEN_INPUT_DIR@
947947

948948
# This tag can be used to specify the character encoding of the source files
949949
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
@@ -1020,7 +1020,7 @@ RECURSIVE = YES
10201020
# Note that relative paths are relative to the directory from which doxygen is
10211021
# run.
10221022

1023-
EXCLUDE = "@DOXYGEN_EXCLUDE_DIR@"
1023+
EXCLUDE = @DOXYGEN_EXCLUDE_DIR@
10241024

10251025
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
10261026
# directories that are symbolic links (a Unix file system feature) are excluded
@@ -2366,18 +2366,23 @@ INCLUDE_FILE_PATTERNS =
23662366
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
23672367

23682368
PREDEFINED = "__cplusplus=202302L" \
2369+
"__cpp_explicit_this_parameter=202110L" \
23692370
"STDEXEC_DOXYGEN_INVOKED=1" \
23702371
"STDEXEC=stdexec" \
23712372
"STDEXEC_PARALLEL_SCHEDULER_HEADER_ONLY=1" \
23722373
"STDEXEC_PARALLEL_SCHEDULER_INLINE=inline" \
23732374
"STDEXEC_ATTRIBUTE(...)= " \
2375+
"STDEXEC_IMMOVABLE(X)=X(X&&) = delete" \
23742376
"STDEXEC_IMMOVABLE_NO_UNIQUE_ADDRESS= " \
23752377
"STDEXEC_AUTO_RETURN(...)=->decltype(auto){ return __VA_ARGS__; }" \
23762378
"STDEXEC_EXPLICIT_THIS_BEGIN(...)=__VA_ARGS__" \
23772379
"STDEXEC_EXPLICIT_THIS_END(...)= " \
23782380
"STDEXEC_CLANG()=1" \
2381+
"STDEXEC_CLANG_CL()=0" \
2382+
"STDEXEC_APPLE_CLANG()=0" \
23792383
"STDEXEC_MSVC()=0" \
23802384
"STDEXEC_GCC()=0" \
2385+
"STDEXEC_NVCC()=0" \
23812386
"STDEXEC_NVHPC()=0" \
23822387
"STDEXEC_EDG()=0" \
23832388
"STDEXEC_PRAGMA_PUSH()= " \
@@ -2815,10 +2820,4 @@ MSCGEN_TOOL =
28152820

28162821
MSCFILE_DIRS =
28172822

2818-
# Use clang to parse the source code.
2819-
CLANG_ASSISTED_PARSING = YES
2820-
CLANG_DATABASE_PATH = "@COMPILATION_DB_PATH@"
2821-
CLANG_OPTIONS = -isystem "@STDDEF_INCLUDE_PATH@" \
2822-
-std=c++23 \
2823-
-DSTDEXEC_DOXYGEN_INVOKED=1 \
2824-
-DSTDEXEC_PARALLEL_SCHEDULER_HEADER_ONLY=1
2823+
CLANG_ASSISTED_PARSING = NO

docs/source/index.rst

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,10 @@ separates concerns cleanly, enabling:
6868
- Full support for customization: Plug in your own schedulers, senders, adaptors,
6969
allocators, stop tokens, etc.
7070

71-
Senders end `Callback Hell <https://chatgpt.com/s/t_687fe7703d708191b94247513ad28246>`_.
71+
Senders end `Callback Hell <https://en.wiktionary.org/wiki/callback_hell>`_.
7272

7373

74-
🚦 Standardization Status (as of 2025)
74+
🚦 Standardization Status (as of 2026)
7575
--------------------------------------
7676

7777
- The core Sender model has been accepted into the C++ standard for C++26.

docs/source/reference/index.rst

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -43,12 +43,12 @@ The concepts fall into three layers:
4343
its lifetime is tracked.
4444

4545
Sender concepts
46-
~~~~~~~~~~~~~~~
46+
^^^^^^^^^^^^^^^
4747

4848
.. _ref-concept-sender:
4949

5050
``sender``
51-
^^^^^^^^^^
51+
~~~~~~~~~~
5252

5353
.. doxygenconcept:: stdexec::sender
5454

@@ -59,24 +59,24 @@ Sender concepts
5959
.. _ref-concept-sender_in:
6060

6161
``sender_in``
62-
^^^^^^^^^^^^^
62+
~~~~~~~~~~~~~
6363

6464
.. doxygenconcept:: stdexec::sender_in
6565

6666
.. _ref-concept-sender_to:
6767

6868
``sender_to``
69-
^^^^^^^^^^^^^
69+
~~~~~~~~~~~~~
7070

7171
.. doxygenconcept:: stdexec::sender_to
7272

7373
Receiver and operation-state concepts
74-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
74+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7575

7676
.. _ref-concept-receiver:
7777

7878
``receiver``
79-
^^^^^^^^^^^^
79+
~~~~~~~~~~~~
8080

8181
.. doxygenconcept:: stdexec::receiver
8282

@@ -85,40 +85,40 @@ Receiver and operation-state concepts
8585
.. _ref-concept-receiver_of:
8686

8787
``receiver_of``
88-
^^^^^^^^^^^^^^^
88+
~~~~~~~~~~~~~~~
8989

9090
.. doxygenconcept:: stdexec::receiver_of
9191

9292
.. _ref-concept-operation_state:
9393

9494
``operation_state``
95-
^^^^^^^^^^^^^^^^^^^
95+
~~~~~~~~~~~~~~~~~~~
9696

9797
.. doxygenconcept:: stdexec::operation_state
9898

9999
.. doxygenstruct:: stdexec::operation_state_tag
100100

101101
Context concepts
102-
~~~~~~~~~~~~~~~~
102+
^^^^^^^^^^^^^^^^
103103

104104
.. _ref-concept-scheduler:
105105

106106
``scheduler``
107-
^^^^^^^^^^^^^
107+
~~~~~~~~~~~~~
108108

109109
.. doxygenconcept:: stdexec::scheduler
110110

111111
.. _ref-concept-scope_token:
112112

113113
``scope_token``
114-
^^^^^^^^^^^^^^^
114+
~~~~~~~~~~~~~~~
115115

116116
.. doxygenconcept:: stdexec::scope_token
117117

118118
.. _ref-concept-scope_association:
119119

120120
``scope_association``
121-
^^^^^^^^^^^^^^^^^^^^^
121+
~~~~~~~~~~~~~~~~~~~~~
122122

123123
.. doxygenconcept:: stdexec::scope_association
124124

@@ -154,12 +154,12 @@ narrative walkthrough of how these fit together when writing a new
154154
sender adaptor.
155155

156156
Sender-side
157-
~~~~~~~~~~~
157+
^^^^^^^^^^^
158158

159159
.. _ref-cpo-connect:
160160

161161
``connect``
162-
^^^^^^^^^^^
162+
~~~~~~~~~~~
163163

164164
.. doxygenstruct:: stdexec::connect_t
165165
:members:
@@ -169,7 +169,7 @@ Sender-side
169169
.. _ref-cpo-get_completion_signatures:
170170

171171
``get_completion_signatures``
172-
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
172+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
173173

174174
Unlike the other entries in this section, ``get_completion_signatures``
175175
is a *function template* (not a CPO instance), so it has no underlying
@@ -180,25 +180,25 @@ share documentation:
180180
:sections: briefdescription detaileddescription
181181

182182
Operation-state-side
183-
~~~~~~~~~~~~~~~~~~~~
183+
^^^^^^^^^^^^^^^^^^^^
184184

185185
.. _ref-cpo-start:
186186

187187
``start``
188-
^^^^^^^^^
188+
~~~~~~~~~
189189

190190
.. doxygenstruct:: stdexec::start_t
191191
:members:
192192

193193
.. doxygenvariable:: stdexec::start
194194

195195
Receiver-side
196-
~~~~~~~~~~~~~
196+
^^^^^^^^^^^^^
197197

198198
.. _ref-cpo-set_value:
199199

200200
``set_value``
201-
^^^^^^^^^^^^^
201+
~~~~~~~~~~~~~
202202

203203
.. doxygenstruct:: stdexec::set_value_t
204204
:members:
@@ -208,7 +208,7 @@ Receiver-side
208208
.. _ref-cpo-set_error:
209209

210210
``set_error``
211-
^^^^^^^^^^^^^
211+
~~~~~~~~~~~~~
212212

213213
.. doxygenstruct:: stdexec::set_error_t
214214
:members:
@@ -218,7 +218,7 @@ Receiver-side
218218
.. _ref-cpo-set_stopped:
219219

220220
``set_stopped``
221-
^^^^^^^^^^^^^^^
221+
~~~~~~~~~~~~~~~
222222

223223
.. doxygenstruct:: stdexec::set_stopped_t
224224
:members:
@@ -228,7 +228,7 @@ Receiver-side
228228
.. _ref-cpo-get_env:
229229

230230
``get_env``
231-
^^^^^^^^^^^
231+
~~~~~~~~~~~
232232

233233
.. doxygenstruct:: stdexec::get_env_t
234234
:members:
@@ -315,7 +315,7 @@ for an approachable introduction.
315315
.. _ref-just_from:
316316

317317
``just_from`` (experimental) — like ``just`` but value-producing via a function
318-
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
318+
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
319319

320320
.. doxygenvariable:: experimental::execution::just_from
321321

docs/source/user/index.rst

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ From the perspective of the user, the core concepts of the Sender model are the
3131
**sender** abstraction, the **scheduler** abstraction, and **sender algorithms**.
3232

3333
1. Scheduler
34-
^^^^^^^^^^^^
34+
~~~~~~~~~~~~
3535

3636
A **scheduler** is an object that provides a way to schedule work. They are lightweight
3737
handles to what is often a heavy-weight and immovable **execution context**. Execution
@@ -56,16 +56,13 @@ is executed on a context by chaining continuations to one of these senders, and
5656
it to one of the algorithms that starts work, like ``stdexec::sync_wait``.
5757

5858
2. Sender
59-
^^^^^^^^^
59+
~~~~~~~~~
6060

6161
A **sender** is an object that describes an asynchronous computation that may happen
6262
later. It can do nothing on its own, but when connected to a receiver, it returns an
6363
**operation state** that can start the work described by the sender.
6464

65-
``stdexec`` provides a set of generic **sender algorithms** that can be used to chain
66-
operations together. There are also algorithms, like ``stdexec::sync_wait``, that can
67-
be used to launch the sender. The sender algorithms take care of connecting the sender
68-
to a receiver and managing the lifetime the operation state.
65+
A sender:
6966

7067
- Produces values (or errors) asynchronously.
7168

@@ -75,6 +72,14 @@ to a receiver and managing the lifetime the operation state.
7572

7673
- Is lazy (does nothing until connected and started).
7774

75+
3. Sender algorithms
76+
~~~~~~~~~~~~~~~~~~~~
77+
78+
``stdexec`` provides a set of generic **sender algorithms** that can be used to chain
79+
operations together. There are also algorithms, like ``stdexec::sync_wait``, that can
80+
be used to launch the sender. The sender algorithms take care of connecting the sender
81+
to a receiver and managing the lifetime the operation state.
82+
7883
.. code-block:: cpp
7984
8085
auto sndr = stdexec::just(42); // Sender that yields 42 immediately

0 commit comments

Comments
 (0)