Merge pull request #177 from pkasting/master

Fix clang -Wdeprecated-copy.
diff --git a/src/Doxyfile b/Doxyfile
similarity index 92%
rename from src/Doxyfile
rename to Doxyfile
index b880bb2..0d50ff3 100644
--- a/src/Doxyfile
+++ b/Doxyfile
@@ -1,4 +1,4 @@
-# Doxyfile 1.8.16

+# Doxyfile 1.9.1

 

 # This file describes the settings to be used by the documentation system

 # doxygen (www.doxygen.org) for a project.

@@ -58,7 +58,7 @@
 # entered, it will be relative to the location where doxygen was started. If

 # left blank the current directory will be used.

 

-OUTPUT_DIRECTORY       = ../docs

+OUTPUT_DIRECTORY       = docs

 

 # 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

@@ -227,6 +227,14 @@
 

 MULTILINE_CPP_IS_BRIEF = NO

 

+# By default Python docstrings are displayed as preformatted text and doxygen's

+# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the

+# doxygen's special commands can be used and the contents of the docstring

+# documentation blocks is shown as doxygen documentation.

+# The default value is: YES.

+

+PYTHON_DOCSTRING       = YES

+

 # If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the

 # documentation from any documented member that it re-implements.

 # The default value is: YES.

@@ -263,12 +271,6 @@
 

 ALIASES                =

 

-# This tag can be used to specify a number of word-keyword mappings (TCL only).

-# A mapping has the form "name=value". For example adding "class=itcl::class"

-# will allow you to use the command class in the itcl::class meaning.

-

-TCL_SUBST              =

-

 # Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources

 # only. Doxygen will then generate output that is more tailored for C. For

 # instance, some of the names that are used will be different. The list of all

@@ -309,19 +311,22 @@
 # parses. With this tag you can assign which parser to use for a given

 # extension. Doxygen has a built-in mapping, but you can override or extend it

 # using this tag. The format is ext=language, where ext is a file extension, and

-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,

-# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice,

+# language is one of the parsers supported by doxygen: IDL, Java, JavaScript,

+# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL,

 # Fortran (fixed format Fortran: FortranFixed, free formatted Fortran:

 # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser

 # tries to guess whether the code is fixed or free formatted code, this is the

-# default for Fortran type files), VHDL, tcl. For instance to make doxygen treat

-# .inc files as Fortran files (default is PHP), and .f files as C (default is

-# Fortran), use: inc=Fortran f=C.

+# default for Fortran type files). For instance to make doxygen treat .inc files

+# as Fortran files (default is PHP), and .f files as C (default is Fortran),

+# use: inc=Fortran f=C.

 #

 # Note: For files without extension you can use no_extension as a placeholder.

 #

 # Note that for custom extensions you also need to set FILE_PATTERNS otherwise

-# the files are not read by doxygen.

+# the files are not read by doxygen. When specifying no_extension you should add

+# * to the FILE_PATTERNS.

+#

+# Note see also the list of default file extension mappings.

 

 EXTENSION_MAPPING      =

 

@@ -455,6 +460,19 @@
 

 LOOKUP_CACHE_SIZE      = 0

 

+# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use

+# during processing. When set to 0 doxygen will based this on the number of

+# cores available in the system. You can set it explicitly to a value larger

+# than 0 to get more control over the balance between CPU load and processing

+# speed. At this moment only the input processing can be done using multiple

+# threads. Since this is still an experimental feature the default is set to 1,

+# which efficively disables parallel processing. Please report any issues you

+# encounter. Generating dot graphs in parallel is controlled by the

+# DOT_NUM_THREADS setting.

+# Minimum value: 0, maximum value: 32, default value: 1.

+

+NUM_PROC_THREADS       = 1

+

 #---------------------------------------------------------------------------

 # Build related configuration options

 #---------------------------------------------------------------------------

@@ -518,6 +536,13 @@
 

 EXTRACT_ANON_NSPACES   = NO

 

+# If this flag is set to YES, the name of an unnamed parameter in a declaration

+# will be determined by the corresponding definition. By default unnamed

+# parameters remain unnamed in the output.

+# The default value is: YES.

+

+RESOLVE_UNNAMED_PARAMS = YES

+

 # If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all

 # undocumented members inside documented classes or files. If set to NO these

 # members will be included in the various overviews, but no documentation

@@ -535,8 +560,8 @@
 HIDE_UNDOC_CLASSES     = NO

 

 # If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend

-# (class|struct|union) declarations. If set to NO, these declarations will be

-# included in the documentation.

+# declarations. If set to NO, these declarations will be included in the

+# documentation.

 # The default value is: NO.

 

 HIDE_FRIEND_COMPOUNDS  = NO

@@ -555,11 +580,18 @@
 

 INTERNAL_DOCS          = NO

 

-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file

-# names in lower-case letters. If set to YES, upper-case letters are also

-# allowed. This is useful if you have classes or files whose names only differ

-# in case and if your file system supports case sensitive file names. Windows

-# (including Cygwin) ands Mac users are advised to set this option to NO.

+# With the correct setting of option CASE_SENSE_NAMES doxygen will better be

+# able to match the capabilities of the underlying filesystem. In case the

+# filesystem is case sensitive (i.e. it supports files in the same directory

+# whose names only differ in casing), the option must be set to YES to properly

+# deal with such files in case they appear in the input. For filesystems that

+# are not case sensitive the option should be be set to NO to properly deal with

+# output files written for symbols that only differ in casing, such as for two

+# classes, one named CLASS and the other named Class, and to also support

+# references to files without having to specify the exact matching casing. On

+# Windows (including Cygwin) and MacOS, users should typically set this option

+# to NO, whereas on Linux or other Unix flavors it should typically be set to

+# YES.

 # The default value is: system dependent.

 

 CASE_SENSE_NAMES       = NO

@@ -798,7 +830,10 @@
 WARN_NO_PARAMDOC       = NO

 

 # If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when

-# a warning is encountered.

+# a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS

+# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but

+# at the end of the doxygen process doxygen will return with a non-zero status.

+# Possible values are: NO, YES and FAIL_ON_WARNINGS.

 # The default value is: NO.

 

 WARN_AS_ERROR          = NO

@@ -829,13 +864,13 @@
 # spaces. See also FILE_PATTERNS and EXTENSION_MAPPING

 # Note: If this tag is empty the current directory is searched.

 

-INPUT                  = vk_mem_alloc.h

+INPUT                  = include/vk_mem_alloc.h

 

 # 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

 # libiconv (or the iconv built into libc) for the transcoding. See the libiconv

-# documentation (see: https://www.gnu.org/software/libiconv/) for the list of

-# possible encodings.

+# documentation (see:

+# https://www.gnu.org/software/libiconv/) for the list of possible encodings.

 # The default value is: UTF-8.

 

 INPUT_ENCODING         = UTF-8

@@ -848,11 +883,15 @@
 # need to set EXTENSION_MAPPING for the extension otherwise the files are not

 # read by doxygen.

 #

+# Note the list of default checked file patterns might differ from the list of

+# default file extension mappings.

+#

 # If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,

 # *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,

 # *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,

-# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,

-# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice.

+# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment),

+# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl,

+# *.ucf, *.qsf and *.ice.

 

 FILE_PATTERNS          = *.c \

                          *.cc \

@@ -1110,16 +1149,22 @@
 VERBATIM_HEADERS       = YES

 

 # If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the

-# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the

-# cost of reduced performance. This can be particularly helpful with template

-# rich C++ code for which doxygen's built-in parser lacks the necessary type

-# information.

+# clang parser (see:

+# http://clang.llvm.org/) for more accurate parsing at the cost of reduced

+# performance. This can be particularly helpful with template rich C++ code for

+# which doxygen's built-in parser lacks the necessary type information.

 # Note: The availability of this option depends on whether or not doxygen was

 # generated with the -Duse_libclang=ON option for CMake.

 # The default value is: NO.

 

 CLANG_ASSISTED_PARSING = NO

 

+# If clang assisted parsing is enabled and the CLANG_ADD_INC_PATHS tag is set to

+# YES then doxygen will add the directory of each input to the include path.

+# The default value is: YES.

+

+CLANG_ADD_INC_PATHS    = YES

+

 # If clang assisted parsing is enabled you can provide the compiler with command

 # line options that you would normally use when invoking the compiler. Note that

 # the include paths will already be set by doxygen for the files and directories

@@ -1129,10 +1174,13 @@
 CLANG_OPTIONS          =

 

 # If clang assisted parsing is enabled you can provide the clang parser with the

-# path to the compilation database (see:

-# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files

-# were built. This is equivalent to specifying the "-p" option to a clang tool,

-# such as clang-check. These options will then be passed to the parser.

+# path to the directory containing a file called compile_commands.json. This

+# file is the compilation database (see:

+# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) containing the

+# options used when the source files were built. This is equivalent to

+# specifying the -p option to a clang tool, such as clang-check. These options

+# will then be passed to the parser. Any options specified with CLANG_OPTIONS

+# will be added as well.

 # Note: The availability of this option depends on whether or not doxygen was

 # generated with the -Duse_libclang=ON option for CMake.

 

@@ -1149,13 +1197,6 @@
 

 ALPHABETICAL_INDEX     = YES

 

-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in

-# which the alphabetical index list will be split.

-# Minimum value: 1, maximum value: 20, default value: 5.

-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.

-

-COLS_IN_ALPHA_INDEX    = 5

-

 # In case all classes in a project start with a common prefix, all classes will

 # be put under the same header in the alphabetical index. The IGNORE_PREFIX tag

 # can be used to specify a prefix (or a list of prefixes) that should be ignored

@@ -1294,9 +1335,9 @@
 

 # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML

 # documentation will contain a main index with vertical navigation menus that

-# are dynamically created via Javascript. If disabled, the navigation index will

+# are dynamically created via JavaScript. If disabled, the navigation index will

 # consists of multiple levels of tabs that are statically embedded in every HTML

-# page. Disable this option to support browsers that do not have Javascript,

+# page. Disable this option to support browsers that do not have JavaScript,

 # like the Qt help browser.

 # The default value is: YES.

 # This tag requires that the tag GENERATE_HTML is set to YES.

@@ -1326,10 +1367,11 @@
 

 # If the GENERATE_DOCSET tag is set to YES, additional index files will be

 # generated that can be used as input for Apple's Xcode 3 integrated development

-# environment (see: https://developer.apple.com/xcode/), introduced with OSX

-# 10.5 (Leopard). To create a documentation set, doxygen will generate a

-# Makefile in the HTML output directory. Running make will produce the docset in

-# that directory and running make install will install the docset in

+# environment (see:

+# https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To

+# create a documentation set, doxygen will generate a Makefile in the HTML

+# output directory. Running make will produce the docset in that directory and

+# running make install will install the docset in

 # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at

 # startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy

 # genXcode/_index.html for more information.

@@ -1371,8 +1413,8 @@
 # If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three

 # additional HTML index files: index.hhp, index.hhc, and index.hhk. The

 # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop

-# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on

-# Windows.

+# (see:

+# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows.

 #

 # The HTML Help Workshop contains a compiler that can convert all HTML output

 # generated by doxygen into a single compiled HTML file (.chm). Compiled HTML

@@ -1402,7 +1444,7 @@
 HHC_LOCATION           =

 

 # The GENERATE_CHI flag controls if a separate .chi index file is generated

-# (YES) or that it should be included in the master .chm file (NO).

+# (YES) or that it should be included in the main .chm file (NO).

 # The default value is: NO.

 # This tag requires that the tag GENERATE_HTMLHELP is set to YES.

 

@@ -1447,7 +1489,8 @@
 

 # The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help

 # Project output. For more information please see Qt Help Project / Namespace

-# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).

+# (see:

+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).

 # The default value is: org.doxygen.Project.

 # This tag requires that the tag GENERATE_QHP is set to YES.

 

@@ -1455,8 +1498,8 @@
 

 # The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt

 # Help Project output. For more information please see Qt Help Project / Virtual

-# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-

-# folders).

+# Folders (see:

+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-folders).

 # The default value is: doc.

 # This tag requires that the tag GENERATE_QHP is set to YES.

 

@@ -1464,16 +1507,16 @@
 

 # If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom

 # filter to add. For more information please see Qt Help Project / Custom

-# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-

-# filters).

+# Filters (see:

+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).

 # This tag requires that the tag GENERATE_QHP is set to YES.

 

 QHP_CUST_FILTER_NAME   =

 

 # The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the

 # custom filter to add. For more information please see Qt Help Project / Custom

-# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-

-# filters).

+# Filters (see:

+# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-filters).

 # This tag requires that the tag GENERATE_QHP is set to YES.

 

 QHP_CUST_FILTER_ATTRS  =

@@ -1485,9 +1528,9 @@
 

 QHP_SECT_FILTER_ATTRS  =

 

-# The QHG_LOCATION tag can be used to specify the location of Qt's

-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the

-# generated .qhp file.

+# The QHG_LOCATION tag can be used to specify the location (absolute path

+# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to

+# run qhelpgenerator on the generated .qhp file.

 # This tag requires that the tag GENERATE_QHP is set to YES.

 

 QHG_LOCATION           =

@@ -1564,6 +1607,17 @@
 

 EXT_LINKS_IN_WINDOW    = NO

 

+# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg

+# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see

+# https://inkscape.org) to generate formulas as SVG images instead of PNGs for

+# the HTML output. These images will generally look nicer at scaled resolutions.

+# Possible values are: png (the default) and svg (looks nicer but requires the

+# pdf2svg or inkscape tool).

+# The default value is: png.

+# This tag requires that the tag GENERATE_HTML is set to YES.

+

+HTML_FORMULA_FORMAT    = png

+

 # Use this tag to change the font size of LaTeX formulas included as images in

 # the HTML documentation. When you change the font size after a successful

 # doxygen run you need to manually remove any form_*.png images from the HTML

@@ -1584,8 +1638,14 @@
 

 FORMULA_TRANSPARENT    = YES

 

+# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands

+# to create new LaTeX commands to be used in formulas as building blocks. See

+# the section "Including formulas" for details.

+

+FORMULA_MACROFILE      =

+

 # Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see

-# https://www.mathjax.org) which uses client side Javascript for the rendering

+# https://www.mathjax.org) which uses client side JavaScript for the rendering

 # instead of using pre-rendered bitmaps. Use this if you do not have LaTeX

 # installed or if you want to formulas look prettier in the HTML output. When

 # enabled you may also need to install MathJax separately and configure the path

@@ -1597,7 +1657,7 @@
 

 # When MathJax is enabled you can set the default output format to be used for

 # the MathJax output. See the MathJax site (see:

-# http://docs.mathjax.org/en/latest/output.html) for more details.

+# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details.

 # Possible values are: HTML-CSS (which is slower, but has the best

 # compatibility), NativeMML (i.e. MathML) and SVG.

 # The default value is: HTML-CSS.

@@ -1613,7 +1673,7 @@
 # Content Delivery Network so you can quickly see the result without installing

 # MathJax. However, it is strongly recommended to install a local copy of

 # MathJax from https://www.mathjax.org before deployment.

-# The default value is: https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/.

+# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2.

 # This tag requires that the tag USE_MATHJAX is set to YES.

 

 MATHJAX_RELPATH        = http://cdn.mathjax.org/mathjax/latest

@@ -1627,7 +1687,8 @@
 

 # The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces

 # of code that will be used on startup of the MathJax code. See the MathJax site

-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an

+# (see:

+# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an

 # example see the documentation.

 # This tag requires that the tag USE_MATHJAX is set to YES.

 

@@ -1655,7 +1716,7 @@
 SEARCHENGINE           = YES

 

 # When the SERVER_BASED_SEARCH tag is enabled the search engine will be

-# implemented using a web server instead of a web client using Javascript. There

+# implemented using a web server instead of a web client using JavaScript. There

 # are two flavors of web server based searching depending on the EXTERNAL_SEARCH

 # setting. When disabled, doxygen will generate a PHP script for searching and

 # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing

@@ -1674,7 +1735,8 @@
 #

 # Doxygen ships with an example indexer (doxyindexer) and search engine

 # (doxysearch.cgi) which are based on the open source search engine library

-# Xapian (see: https://xapian.org/).

+# Xapian (see:

+# https://xapian.org/).

 #

 # See the section "External Indexing and Searching" for details.

 # The default value is: NO.

@@ -1687,8 +1749,9 @@
 #

 # Doxygen ships with an example indexer (doxyindexer) and search engine

 # (doxysearch.cgi) which are based on the open source search engine library

-# Xapian (see: https://xapian.org/). See the section "External Indexing and

-# Searching" for details.

+# Xapian (see:

+# https://xapian.org/). See the section "External Indexing and Searching" for

+# details.

 # This tag requires that the tag SEARCHENGINE is set to YES.

 

 SEARCHENGINE_URL       =

@@ -1852,9 +1915,11 @@
 

 PDF_HYPERLINKS         = YES

 

-# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate

-# the PDF file directly from the LaTeX files. Set this option to YES, to get a

-# higher quality PDF documentation.

+# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as

+# specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX

+# files. Set this option to YES, to get a higher quality PDF documentation.

+#

+# See also section LATEX_CMD_NAME for selecting the engine.

 # The default value is: YES.

 # This tag requires that the tag GENERATE_LATEX is set to YES.

 

@@ -2188,7 +2253,13 @@
 # recursively expanded use the := operator instead of the = operator.

 # This tag requires that the tag ENABLE_PREPROCESSING is set to YES.

 

-PREDEFINED             = VMA_CALL_PRE= VMA_CALL_POST= VMA_NOT_NULL= VMA_NULLABLE= VMA_LEN_IF_NOT_NULL(len)= VMA_NOT_NULL_NON_DISPATCHABLE= VMA_NULLABLE_NON_DISPATCHABLE=

+PREDEFINED             = VMA_CALL_PRE= \

+                         VMA_CALL_POST= \

+                         VMA_NOT_NULL= \

+                         VMA_NULLABLE= \

+                         VMA_LEN_IF_NOT_NULL(len)= \

+                         VMA_NOT_NULL_NON_DISPATCHABLE= \

+                         VMA_NULLABLE_NON_DISPATCHABLE=

 

 # If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this

 # tag can be used to specify a list of macro names that should be expanded. The

@@ -2365,10 +2436,32 @@
 # but if the number exceeds 15, the total amount of fields shown is limited to

 # 10.

 # Minimum value: 0, maximum value: 100, default value: 10.

-# This tag requires that the tag HAVE_DOT is set to YES.

+# This tag requires that the tag UML_LOOK is set to YES.

 

 UML_LIMIT_NUM_FIELDS   = 10

 

+# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and

+# methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS

+# tag is set to YES, doxygen will add type and arguments for attributes and

+# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen

+# will not generate fields with class member information in the UML graphs. The

+# class diagrams will look similar to the default class diagrams but using UML

+# notation for the relationships.

+# Possible values are: NO, YES and NONE.

+# The default value is: NO.

+# This tag requires that the tag UML_LOOK is set to YES.

+

+DOT_UML_DETAILS        = NO

+

+# The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters

+# to display on a single line. If the actual line length exceeds this threshold

+# significantly it will wrapped across multiple lines. Some heuristics are apply

+# to avoid ugly line breaks.

+# Minimum value: 0, maximum value: 1000, default value: 17.

+# This tag requires that the tag HAVE_DOT is set to YES.

+

+DOT_WRAP_THRESHOLD     = 17

+

 # If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and

 # collaboration graphs will show the relations between templates and their

 # instances.

@@ -2558,9 +2651,11 @@
 

 GENERATE_LEGEND        = YES

 

-# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot

+# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate

 # files that are used to generate the various graphs.

+#

+# Note: This setting is not only used for dot files but also for msc and

+# plantuml temporary files.

 # The default value is: YES.

-# This tag requires that the tag HAVE_DOT is set to YES.

 

 DOT_CLEANUP            = YES

diff --git a/README.md b/README.md
index e980e3c..16bf03a 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,7 @@
 
 Easy to integrate Vulkan memory allocation library.
 
-**Documentation:** See [Vulkan Memory Allocator](https://gpuopen-librariesandsdks.github.io/VulkanMemoryAllocator/html/) (generated from Doxygen-style comments in [src/vk_mem_alloc.h](src/vk_mem_alloc.h))
+**Documentation:** See [Vulkan Memory Allocator](https://gpuopen-librariesandsdks.github.io/VulkanMemoryAllocator/html/) (generated from Doxygen-style comments in [include/vk_mem_alloc.h](include/vk_mem_alloc.h))
 
 **License:** MIT. See [LICENSE.txt](LICENSE.txt)
 
diff --git a/include/vk_mem_alloc.h b/include/vk_mem_alloc.h
index 8ba0fe9..d1c4e34 100644
--- a/include/vk_mem_alloc.h
+++ b/include/vk_mem_alloc.h
@@ -5103,17 +5103,13 @@
         }

     }

 

-    void resize(size_t newCount, bool freeMemory = false)

+    void resize(size_t newCount)

     {

         size_t newCapacity = m_Capacity;

         if(newCount > m_Capacity)

         {

             newCapacity = VMA_MAX(newCount, VMA_MAX(m_Capacity * 3 / 2, (size_t)8));

         }

-        else if(freeMemory)

-        {

-            newCapacity = newCount;

-        }

 

         if(newCapacity != m_Capacity)

         {

@@ -5131,9 +5127,25 @@
         m_Count = newCount;

     }

 

-    void clear(bool freeMemory = false)

+    void clear()

     {

-        resize(0, freeMemory);

+        resize(0);

+    }

+

+    void shrink_to_fit()

+    {

+        if(m_Capacity > m_Count)

+        {

+            T* newArray = VMA_NULL;

+            if(m_Count > 0)

+            {

+                newArray = VmaAllocateArray<T>(m_Allocator.m_pCallbacks, m_Count);

+                memcpy(newArray, m_pArray, m_Count * sizeof(T));

+            }

+            VmaFree(m_Allocator.m_pCallbacks, m_pArray);

+            m_Capacity = m_Count;

+            m_pArray = newArray;

+        }

     }

 

     void insert(size_t index, const T& src)

@@ -5313,12 +5325,16 @@
         if(newCount > N && m_Count > N)

         {

             // Any direction, staying in m_DynamicArray

-            m_DynamicArray.resize(newCount, freeMemory);

+            m_DynamicArray.resize(newCount);

+            if(freeMemory)

+            {

+                m_DynamicArray.shrink_to_fit();

+            }

         }

         else if(newCount > N && m_Count <= N)

         {

             // Growing, moving from m_StaticArray to m_DynamicArray

-            m_DynamicArray.resize(newCount, freeMemory);

+            m_DynamicArray.resize(newCount);

             if(m_Count > 0)

             {

                 memcpy(m_DynamicArray.data(), m_StaticArray, m_Count * sizeof(T));

@@ -5331,7 +5347,11 @@
             {

                 memcpy(m_StaticArray, m_DynamicArray.data(), newCount * sizeof(T));

             }

-            m_DynamicArray.resize(0, freeMemory);

+            m_DynamicArray.resize(0);

+            if(freeMemory)

+            {

+                m_DynamicArray.shrink_to_fit();

+            }

         }

         else

         {

@@ -5342,7 +5362,11 @@
 

     void clear(bool freeMemory = false)

     {

-        m_DynamicArray.clear(freeMemory);

+        m_DynamicArray.clear();

+        if(freeMemory)

+        {

+            m_DynamicArray.shrink_to_fit();

+        }

         m_Count = 0;

     }