Doxygen & Sphinx documentation tooling
This is far from real documentation both in structure and contents - it's only a start, from which we can expand.
This commit is contained in:
parent
f90ea0e5d6
commit
9fd70386c5
3
.gitignore
vendored
3
.gitignore
vendored
@ -2,3 +2,6 @@
|
|||||||
bin/*
|
bin/*
|
||||||
compile_commands.json
|
compile_commands.json
|
||||||
coverage
|
coverage
|
||||||
|
doc/musique
|
||||||
|
doc/build
|
||||||
|
doc/source/api
|
||||||
|
6
Doxyfile
6
Doxyfile
@ -864,7 +864,7 @@ WARN_LOGFILE =
|
|||||||
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
|
# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
|
||||||
# Note: If this tag is empty the current directory is searched.
|
# Note: If this tag is empty the current directory is searched.
|
||||||
|
|
||||||
INPUT =
|
INPUT = src
|
||||||
|
|
||||||
# This tag can be used to specify the character encoding of the source files
|
# This tag can be used to specify the character encoding of the source files
|
||||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
||||||
@ -943,7 +943,7 @@ FILE_PATTERNS = *.c \
|
|||||||
# be searched for input files as well.
|
# be searched for input files as well.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|
||||||
RECURSIVE = NO
|
RECURSIVE = YES
|
||||||
|
|
||||||
# The EXCLUDE tag can be used to specify files and/or directories that should be
|
# The EXCLUDE tag can be used to specify files and/or directories that should be
|
||||||
# excluded from the INPUT source files. This way you can easily exclude a
|
# excluded from the INPUT source files. This way you can easily exclude a
|
||||||
@ -952,7 +952,7 @@ RECURSIVE = NO
|
|||||||
# Note that relative paths are relative to the directory from which doxygen is
|
# Note that relative paths are relative to the directory from which doxygen is
|
||||||
# run.
|
# run.
|
||||||
|
|
||||||
EXCLUDE =
|
EXCLUDE = tests
|
||||||
|
|
||||||
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
|
# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
|
||||||
# directories that are symbolic links (a Unix file system feature) are excluded
|
# directories that are symbolic links (a Unix file system feature) are excluded
|
||||||
|
7
Makefile
7
Makefile
@ -21,6 +21,7 @@ bin/musique: $(Obj) bin/main.o src/*.hh
|
|||||||
unit-tests: bin/unit-tests
|
unit-tests: bin/unit-tests
|
||||||
./$<
|
./$<
|
||||||
|
|
||||||
|
.PHONY: unit-test-coverage
|
||||||
unit-test-coverage:
|
unit-test-coverage:
|
||||||
@which gcov >/dev/null || ( echo "[ERROR] gcov is required for test coverage report"; false )
|
@which gcov >/dev/null || ( echo "[ERROR] gcov is required for test coverage report"; false )
|
||||||
@which gcovr >/dev/null || ( echo "[ERROR] gcovr is required for test coverage report"; false )
|
@which gcovr >/dev/null || ( echo "[ERROR] gcovr is required for test coverage report"; false )
|
||||||
@ -30,6 +31,12 @@ unit-test-coverage:
|
|||||||
mkdir coverage
|
mkdir coverage
|
||||||
gcovr -e '.*\.hpp' --html --html-details -o coverage/index.html
|
gcovr -e '.*\.hpp' --html --html-details -o coverage/index.html
|
||||||
rm -rf bin
|
rm -rf bin
|
||||||
|
xdg-open coverage/index.html
|
||||||
|
|
||||||
|
.PHONY: doc
|
||||||
|
doc: Doxyfile src/*.cc src/*.hh
|
||||||
|
doxygen
|
||||||
|
cd doc; $(MAKE) html
|
||||||
|
|
||||||
bin/unit-tests: src/tests/*.cc $(Obj)
|
bin/unit-tests: src/tests/*.cc $(Obj)
|
||||||
g++ $(CXXFLAGS) $(CPPFLAGS) -o $@ $^
|
g++ $(CXXFLAGS) $(CPPFLAGS) -o $@ $^
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
- `make` - Buduje interpreter `bin/musique`
|
- `make` - Buduje interpreter `bin/musique`
|
||||||
- `make clean` - Usuwa reprodukowalne elementy projektu (automatycznie stworzone pliki binarne czy raporty)
|
- `make clean` - Usuwa reprodukowalne elementy projektu (automatycznie stworzone pliki binarne czy raporty)
|
||||||
- `make unit-tests-coverage` - Uruchamia raport pokrycia kodu przez testy jednostkowe
|
- `make unit-test-coverage` - Uruchamia raport pokrycia kodu przez testy jednostkowe
|
||||||
- `make unit-tests` - Uruchamia testy jednostkowe interpretera
|
- `make unit-tests` - Uruchamia testy jednostkowe interpretera
|
||||||
|
|
||||||
## Budowa projektu
|
## Budowa projektu
|
||||||
|
20
doc/Makefile
Normal file
20
doc/Makefile
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
# Minimal makefile for Sphinx documentation
|
||||||
|
#
|
||||||
|
|
||||||
|
# You can set these variables from the command line, and also
|
||||||
|
# from the environment for the first two.
|
||||||
|
SPHINXOPTS ?=
|
||||||
|
SPHINXBUILD ?= sphinx-build
|
||||||
|
SOURCEDIR = source
|
||||||
|
BUILDDIR = build
|
||||||
|
|
||||||
|
# Put it first so that "make" without argument is like "make help".
|
||||||
|
help:
|
||||||
|
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
||||||
|
|
||||||
|
.PHONY: help Makefile
|
||||||
|
|
||||||
|
# Catch-all target: route all unknown targets to Sphinx using the new
|
||||||
|
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
||||||
|
%: Makefile
|
||||||
|
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
55
doc/source/conf.py
Normal file
55
doc/source/conf.py
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
# This file only contains a selection of the most common options. For a full
|
||||||
|
# list see the documentation:
|
||||||
|
# https://www.sphinx-doc.org/en/master/usage/configuration.html
|
||||||
|
|
||||||
|
# -- Project information -----------------------------------------------------
|
||||||
|
|
||||||
|
project = 'Musique'
|
||||||
|
copyright = '2022, Robert Bendun'
|
||||||
|
author = 'Robert Bendun'
|
||||||
|
|
||||||
|
# -- General configuration ---------------------------------------------------
|
||||||
|
|
||||||
|
extensions = [
|
||||||
|
"sphinx_rtd_theme",
|
||||||
|
"breathe",
|
||||||
|
"recommonmark",
|
||||||
|
"exhale"
|
||||||
|
]
|
||||||
|
|
||||||
|
breathe_projects = {
|
||||||
|
"musique": "../build/doxygen/xml"
|
||||||
|
}
|
||||||
|
|
||||||
|
breathe_default_project = "musique"
|
||||||
|
|
||||||
|
exhale_args = {
|
||||||
|
"containmentFolder": "./api",
|
||||||
|
"rootFileName": "musique-root.rst",
|
||||||
|
"createTreeView": True,
|
||||||
|
"doxygenStripFromPath": ".."
|
||||||
|
}
|
||||||
|
|
||||||
|
primary_domain = "cpp"
|
||||||
|
highlight_language = "cpp"
|
||||||
|
|
||||||
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
|
templates_path = ['_templates']
|
||||||
|
|
||||||
|
# List of patterns, relative to source directory, that match files and
|
||||||
|
# directories to ignore when looking for source files.
|
||||||
|
# This pattern also affects html_static_path and html_extra_path.
|
||||||
|
exclude_patterns = []
|
||||||
|
|
||||||
|
|
||||||
|
# -- Options for HTML output -------------------------------------------------
|
||||||
|
|
||||||
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||||
|
# a list of builtin themes.
|
||||||
|
#
|
||||||
|
html_theme = 'sphinx_rtd_theme'
|
||||||
|
|
||||||
|
# Add any paths that contain custom static files (such as style sheets) here,
|
||||||
|
# relative to this directory. They are copied after the builtin static files,
|
||||||
|
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||||
|
html_static_path = ['_static']
|
22
doc/source/index.rst
Normal file
22
doc/source/index.rst
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
.. Musique documentation master file, created by
|
||||||
|
sphinx-quickstart on Sun May 8 17:37:28 2022.
|
||||||
|
You can adapt this file completely to your liking, but it should at least
|
||||||
|
contain the root `toctree` directive.
|
||||||
|
|
||||||
|
Welcome to Musique's documentation!
|
||||||
|
===================================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
:caption: Contents:
|
||||||
|
|
||||||
|
api/musique-root
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Indices and tables
|
||||||
|
==================
|
||||||
|
|
||||||
|
* :ref:`genindex`
|
||||||
|
* :ref:`modindex`
|
||||||
|
* :ref:`search`
|
@ -1,6 +1,14 @@
|
|||||||
#include <musique.hh>
|
#include <musique.hh>
|
||||||
|
|
||||||
Location Location::advance(u32 rune)
|
Location Location::at(usize line, usize column)
|
||||||
|
{
|
||||||
|
Location loc;
|
||||||
|
loc.line = line;
|
||||||
|
loc.column = column;
|
||||||
|
return loc;
|
||||||
|
}
|
||||||
|
|
||||||
|
Location& Location::advance(u32 rune)
|
||||||
{
|
{
|
||||||
switch (rune) {
|
switch (rune) {
|
||||||
case '\n':
|
case '\n':
|
||||||
|
@ -46,22 +46,27 @@ namespace errors
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// \brief Location describes code position in `file line column` format.
|
||||||
|
/// It's used both to represent position in source files provided
|
||||||
|
// to interpreter and internal interpreter usage.
|
||||||
struct Location
|
struct Location
|
||||||
{
|
{
|
||||||
std::string_view filename = "<unnamed>";
|
std::string_view filename = "<unnamed>"; ///< File that location is pointing to
|
||||||
usize line = 1, column = 1;
|
usize line = 1; ///< Line number (1 based) that location is pointing to
|
||||||
|
usize column = 1; ///< Column number (1 based) that location is pointing to
|
||||||
|
|
||||||
Location advance(u32 rune);
|
/// Advances line and column numbers based on provided rune
|
||||||
|
///
|
||||||
|
/// If rune is newline, then column is reset to 1, and line number is incremented.
|
||||||
|
/// Otherwise column number is incremented.
|
||||||
|
///
|
||||||
|
/// @param rune Rune from which column and line numbers advancements are made.
|
||||||
|
Location& advance(u32 rune);
|
||||||
|
|
||||||
bool operator==(Location const& rhs) const = default;
|
bool operator==(Location const& rhs) const = default;
|
||||||
|
|
||||||
static Location at(usize line, usize column)
|
//! Creates location at default filename with specified line and column number
|
||||||
{
|
static Location at(usize line, usize column);
|
||||||
Location loc;
|
|
||||||
loc.line = line;
|
|
||||||
loc.column = column;
|
|
||||||
return loc;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Used to describe location of function call in interpreter (internal use only)
|
// Used to describe location of function call in interpreter (internal use only)
|
||||||
#if defined(__cpp_lib_source_location)
|
#if defined(__cpp_lib_source_location)
|
||||||
@ -70,6 +75,13 @@ struct Location
|
|||||||
static Location caller(char const* file = __builtin_FILE(), usize line = __builtin_LINE());
|
static Location caller(char const* file = __builtin_FILE(), usize line = __builtin_LINE());
|
||||||
#else
|
#else
|
||||||
#error Cannot implement Location::caller function
|
#error Cannot implement Location::caller function
|
||||||
|
/// Returns location of call in interpreter source code.
|
||||||
|
///
|
||||||
|
/// Example of reporting where `foo()` was beeing called:
|
||||||
|
/// @code
|
||||||
|
/// void foo(Location loc = Location::caller()) { std::cout << loc << '\n'; }
|
||||||
|
/// @endcode
|
||||||
|
static Location caller();
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user