Skip to content

Commit f53e52a

Browse files
committed
[ci skip] Source documentation housekeeping; we're now relying on Doxygen 1.8.12.
1 parent 8673205 commit f53e52a

File tree

11 files changed

+211
-118
lines changed

11 files changed

+211
-118
lines changed

.gitignore

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -176,9 +176,6 @@ $RECYCLE.BIN/
176176
/configure
177177
/configure.ac
178178
/kde_install.sh
179-
/platform/Makefile
180-
/platform/Makefile.am
181-
/platform/Makefile.in
182179
/povray.1
183180
/povray.conf
184181
/povray.ini.in

source-doc/architecture.md

Lines changed: 60 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# Architecture Overview {#architecture}
1+
@page architecture Architecture Overview
22

33

4-
Modules {#arch_modules}
4+
Modules
55
=======
66

77
The original architectural design of POV-Ray 3.7.0 identified POV-Ray as being comprised of two main entities, called
@@ -11,8 +11,8 @@ compute raw output image data from it. The front-end would then wait for the ima
1111
write the collected data to an actual image file. The communication between the front- and back-end would use a
1212
proprietary asynchronous message-passing protocol called _POVMS_.
1313

14-
Each of these two entities resided in a separate sub-tree within the source tree, named @ref source/backend and
15-
@ref source/frontend. A third sub-tree, @ref source/base, contained code shared between back- and front-end.
14+
Each of these two entities resided in a separate sub-tree within the source tree, named `source/backend` and
15+
`source/frontend`. A third sub-tree, `source/base`, contained code shared between back- and front-end.
1616

1717
@remark
1818
The ability to run and manage multiple back-end instances is a prerequisite for distributed rendering in a networked
@@ -28,20 +28,23 @@ Since the official release of POV-Ray 3.7.0, ongoing work has been put into furt
2828
currently distinguishing the following _modules_, each of which again resides in its own separate source sub-tree:
2929

3030

31-
Back-End Module {#arch_backend}
31+
Back-End Module
3232
---------------
3333

3434
The responsibility of the _back-end_ module, residing in the @ref source/backend source sub-tree, is being trimmed down
3535
to coordinating multi-threaded execution of the _core_ and _parser_ modules, as well as interfacing them to a --
3636
possibly remote -- _front-end_ instance via the _POVMS_ protocol.
3737

38-
@todo The exact line between the back-end module and the _core_ module has not been finalized yet.
38+
@todo
39+
The exact line between the back-end module and the _core_ module has not been finalized yet.
3940

4041
The back-end module depends on the _base_, _core_, _parser_, _povms_ and _vm_ modules.
41-
@todo At present, the back-end module also depends on the _vfe_ module.
4242

43+
@todo
44+
At present, the back-end module also depends on the _vfe_ module.
4345

44-
Base Module {#arch_base}
46+
47+
Base Module
4548
-----------
4649

4750
The _base_ module, still residing in the @ref source/base source sub-tree, continues to be a loose collection of
@@ -51,10 +54,11 @@ _core_ and _front-end_.
5154
The base module is intended to be mostly unaware of multithreading, except that it makes provisions for sharing a few of
5255
its data structures -- mostly related to performance optimizations -- among multiple threads.
5356

54-
@todo At present, the base module depends on the _vfe_ module.
57+
@todo
58+
At present, the base module depends on the _vfe_ module.
5559

5660

57-
Core Module {#arch_core}
61+
Core Module
5862
-----------
5963

6064
The _core_ module, residing in the @ref source/core source sub-tree, is designated to contain the actual render engine
@@ -67,23 +71,27 @@ The core module is intended to be mostly unaware of multithreading, except that
6771
its data structures -- mostly related to performance optimizations -- among multiple core threads.
6872

6973
The core module depends on the _base_ module.
70-
@note Although the core module makes use of the _vm_ module at run-time, the interface is entirely abstract, and
71-
therefore does not constitute a formal dependency. From the perspective of the core module, the vm module could be
72-
replaced any time with an entirely different implementation.
74+
75+
@note
76+
Although the core module makes use of the _vm_ module at run-time, the interface is entirely abstract, and
77+
therefore does not constitute a formal dependency. From the perspective of the core module, the vm module could be
78+
replaced any time with an entirely different implementation.
7379

7480

75-
Front-End Module {#arch_frontend}
81+
Front-End Module
7682
----------------
7783

7884
The _front-end_ module, residing in the @ref source/frontend source sub-tree, currently retains its dual role of
7985
providing high-level control of the rendering process as well as assembling the computed image data into an actual
8086
result image file.
8187

8288
The front-end module depends on the _base_ and _povms_ modules.
83-
@todo At present, the front-end module also depends on the _vfe_ module.
8489

90+
@todo
91+
At present, the front-end module also depends on the _vfe_ module.
8592

86-
Parser Module {#arch_parser}
93+
94+
Parser Module
8795
-------------
8896

8997
The _parser_, residing in the @ref source/parser source sub-tree, is responsible for parsing a scene file, reading in
@@ -94,10 +102,12 @@ The parser module is entirely unaware of multithreading: It does not seem to mak
94102
to process the same file, nor to share data between multiple parser instances processing different files.
95103

96104
The parser module depends on the _base_, _core_, and _vm_ modules.
97-
@todo At present, the parser module also depends on the _back-end_ module.
105+
106+
@todo
107+
At present, the parser module also depends on the _back-end_ module.
98108

99109

100-
POVMS Module {#arch_povms}
110+
POVMS Module
101111
------------
102112

103113
The _POVMS_ module, residing in the @ref source/povms source sub-tree, implements the message-passing interface used
@@ -106,7 +116,7 @@ between the _front-end_ and _back-end_ modules.
106116
The povms module depends on the _base_ module.
107117

108118

109-
Virtual Machine Module {#arch_vm}
119+
Virtual Machine Module {#module_vm}
110120
----------------------
111121

112122
The _virtual machine_ module, or _VM_, residing in the @ref source/vm source sub-tree, implements a virtual machine to
@@ -115,15 +125,41 @@ execute user-defined functions, both during parsing and at render time.
115125
The vm module depends on the _base_ and _core_ modules.
116126

117127

118-
Virtual Front-End Module {#arch_vfe}
128+
Platform-Specific Code {#module_sys}
129+
----------------------
130+
131+
While the above modules are all designed to be portable, they rely on certain functionality that cannot be provided in a
132+
portable manner, and consequently require platform-specific adapter code; in addition, for some functionality optimized
133+
non-portable alternative implementations are provided. Such code resides in the separate @ref platform directory
134+
sub-tree, even when conceptually considered part of one of the above modules.
135+
136+
@note
137+
Platform-specific code should not be confused with _user interface_-specific code.
138+
139+
@todo
140+
At present, some platform-specific code also resides in the @ref vfe directory sub-tree.
141+
142+
143+
User Interface {#module_ui}
144+
--------------
145+
146+
The above modules are started and controlled by the _user interface_.
147+
148+
@note
149+
POV-Ray does not provide any portable user interface; instead, each family of platforms has its own user interface,
150+
and potentially even multiple entirely different user interfaces (such as the GUI and command-line versions of
151+
POV-Ray for Windows).
152+
153+
154+
Virtual Front-End Module
119155
------------------------
120156

121-
The _virtual front-end_ module, or _VFE_, which resides outside the main source tree, contains code shared between most
122-
platform-specific versions of POV-Ray to abstract away various details of the _POVMS_ interface exposed by the official
123-
_front-end_.
157+
The _virtual front-end_ module, or _VFE_, residing in the @ref vfe directory, contains code shared between several
158+
user interfaces for POV-Ray, designed to abstract away various details of the _POVMS_ interface exposed by the
159+
_front-end module_.
124160

125161

126-
Units {#arch_units}
162+
Units
127163
=====
128164

129165
The POV-Ray code is comprised of hundreds of code _units_ -- that is, individual `.cpp` files and their respective

source-doc/compiler.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
# Compiler Requirements {#compiler}
1+
@page compiler Compiler Requirements
22

33

4-
General Presumptions {#compiler_exot}
4+
General Presumptions
55
====================
66

77
While POV-Ray is being developed with portability high in mind, the C++ standard allows for some degrees of freedom that
@@ -22,7 +22,7 @@ following additional restrictions:
2222
computed by the modulus operator `%`) is negative (or zero) if the dividend and divisor have different sign.
2323

2424

25-
POVMS Additional Restrictions {#compiler_povms}
25+
POVMS Additional Restrictions
2626
=============================
2727

2828
To support network rendering (a feature not yet implemented but planned) in a heterogenous network, the POVMS interface

source-doc/devutils.md

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,33 @@
1-
# Development Utilities {#devutils}
1+
@page devutils Development Utilities
2+
23

34
Aside from the necessary material to re-build POV-Ray from scratch, the GitHub repository (and source package) also
45
includes a few utilities that may make life a little easier for developers. These usually reside in the platform or
56
build tool specific sections of the directory tree.
67

7-
@section vs10 Visual Studio 2010 utilities
8+
9+
Git Utilities
10+
=============
11+
12+
- `tools/git/hooks/pre-commit`: Copy this to your local repository's `.git/hooks` directory for some automatic
13+
housekeeping at each commit. Most notably, this will auto-increment the version number if you commit any changes to
14+
the source code. It will also clean up whitespace and do a sanity check of the file header comments.
15+
16+
- `tools/git/revision.sh`: This shell script will re-generate `revision.txt` from the Git history.
17+
@note
18+
The newly generated `revision.txt` is _not_ intended to be committed as-is, but rather merged with the
19+
previous version manually.
20+
21+
22+
Visual Studio 2010 Utilities
23+
============================
824

925
- `windows/vs10/autoexp.dat`: For easier viewing of common POV-Ray data structures, merge the snippets in this file
1026
into `C:\Program Files\Microsoft Visual Studio 10.0\Common7\Packages\Debugger\autoexp.dat` (or wherever you happen
1127
to have installed Visual Studio).
1228

1329
- `windows/vs10/StepOver.reg`: Import this to your registry to step over some library code during debugging.
1430
Currently, this steps over any code in std::tr1::shared_ptr and std::vector.
15-
@warning If you are already using the step over feature, check that the registry keys in `StepOver.reg` don't
16-
conflict with any already in use.
31+
@warning
32+
If you are already using the step over feature, check that the registry keys in `StepOver.reg` don't
33+
conflict with any already in use.

source-doc/include_hierarchy.md

Lines changed: 34 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,57 +1,56 @@
1-
# Include Hierarchy {#include_hierarchy}
2-
3-
Within the POV-Ray source code, the following rules apply for the include hierarchy of header files:
1+
@page include_hierarchy Include Hierarchy
42

53

6-
@section self Self-Containedness
7-
8-
Header files should be self-contained, i.e. include all files they depend on themselves.
4+
Within the POV-Ray source code, the following rules apply for the include hierarchy of header files:
95

106

11-
@section small Small Include Footprint
7+
General Rules
8+
=============
129

13-
Each file's include footprint should be kept small to simplify include hierarchy:
10+
- **Self-Containedness**: Header files should be self-contained, i.e. include all files they depend on themselves.
1411

15-
- Forward type declarations shall be used wherever this avoids having to include a header file.
12+
- **Small Include Footprint**: Each file's include footprint should be kept small to simplify the include hierarchy:
13+
- Forward type declarations shall be used wherever this avoids having to include a header file.
14+
- Files already included in a unit header file shall _not_ be included again in the respective `.cpp` file (e.g. a
15+
file included in @ref core/colourspace.h shall not be included in @ref core/colourspace.cpp).
1616

17-
- Files already included in a unit header file shall _not_ be included again in the respective `.cpp` file (e.g. a
18-
file included in @ref core/colourspace.h shall not be included in @ref core/colourspace.cpp).
1917

18+
Pulling In Special Headers
19+
==========================
2020

21-
@section spec Pulling In Special Headers
2221

23-
@subsection conf Configuration Headers
22+
Configuration Headers
23+
---------------------
2424

25-
The files @ref base/configbase.h, @ref core/configcore.h, @ref parser/configparser.h, @ref backend/configbackend.h and
26-
@ref frontend/configfrontend.h serve as module configuration headers, and the only POV-Ray configuration headers to be
27-
pulled in directly by code residing in the respective directory sub-tree; they automatically take care of pulling in any
28-
other relevant configuration headers, including platform-specific headers.
25+
The files @ref backend/configbackend.h, @ref base/configbase.h, @ref core/configcore.h, @ref frontend/configfrontend.h,
26+
@ref parser/configparser.h and @ref vm/configvm.h serve as module configuration headers, and the only POV-Ray
27+
configuration headers to be pulled in directly by code comprising part of the respective module; they automatically
28+
take care of pulling in any other relevant configuration headers, including platform-specific headers.
2929

30-
@note While the povms module has a configuration header following the same naming convention, the rules in this
31-
section do _not_ apply accordingly.
30+
@note
31+
While the povms module has a configuration header following the same naming convention, the rules in this
32+
section do _not_ apply accordingly.
3233

33-
Each and every file within the @ref base/, @ref core/, @ref parser/, @ref backend/ or @ref frontend/ directory sub-trees
34-
must effectively pull in the respective module configuration header as the very first header file. This is achieved by
35-
the following requirements:
34+
Each and every file comprising part of the _backend_, _base_, _core_, _frontend_, _parser_ or _vm_ module must
35+
effectively pull in the respective module configuration header as the very first header file. This is achieved by the
36+
following requirements:
3637

37-
- Each non-header file residing in the @ref base/, @ref core/, @ref parser/, @ref backend/ or @ref frontend/ directory
38-
sub-tree shall include its respective unit header file (the header file with the same base name but `.h` or `.hpp`
39-
extension) as the very first header file.
38+
- Each non-header file comprising part of one of the aforementioned modules shall include its respective unit header
39+
file (the header file with the same base name but `.h` or `.hpp` extension) as the very first header file.
4040

41-
- Each header file residing in the @ref base/, @ref core/, @ref parser/, @ref backend/ or @ref frontend/ directory
42-
sub-tree shall include the respective module configuration header as the very first header file.
41+
- Each header file comprising part of one of the aforementioned modules shall include the respective module
42+
configuration header as the very first header file.
4343

4444
This allows to also apply the following rule without any drawbacks:
4545

46-
- Each non-header file residing in the @ref base/, @ref core/, @ref parser/, @ref backend/ or @ref frontend/ directory
47-
sub-tree, respectively, shall _not_ include the
48-
respective module configuration header.
46+
- Each non-header file comprising part of one of the aforementioned modules shall _not_ include the respective module
47+
configuration header.
4948

50-
The reason for this rule is to keep graphical representations of the include hierarchy simple.
49+
The intention of the latter rule is to keep graphical representations of the include hierarchy simple.
5150

5251

53-
@subsection debg Last Header To Include
52+
Last Header To Include
53+
----------------------
5454

55-
Each non-header source file residing in the @ref base/, @ref core/, @ref parser/, @ref backend/ or @ref frontend/
56-
directory sub-tree, respectively, or including any of the headers therein, shall include @ref base/povdebug.h as the
57-
very last include file.
55+
Each non-header source file including any header files from the _backend_, _base_, _core_, _frontend_, _parser_ or _vm_
56+
modules shall include @ref base/povdebug.h as the _very last_ include file.

0 commit comments

Comments
 (0)