All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Support for noninvasive mode. Instantiations are inserted into extra source files with the naming scheme .gen.cpp.
Those file can be excluded from version control and no generated instantiations can be committed unintentionally.
Also the deletion of inserted instantiations become trivial and cannot mess up existing source code.
The noninvasive mode is the recommended mode and also the default mode.
The old mode can be used by adding the command line option
--invasive
. - Remove thirdparty dependency to termcolor and indicators.
- Use libfmt and spdlog for console printing and logging.
- Automatic sort of includes by clang-format.
- Maintenance and clean-up.
- Support for
template template
parameters. This requires most recent version 14.0.0git of LLVM/clang. - Implemented disk cache for ASTs. When an AST for a source file is needed, the tool checks whether an up-to-date
.ast
file is available. If so it deserialize the.ast
file if not it (re)parses the AST from the source file and serializes it afterwards as a.ast
file. If the.ast
file is up-to-date is checked by comparing the time-stamps of all dependencies (also header files) with the time-stamp of the.ast
file. This leeds to much less RAM usage for large projects but initial runs take slightly longer. However, reruns are also faster because lots of unrelated ASTs do not have to be parsed. - Renamed commandline option
-i
to--ignore
but kept-i
as an alias for--ignore
- Added build and install instructions in README
- Bugfix: Some needed instantiations got deleted for the
toDoList
because they was implicitly instantiated which nevertheless led to linker errors. Now needed instantiations are only deleted if they are already explicitly instantiated. - Bugfix:
clean
option has messed up the files because of a known bug inclang::Rewriter
(See this FIXME). Now, blank lines are not deleted anymore. To clean up the blank lines, one should useclang-format
.
- Documentation added.
- New command line option
--clean
to remove all inserted explicit instantiations. - New command line option
-i
for specifiying namespaces that should be ignored. Several namespaces are specified by several-i
. - Improved comparison of dependent types.
Initial release with basic functionality.