Documentation for programmers
This commit is contained in:
parent
26521be98d
commit
563786312c
14
Doxyfile
14
Doxyfile
@ -58,7 +58,7 @@ PROJECT_LOGO =
|
|||||||
# entered, it will be relative to the location where doxygen was started. If
|
# entered, it will be relative to the location where doxygen was started. If
|
||||||
# left blank the current directory will be used.
|
# left blank the current directory will be used.
|
||||||
|
|
||||||
OUTPUT_DIRECTORY = doc/build/doxygen/
|
OUTPUT_DIRECTORY = doc/build/
|
||||||
|
|
||||||
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
|
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
|
||||||
# directories (in 2 levels) under the output directory of each output format and
|
# directories (in 2 levels) under the output directory of each output format and
|
||||||
@ -485,13 +485,13 @@ NUM_PROC_THREADS = 1
|
|||||||
# normally produced when WARNINGS is set to YES.
|
# normally produced when WARNINGS is set to YES.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|
||||||
EXTRACT_ALL = NO
|
EXTRACT_ALL = YES
|
||||||
|
|
||||||
# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
|
# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
|
||||||
# be included in the documentation.
|
# be included in the documentation.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|
||||||
EXTRACT_PRIVATE = NO
|
EXTRACT_PRIVATE = YES
|
||||||
|
|
||||||
# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
|
# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual
|
||||||
# methods of a class will be included in the documentation.
|
# methods of a class will be included in the documentation.
|
||||||
@ -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 = src
|
INPUT = src doc/index.md
|
||||||
|
|
||||||
# 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
|
||||||
@ -1061,7 +1061,7 @@ FILTER_SOURCE_PATTERNS =
|
|||||||
# (index.html). This can be useful if you have a project on for instance GitHub
|
# (index.html). This can be useful if you have a project on for instance GitHub
|
||||||
# and want to reuse the introduction page also for the doxygen output.
|
# and want to reuse the introduction page also for the doxygen output.
|
||||||
|
|
||||||
USE_MDFILE_AS_MAINPAGE =
|
USE_MDFILE_AS_MAINPAGE = doc/index.md
|
||||||
|
|
||||||
#---------------------------------------------------------------------------
|
#---------------------------------------------------------------------------
|
||||||
# Configuration options related to source browsing
|
# Configuration options related to source browsing
|
||||||
@ -1213,7 +1213,7 @@ IGNORE_PREFIX =
|
|||||||
# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
|
# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
|
||||||
# The default value is: YES.
|
# The default value is: YES.
|
||||||
|
|
||||||
GENERATE_HTML = NO
|
GENERATE_HTML = YES
|
||||||
|
|
||||||
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
|
# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
|
||||||
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
|
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
|
||||||
@ -1582,7 +1582,7 @@ DISABLE_INDEX = NO
|
|||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||||
|
|
||||||
GENERATE_TREEVIEW = NO
|
GENERATE_TREEVIEW = YES
|
||||||
|
|
||||||
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
|
# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
|
||||||
# doxygen will group on one line in the generated HTML documentation.
|
# doxygen will group on one line in the generated HTML documentation.
|
||||||
|
1
Makefile
1
Makefile
@ -75,7 +75,6 @@ unit-test-coverage:
|
|||||||
|
|
||||||
doc: Doxyfile src/*.cc src/*.hh
|
doc: Doxyfile src/*.cc src/*.hh
|
||||||
doxygen
|
doxygen
|
||||||
cd doc; $(MAKE) html
|
|
||||||
|
|
||||||
doc-open: doc
|
doc-open: doc
|
||||||
xdg-open ./doc/build/html/index.html
|
xdg-open ./doc/build/html/index.html
|
||||||
|
@ -50,8 +50,7 @@ $ make bin/musique
|
|||||||
├── bin Miejsce produkcji plików wykonywalnych
|
├── bin Miejsce produkcji plików wykonywalnych
|
||||||
├── coverage
|
├── coverage
|
||||||
├── doc Dokumentacja języka, interpretera
|
├── doc Dokumentacja języka, interpretera
|
||||||
│ ├── build Miejsce produkcji dokumentacji
|
│ └── build Miejsce produkcji dokumentacji
|
||||||
│ └── source Źródła dokumentacji Sphinx
|
|
||||||
├── etc/tools Dodatkowe narzędzia
|
├── etc/tools Dodatkowe narzędzia
|
||||||
├── lib Zewnętrzne zależności projektu
|
├── lib Zewnętrzne zależności projektu
|
||||||
│ ├── expected
|
│ ├── expected
|
||||||
|
55
doc/index.md
Normal file
55
doc/index.md
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
# Musique interpreter documentation
|
||||||
|
|
||||||
|
This documentation system contains information for programmers that will like to contribute or learn about Musique interpreter (and [REPL](https://en.wikipedia.org/wiki/Read%E2%80%93eval%E2%80%93print_loop)).
|
||||||
|
|
||||||
|
## Building
|
||||||
|
|
||||||
|
To build you need to have installed:
|
||||||
|
|
||||||
|
- Modern C++ compiler compatible with GNU compund expression extension and C++20 support;
|
||||||
|
- Following libraries when targetting GNU/Linux: `libreadline`, `libasound`.
|
||||||
|
|
||||||
|
Then all you have to do is run `make` in main source directory.
|
||||||
|
|
||||||
|
## Using interpreter as a library
|
||||||
|
|
||||||
|
Interpreter usage consist of three steps:
|
||||||
|
|
||||||
|
- creating chosen MIDI support for an Interpreter
|
||||||
|
- creating Interpreter instance
|
||||||
|
- parsing and evaluating source code
|
||||||
|
|
||||||
|
Parsing and evaluating may result in an error. For this case Result type offers `error()` method to get produced error and `has_value()` to check if computation was successfull.
|
||||||
|
|
||||||
|
### Simple example
|
||||||
|
|
||||||
|
We define `run` function that will do steps above, to execute provided string.
|
||||||
|
|
||||||
|
```cpp
|
||||||
|
void run(std::string_view source)
|
||||||
|
{
|
||||||
|
Interpreter interpreter;
|
||||||
|
|
||||||
|
// We don't want midi support so we ignore it
|
||||||
|
interpreter.midi_connection = nullptr;
|
||||||
|
|
||||||
|
// We set filename used in error reporting to "example"
|
||||||
|
auto ast = Parser::parse(source, "example");
|
||||||
|
|
||||||
|
// Check if file was properly parsed. If not print error message and exit
|
||||||
|
if (!ast.has_value()) {
|
||||||
|
std::cerr << ast.error() << '\n';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Evaluate program
|
||||||
|
auto result = interpreter.eval(std::move(ast));
|
||||||
|
if (result.has_value()) {
|
||||||
|
std::cout << *result << std::endl;
|
||||||
|
} else {
|
||||||
|
std::cerr << result.error() << '\n';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
When in doubt see `src/main.cc` as example on library usage.
|
Loading…
Reference in New Issue
Block a user