From e6e498f63a745cae4b9ca5abd8e6b32305d4e0aa Mon Sep 17 00:00:00 2001 From: Adam Sawicki Date: Fri, 16 Jun 2017 17:21:31 +0200 Subject: [PATCH] First commit --- .gitignore | 2 + LICENSE.txt | 19 + README.md | 7 + bin/Shader.frag.spv | Bin 0 -> 832 bytes bin/Shader.vert.spv | Bin 0 -> 1472 bytes bin/VulkanSample_Release_2015.exe | Bin 0 -> 88064 bytes media/Thumbnail.png | Bin 0 -> 22054 bytes premake/premake5.lua | 43 + src/Doxyfile | 2492 +++++++++++ src/Shaders/CompileShaders.bat | 3 + src/Shaders/Shader.frag | 37 + src/Shaders/Shader.vert | 42 + src/VulkanSample.cpp | 1724 ++++++++ src/vk_mem_alloc.h | 3876 +++++++++++++++++ third_party/mathfu-1.1.0/.gitignore | 37 + third_party/mathfu-1.1.0/.gitmodules | 9 + third_party/mathfu-1.1.0/AndroidManifest.xml | 34 + third_party/mathfu-1.1.0/CMakeLists.txt | 137 + third_party/mathfu-1.1.0/CONTRIBUTING | 28 + third_party/mathfu-1.1.0/LICENSE | 202 + third_party/mathfu-1.1.0/android_config.mk | 49 + .../mathfu-1.1.0/benchmarks/CMakeLists.txt | 54 + .../mathfu-1.1.0/benchmarks/android_common.mk | 48 + .../benchmarks/application_common.mk | 17 + .../benchmarks/benchmark_common.h | 107 + .../default/AndroidManifest.xml | 44 + .../matrix_benchmark/default/jni/Android.mk | 17 + .../default/jni/Application.mk | 15 + .../default/res/values/strings.xml | 18 + .../benchmarks/matrix_benchmark/main.cpp | 79 + .../no_simd/AndroidManifest.xml | 44 + .../matrix_benchmark/no_simd/jni/Android.mk | 17 + .../no_simd/jni/Application.mk | 15 + .../no_simd/res/values/strings.xml | 18 + .../simd_no_padding/AndroidManifest.xml | 44 + .../simd_no_padding/jni/Android.mk | 17 + .../simd_no_padding/jni/Application.mk | 15 + .../simd_no_padding/res/values/strings.xml | 18 + .../simd_padding/AndroidManifest.xml | 44 + .../simd_padding/jni/Android.mk | 17 + .../simd_padding/jni/Application.mk | 15 + .../simd_padding/res/values/strings.xml | 18 + .../default/AndroidManifest.xml | 44 + .../vector_benchmark/default/jni/Android.mk | 17 + .../default/jni/Application.mk | 15 + .../default/res/values/strings.xml | 18 + .../benchmarks/vector_benchmark/main.cpp | 76 + .../no_simd/AndroidManifest.xml | 44 + .../vector_benchmark/no_simd/jni/Android.mk | 17 + .../no_simd/jni/Application.mk | 15 + .../no_simd/res/values/strings.xml | 18 + .../simd_no_padding/AndroidManifest.xml | 44 + .../simd_no_padding/jni/Android.mk | 17 + .../simd_no_padding/jni/Application.mk | 15 + .../simd_no_padding/res/values/strings.xml | 18 + .../simd_padding/AndroidManifest.xml | 44 + .../simd_padding/jni/Android.mk | 17 + .../simd_padding/jni/Application.mk | 15 + .../simd_padding/res/values/strings.xml | 18 + .../mathfu-1.1.0/cmake/find_fplutil.cmake | 41 + .../mathfu-1.1.0/disttools/config.json | 37 + .../mathfu-1.1.0/disttools/push_package.py | 54 + .../mathfu-1.1.0/docs/generate_docs.py | 41 + .../mathfu-1.1.0/docs/src/api_reference.md | 37 + .../mathfu-1.1.0/docs/src/contributing.md | 1 + third_party/mathfu-1.1.0/docs/src/doxyfile | 2371 ++++++++++ .../mathfu-1.1.0/docs/src/doxygen_layout.xml | 370 ++ third_party/mathfu-1.1.0/docs/src/groups | 28 + third_party/mathfu-1.1.0/docs/src/index.md | 79 + .../docs/src/programmers_guide/building.md | 177 + .../src/programmers_guide/building_android.md | 159 + .../src/programmers_guide/building_linux.md | 106 + .../src/programmers_guide/building_osx.md | 98 + .../src/programmers_guide/building_windows.md | 84 + .../src/programmers_guide/introduction.md | 80 + .../docs/src/programmers_guide/matrices.md | 358 ++ .../docs/src/programmers_guide/quaternions.md | 220 + .../docs/src/programmers_guide/utilities.md | 113 + .../docs/src/programmers_guide/vectors.md | 272 ++ third_party/mathfu-1.1.0/docs/src/readme.md | 1 + .../mathfu-1.1.0/include/mathfu/constants.h | 165 + .../include/mathfu/glsl_mappings.h | 119 + .../include/mathfu/hlsl_mappings.h | 134 + .../mathfu/internal/disable_warnings_begin.h | 35 + .../mathfu/internal/disable_warnings_end.h | 23 + .../include/mathfu/internal/matrix_4x4_simd.h | 441 ++ .../include/mathfu/internal/vector_2.h | 166 + .../include/mathfu/internal/vector_2_simd.h | 253 ++ .../include/mathfu/internal/vector_3.h | 184 + .../include/mathfu/internal/vector_3_simd.h | 352 ++ .../include/mathfu/internal/vector_4.h | 195 + .../include/mathfu/internal/vector_4_simd.h | 283 ++ .../mathfu-1.1.0/include/mathfu/matrix.h | 1542 +++++++ .../mathfu-1.1.0/include/mathfu/matrix_4x4.h | 22 + .../mathfu-1.1.0/include/mathfu/quaternion.h | 526 +++ .../mathfu-1.1.0/include/mathfu/rect.h | 82 + .../mathfu-1.1.0/include/mathfu/utilities.h | 618 +++ .../mathfu-1.1.0/include/mathfu/vector.h | 1007 +++++ third_party/mathfu-1.1.0/jni/Android.mk | 110 + third_party/mathfu-1.1.0/jni/Application.mk | 21 + third_party/mathfu-1.1.0/jni/find_fplutil.mk | 45 + third_party/mathfu-1.1.0/readme.md | 58 + .../mathfu-1.1.0/unit_tests/CMakeLists.txt | 79 + .../mathfu-1.1.0/unit_tests/android_common.mk | 52 + .../unit_tests/application_common.mk | 17 + .../matrix_test/default/AndroidManifest.xml | 44 + .../matrix_test/default/jni/Android.mk | 17 + .../matrix_test/default/jni/Application.mk | 15 + .../default/res/values/strings.xml | 18 + .../unit_tests/matrix_test/matrix_test.cpp | 1147 +++++ .../matrix_test/no_simd/AndroidManifest.xml | 44 + .../matrix_test/no_simd/jni/Android.mk | 17 + .../matrix_test/no_simd/jni/Application.mk | 15 + .../no_simd/res/values/strings.xml | 18 + .../simd_no_padding/AndroidManifest.xml | 44 + .../simd_no_padding/jni/Android.mk | 17 + .../simd_no_padding/jni/Application.mk | 15 + .../simd_no_padding/res/values/strings.xml | 18 + .../simd_padding/AndroidManifest.xml | 44 + .../matrix_test/simd_padding/jni/Android.mk | 17 + .../simd_padding/jni/Application.mk | 15 + .../simd_padding/res/values/strings.xml | 18 + .../mathfu-1.1.0/unit_tests/precision.h | 23 + .../default/AndroidManifest.xml | 44 + .../quaternion_test/default/jni/Android.mk | 17 + .../default/jni/Application.mk | 15 + .../default/res/values/strings.xml | 18 + .../no_simd/AndroidManifest.xml | 44 + .../quaternion_test/no_simd/jni/Android.mk | 17 + .../no_simd/jni/Application.mk | 15 + .../no_simd/res/values/strings.xml | 18 + .../quaternion_test/quaternion_test.cpp | 434 ++ .../simd_no_padding/AndroidManifest.xml | 44 + .../simd_no_padding/jni/Android.mk | 17 + .../simd_no_padding/jni/Application.mk | 15 + .../simd_no_padding/res/values/strings.xml | 18 + .../simd_padding/AndroidManifest.xml | 44 + .../simd_padding/jni/Android.mk | 17 + .../simd_padding/jni/Application.mk | 15 + .../simd_padding/res/values/strings.xml | 18 + .../vector_test/default/AndroidManifest.xml | 44 + .../vector_test/default/jni/Android.mk | 17 + .../vector_test/default/jni/Application.mk | 15 + .../default/res/values/strings.xml | 18 + .../vector_test/no_simd/AndroidManifest.xml | 44 + .../vector_test/no_simd/jni/Android.mk | 17 + .../vector_test/no_simd/jni/Application.mk | 15 + .../no_simd/res/values/strings.xml | 18 + .../simd_no_padding/AndroidManifest.xml | 44 + .../simd_no_padding/jni/Android.mk | 17 + .../simd_no_padding/jni/Application.mk | 15 + .../simd_no_padding/res/values/strings.xml | 18 + .../simd_padding/AndroidManifest.xml | 44 + .../vector_test/simd_padding/jni/Android.mk | 17 + .../simd_padding/jni/Application.mk | 15 + .../simd_padding/res/values/strings.xml | 18 + .../unit_tests/vector_test/vector_test.cpp | 783 ++++ 157 files changed, 24645 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 bin/Shader.frag.spv create mode 100644 bin/Shader.vert.spv create mode 100644 bin/VulkanSample_Release_2015.exe create mode 100644 media/Thumbnail.png create mode 100644 premake/premake5.lua create mode 100644 src/Doxyfile create mode 100644 src/Shaders/CompileShaders.bat create mode 100644 src/Shaders/Shader.frag create mode 100644 src/Shaders/Shader.vert create mode 100644 src/VulkanSample.cpp create mode 100644 src/vk_mem_alloc.h create mode 100644 third_party/mathfu-1.1.0/.gitignore create mode 100644 third_party/mathfu-1.1.0/.gitmodules create mode 100644 third_party/mathfu-1.1.0/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/CMakeLists.txt create mode 100644 third_party/mathfu-1.1.0/CONTRIBUTING create mode 100644 third_party/mathfu-1.1.0/LICENSE create mode 100644 third_party/mathfu-1.1.0/android_config.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/CMakeLists.txt create mode 100644 third_party/mathfu-1.1.0/benchmarks/android_common.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/application_common.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/benchmark_common.h create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/default/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/default/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/default/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/default/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/main.cpp create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/no_simd/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/no_simd/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/no_simd/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/no_simd/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/simd_no_padding/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/simd_no_padding/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/simd_no_padding/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/simd_no_padding/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/simd_padding/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/simd_padding/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/simd_padding/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/matrix_benchmark/simd_padding/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/default/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/default/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/default/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/default/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/main.cpp create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/no_simd/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/no_simd/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/no_simd/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/no_simd/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/simd_no_padding/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/simd_no_padding/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/simd_no_padding/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/simd_no_padding/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/simd_padding/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/simd_padding/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/simd_padding/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/benchmarks/vector_benchmark/simd_padding/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/cmake/find_fplutil.cmake create mode 100644 third_party/mathfu-1.1.0/disttools/config.json create mode 100644 third_party/mathfu-1.1.0/disttools/push_package.py create mode 100644 third_party/mathfu-1.1.0/docs/generate_docs.py create mode 100644 third_party/mathfu-1.1.0/docs/src/api_reference.md create mode 100644 third_party/mathfu-1.1.0/docs/src/contributing.md create mode 100644 third_party/mathfu-1.1.0/docs/src/doxyfile create mode 100644 third_party/mathfu-1.1.0/docs/src/doxygen_layout.xml create mode 100644 third_party/mathfu-1.1.0/docs/src/groups create mode 100644 third_party/mathfu-1.1.0/docs/src/index.md create mode 100644 third_party/mathfu-1.1.0/docs/src/programmers_guide/building.md create mode 100644 third_party/mathfu-1.1.0/docs/src/programmers_guide/building_android.md create mode 100644 third_party/mathfu-1.1.0/docs/src/programmers_guide/building_linux.md create mode 100644 third_party/mathfu-1.1.0/docs/src/programmers_guide/building_osx.md create mode 100644 third_party/mathfu-1.1.0/docs/src/programmers_guide/building_windows.md create mode 100644 third_party/mathfu-1.1.0/docs/src/programmers_guide/introduction.md create mode 100644 third_party/mathfu-1.1.0/docs/src/programmers_guide/matrices.md create mode 100644 third_party/mathfu-1.1.0/docs/src/programmers_guide/quaternions.md create mode 100644 third_party/mathfu-1.1.0/docs/src/programmers_guide/utilities.md create mode 100644 third_party/mathfu-1.1.0/docs/src/programmers_guide/vectors.md create mode 100644 third_party/mathfu-1.1.0/docs/src/readme.md create mode 100644 third_party/mathfu-1.1.0/include/mathfu/constants.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/glsl_mappings.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/hlsl_mappings.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/internal/disable_warnings_begin.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/internal/disable_warnings_end.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/internal/matrix_4x4_simd.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/internal/vector_2.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/internal/vector_2_simd.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/internal/vector_3.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/internal/vector_3_simd.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/internal/vector_4.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/internal/vector_4_simd.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/matrix.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/matrix_4x4.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/quaternion.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/rect.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/utilities.h create mode 100644 third_party/mathfu-1.1.0/include/mathfu/vector.h create mode 100644 third_party/mathfu-1.1.0/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/jni/find_fplutil.mk create mode 100644 third_party/mathfu-1.1.0/readme.md create mode 100644 third_party/mathfu-1.1.0/unit_tests/CMakeLists.txt create mode 100644 third_party/mathfu-1.1.0/unit_tests/android_common.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/application_common.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/default/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/default/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/default/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/default/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/matrix_test.cpp create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/no_simd/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/no_simd/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/no_simd/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/no_simd/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/simd_no_padding/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/simd_no_padding/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/simd_no_padding/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/simd_no_padding/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/simd_padding/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/simd_padding/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/simd_padding/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/matrix_test/simd_padding/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/precision.h create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/default/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/default/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/default/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/default/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/no_simd/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/no_simd/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/no_simd/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/no_simd/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/quaternion_test.cpp create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/simd_no_padding/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/simd_no_padding/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/simd_no_padding/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/simd_no_padding/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/simd_padding/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/simd_padding/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/simd_padding/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/quaternion_test/simd_padding/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/default/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/default/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/default/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/default/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/no_simd/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/no_simd/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/no_simd/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/no_simd/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/simd_no_padding/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/simd_no_padding/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/simd_no_padding/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/simd_no_padding/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/simd_padding/AndroidManifest.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/simd_padding/jni/Android.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/simd_padding/jni/Application.mk create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/simd_padding/res/values/strings.xml create mode 100644 third_party/mathfu-1.1.0/unit_tests/vector_test/vector_test.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..eaabeb1 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +build/ +doc/html/* diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..be9c1ee --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,19 @@ +Copyright (c) 2017 Advanced Micro Devices, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..6033f84 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# Vulkan Memory Allocator + +This is a README file for Vulkan Memory Allocator library and accompanying sample application. + +**License:** MIT. See `LICENSE.txt`. + +**Documentation:** Doxygen-style comments in `src/vk_mem_alloc.h`. diff --git a/bin/Shader.frag.spv b/bin/Shader.frag.spv new file mode 100644 index 0000000000000000000000000000000000000000..1fb2f32fd33f09515fd517ae92199f3eaf914ead GIT binary patch literal 832 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 literal 0 HcmV?d00001 diff --git a/media/Thumbnail.png b/media/Thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..22027bd7bfe7993a9495cff53e46d794c43de539 GIT binary patch literal 22054 zcmeFZnBoSdwjJzp*X0BLtCGfyi^Djz#fTPk@4mG_oxR!9H<6+l5oQqy_;GiCK?Uo$VTLSI z<*j+i+t0;s$4@sebh{gS$TzaL8awQ?lM8TU)!)bxON!Xvy?gzA6!-JeZ64Y+rO0Fv zZH+F$Z4gC&AC(h1`LB3#mEd6Ga{|X`nSR(Atf3lb?G8-$(P`DUXZ?3bohw4(Vo4#9 zta@6Ay1u@?t&7XZ))_WBA`?6N$jJ?sZsy9$%GkujP^*)^fx*j(k`tUTC7IL7cAr(Q zFD$<0(B7GbpFguk-eBL>Wv3=S_YZ2ME%c56L*)qI+1%D(--lMc=2o$o?|-~sZhL@= zduY40L$8E_)%WN7zuFCRcn6(Yo4#;0oMWrC`^fvWnWLrVusbwD*Hc%I!jlf~pAOCR zhaL_}+%vtmGytRgn(j_tYIZi`+CuY}Hv3Ss_dasP60n*NL}EZg{yqI#T*MmJ4KRB~ zMCb?lqAw{X`YD7m<>J$4@4saJ&LO$oxw{K>4P$h zAzzW|ZWw}ZYRR{MDeu+Yh)oXKSvjsOj6*wt$05O-{DF_$acom1O?K=dLE9iP-+jkj zc6~V`FHE(b`p?{I1(Ob>H$VMv0bzOQVs}4D+fUkjG=$tR3r5YnomQr-7LBJ#nRQ(6 z0@%vC{P_Ez=Fc6jOkvl~t#uodVXd?xXHnvuSCdt5TU#%7r>R=Lnq40Xjt?KLW_j#_ zTy2HBRy_nm6si9OdQkF*-0BQ18Nd51H#fgF7Rf4H@or`(&u{Pa zwveL4SBn0(Xic2358KU}7vl%juIOd%vZUm6>7bIwaPO1a@?w7;HPQ1odxdVFgH!Nj z)#Z}*3PTEZCNeGb2#k!30{?y}Ebi>|msoxK_O0ncwVtN7wz(cbn1m_h;rGQu``>Zq zj{6*k+och);c7j`o6g`okfQ;PNC&IsP8;mXM?EQZK;df%vMfzrum(An_%n~UI_ne? zsol~UUwoAC*yuRyM*Nw{#?X_3T)tDceOr%)oZQf3`BV4#3IpK0iUCisJ{$BeFsHIf zZO5m#mox-2GR*7pUUY}YIu7N1zR5&uJbN;)8-?Dw_qyS;5asxVuEl26Ym+vHRdmP%dJN>mNm|eb= z_4mBWgP+AzF5osutdYA3VC!HLu5-En-3bik^Gt8N3|%wXD@^Y2tsG4|8z3Fu?ooYIQw+C+*|;C zlzKPLoUO@U5ciRWtI4DC-9&j)Rch1jq@_)4l$}>go`4q#NcO98E?0J5iUul|=$j1f z_aFGP!wnWb=xV9xY2l|1CtCE06T0qr>7?%8{IGlIxa_~k*3|uIL#a(n;P_EN`0S`qpq@JnVbZL5Nbyod3JL`CG>9CZLW*S8ggx(f*qp=W#^#n|t7-=o8Pmd*hUNb?&!u)a&_^ zvaclg-p7 ztWP>E?M+wh!|*z0byo&?qj>P=YU~E5LofnqJz%1--ib7EB-~0*h6YE30;|=@VwEpr z2hOpcrJi=FwVNR)!AiK*Opm~HWC0~=z*mIgLZ6e|YAxE&N5I`yd}5(`uis;4Xv@u6 z{+Oq@F6Nl9Rb{YsXWm+zCSg%G)G1@NRfW!c>&idnW~j0L&+hMD_U)Vlwz!@;@|aPN zgrH~&lS>h%7Z_JGf%ZJQb_1AS&OdW;0T0jOC5RJW&WqoQ-gX-YPGt0|9A{ukwSKjc zd4YfRNP|GuTq_m5TLSj=(astd^MGHt+Arm4zlT3Z*wyAH%p6>#B>&cd`>zlO#}v!B zkWgh+>$QqSC~E!dlPmtm+W%aR|zj$r^6&=%m!xV(}ZRE@c0U4ezKmU`p9v(S) zK;OB!fmj0Bvh2mrHQ3otXm_mZh}pYGJxv0&;$lmhJ5WmmD|>wQC*LDviq&Bab?rC! zrm}ZFgIj0AELw>pgiYpMojHQ;mV_Cg{Cw)1TpR3NE-7sW`5dJNl&}`06$;REpIx;L z@I7)K<~F>Zgpm)@a=ZgFPc1b!ZDBooD!!~&HG74XQJ<~%c3LtHW-`wHLP%sW`bhj` zT;k&t+j0Zk>ehTy(c6*1oR+XZH#7Z>gZ)m9hVlUqk{37nE2~(z9t5k&1sF>da;Zc3 zhO(F@7U&;3NJfVc`+e>DHrsR`aoATM8l)-eSz7lr8%r&5Lx@7)C=6H}-E^2gbCsS1 z(oGgMe9#KTr|&Ue!E;C-*?gBE)4Bgw2-VVjwFDWlDQ4*h`8W(x6ev|R(oo~XL+(#3 zMGcflZU{jO!@aoSF=c}xF#s7mj%5W;QD9uAEbsSyo#9Uf9{eJlNo;M{k>V;`fCO-B z5TOe^dhw7qLqlF~@aL1W^8RGwog!MY(v~NHt{}D`q0m1(fdV1gQVLT7hphf8-&^MSZmEvsbJQ=UNe_2IAC_k{ z6I}6QJK_em=MWDOK020Vd+~5k-U|Qt)f;b}DP>JPf}dbvzwG8XRY%VZ{j`C(rOx@^ zs48H!4&)4hzed3$@%>oQPqgwAbTt*Nslm|AKq3{UE?Q!MZzszFS`u}63IXQo+wo&3 zEFU;m1%W(3am3)cJ&MTC@~|rjv{QllA(6$cifimXARF((SpaUrPvAO2FybPQ;ZrK9`S)rajZFuOd*}cNZ zh+Xvp6szCN_X_lUMb?%wrjnnuAU9znOg6%BRCpD9{rU)b@dANOVIGqgK_5VYSVvkLy$MY@wYk3WFU(VH&7|e7U&+osd)_jS89TOc(R+b6ERK&VP zmy8EnTU}W?-2SaIb(3DyRZKVn@-?SsuNLsRx({hYXDIRZndI&%KJb<(e9+hXo)Mv^ksLY=a@eGOAGOaVZcx>wwyn)b2`+4_<*_a9f#xZ`ct(O&3^03 zB^D^r;WCgNYjbLAhH8bThcqPe=I5*M@YN2r()x;sc^~>_gW0Wk2wdN}ifN?!aJk}O zN7p2yJ)*mYlnNVT^P#gZA0^9`?-=@CR;HZP8 zRped3edv%K`Y9`&w?26)gu&wJ$U;p1j<<%zj5Df&e}+{~-xB?kl@P*S!5CACD(zh1)Nr@`wGDykG9QJb%C3fHDE^KvHmX;>-CSyfRKBMt`B&~) zR(BG|PheyLwD$bvyg?$mbs?lIfGz@)4IJo^kz&0x?RnVjLld4G#2b#8ctWU_ev+SD|Nw{g#6Tu^B93R>M7qmRfz? z#h{%x2-Cq?JfrrQ`w?c~*g;ewowrQM*~YDUox^=awpnJ30eNd$)?p?gfGU(+lg2`m3k3P)*eO)gu!ChHbbQ}i^ivd; z@iV|&L;KQW9a~A58x#Yokl57oPpXr({A1>LdBc}Lp@62(#hI*6?yn4i3kvME{fYG! zwY7o5O{Z*^g-+E!=b$M-Pm*-wYy94_Y!>DhiWq1spex2jfYWt6v<^<^!=S);9Ats0 zs^zn_>ek|$Qw}^`X``HJ^>V=kZ;`{TAhOM;!>uauv7*z1G_4=5JtbrR4)_;N&r z&2KU*fpJnP9phoylf_96ag^qr9W}0v1ilEqQ-{mz#v2Fq4Wn4J&S(FaiKdDrFa@<3 zQ?rxRtgUgvB>0k}t+kn7TAiZZZ7gokDl(C56zlg>_jBL~QCjVGQ%Yjfr&ZhG0dv!+ zhD%IfzUR*|alyg8xNXdMLt0)dh$dYObFBU6_Bh~owa{_hy>GsHdgjgq8R&nWiW7F8 zz~$f8AnJogP^(t5L8+9MX~6f;fW+z^IrM+%B5CJOs-R)`5%{L~(+ry9Q<{s_d=@(G zV38DvmqPyqwLjSg768jFjesE6!q73{sJ=r`NQ$SYI!b~nQ-Uh0zu#?pN9%)uaHgvO zm=59?MJuB=ce1X@ zri>IEnnp0D?zfrH5N~)4GdwmWP*G-_lr8lUijB|YC>-3KlgW}IrP$pv!`B#iL^Zv@ z#cg_y>aaq^xD6T~FIP9_i=Ulk@~y9D_0oFnd@eBD_3V%ONQ{?z2*GLTZDtO9%GroT z##&4h(HrFoJKb#7ocMu-EXJnjxRNz8ib>~T3hji?=y4)24+v7|K4(=6jvEF)oP%$2 zK6J|17*-?pIR#OXZ+S1$bkKu3kIYk4Dw7d9AR{=fm?a#o+oyyzR;(;4)otaIh?4oQu9X1^{5g|N>-!7 z?RSuG7S4R7%TM>A`UGf%!I_l64a9b&cDQffz7!RS8weD<^bX5(3E4h7@5rbJT#`I# z@UsGr31m)Q*`10^*0Ay+S>QrQ(RL>=;Z#~E8?2O4EfeYlF$pWA`neXS{!s=plD+XE z4nRo6{2jS|RFZ5$hnnp#O(rWZ)s)yV;_=A`N5Wju5MpyH9j9F~&(grJSWK9?fIyaf9*{mXm7Bz1|*k&zyY88f{znFIv)Q+X)_ z8tSKyOs}DE&UG|l`uynP9-a*UuP$t+ze2r!u_!b9a6jxOUe6s~kpTqXpLH#Y8 zoPE{|^~wi-4nv3ODVfqwQTRSe*fcT`8`!&i?F2>xN_TKhMD*{b`!U^tTe)KEWzrC&@%*MDH?+r18m&3ueo&Q}pZ z+cw4!LDw5e9Z;+inv;wfU=T9wv6Y=e6C1+|$ zsjHK>l5>q2;yeN0y@QPRvQs2xw(*Hc4t>XG0iH9!<-#(1BkBYcL&WW6vKqiYIO($? zSCG1`>fbt(6YB^Wv(q>f<)3DL_E8H(Uz@6mkEG5h?{Xzmx-&3-_&8YDl!UtBC}G&Z z96#Uvmi45IR3Y^9^m7gW$dW2&jdF49KMsB*XELe0X`kG}=MSOVHigkVq{Q(uV;++y z+uL9h-?d`8hsp^-7VW zc!hHzyqK;+rwokvZ0kZc+2Ze_PgBLzVN}9`lP)DJZ~@uBgcDVVONau96u^-gs8F$fwOF#;cm-3~YQri_sK8SV6~u%L2J z!-F?%?bg)piOPNlhSYdgtpv@1X!b<90nH?h_1 z2|nwlWPl5t3w6stKdQ$=Ls}`tGG5$%P_i2b3mw}dCGs|x!$LUfkls?(n#WE`3XENnacEj6sqNM9|Xb$ z17q#--gu<$!SXVHIYt~i!`SF59seA15IoY*H9cad2rbHqNscEiJ(tIc55_Z6yHa+a z3TPq@fqqMqct5q>xe;|{XUpcf4KJd661q~VK(7KkTxz~O(dA-!8&!TYurI0eA;a6^ z4BrerUytKp@EP@#52gqVEC6iusiDBpt@!fI?%4C)P4422=0Vi}GfCqh5nU;{Z=GSz zE6aTv8Ln(DuGDqz%r1<}v&N<4Hv}*xx$1urgEC0#7~>AD6cS`zcsMs_OuHg)a3$Ym zQF4mUC87WI864o%@iBAx0OL!ojTPN{IPLWg%IQZIVB5U=_Ffl# zXoq@Se$(_vSq4U?xRPDZ66Dj{v&y!8#}y7tg$v@5I--F+_G(esksJwA&> z%sk}HckB750l5w2K7%z+-FJTMt|bk>@Fp_dlWxy+lGseKsP^S5nfO}&>0ShgY^K+g z^wN?n!Y@+Gn*76xnV6={5n}M26x*;pjw|3}i<4d2_1)l`?H<#;&7C~&n+r|L>v%8i zE+l+d&#tj0Gj9_C{OGb)FbVAu=bnlxru~V#cy!Og%oj>W+Ok&CoSr1Ag~ zk}xk6#Ty9>GgqgWFcxHW*LV-wt#-j8lBhvSp&PLsNB5saU~>rB@{Io^3EAglIS9&w z1|HW_7n**4k_oMo8>WY%P7X`+WrOcD5Z^0NcnIds=}wYmyr1BoqG-X`3i*~w74Qe9 zE!3VKZrG>seORijF#ChJCVL<7U39y zlCp>0QHPxeSMZ}BLb%gCNb?nlwyp+_m^Tl&UgEF34k#1&d&%q8vB^=h z|NUD2u=mx~Y*#OwJlBi@czXKHMFbi%azkE#Uf%`FmNw>@*+=Y$m|hu^*k8?$?3?#0 zCaUM?v_|E*8?xX=O~5FOo^JgC{^C3T*QN1&@M4V%HQSZ}v2D=Bs@%89KfW=dr6zJH_4K2vQ?7{K=ZG8gpp%N6-Z>uSX$Zsi3=}@f?9>h53~*JRdbU zy7OyGwPnUXyDEpmTl8JLl@X&>te*!L)WPqQ>LGk6?~lYdTRh9MrI2`Rx%%Ob*BzJ` zJx&U~`t#hLUm?Hw?IKw_y@kn}kMdRx#$~zG$9!3i&Zs}08ei%+#i!v%f_rw9o75mK z{`uBEB(C{k)PobgDw*hfFb5p*>{L`e{x}k>I2m~-bB;yt`ffvpY z@}^ieJ))6D{OOqeGCJ(q!)`ls-|8&|X13j7Eu114v?oq=PpZ<9blH^t`$>@^tRe@x zl^{WA$G-Wk#`b}}l(D(>%ZsPtgM^8OJBA5O8X6(%6|4{M2`*b#w}((E=v!!169Q^&fSFvGg&quTZttk=Jf;2!BFFs#WsEIXQCeS- zQ?8?vmuRm>7byrkN-edVp^04`+fsBND?(5Z6e5n9S5zybp-aDc2b%y>&z@dY|CMo{ z&<_)h@C)zh?$7j#H)%+uqzOk?GBnN(d&9&kM>b;;+MWKMJY%2-q>#`Ft$r3su}Eiw zyWTRs!dEQ;FgDHvt!5-JzV_VEXg>LH>wqVmQ*T(FLei6<+s1Vk>yImhS&bhEt~Qgd zgs`kDJd!Mc!DxW0ta($a0GO4Z>$7~tPS>`FIeVSha`g2^SRw3>u_#?}2@Zdj#j15& zrxBg@(IG(0^7=U(G7^K;*-EW`>ID`N1Z-UP@edr|P(~3=3atNnlT6l_fa)qu(kjmV ziJLa;-&%#Z2Jzfmr~`iaXL_Of_*`s*{Q4PhB(8< ziP+Srfp)4~dbjOJ+bMRjMXyhf$5#fUfjxj}<1{U)jf&U^xeE%pf53MA2PGf7lP7Gq z#$0>bn&EEQOGUTmM<z&kmgMm<>E)cM*{yM;^E6i zFp-sFxIqi7$8{L_q+s0G_p}^(wezZtN?-g54t-l}mJO!y$&6tQ7G_PcI=+jcH z$$_0`V4yCbKjbLV>e|(Mgh_E$M@4W|_KNULYO5AEaZK|XzNK1D%CJ6+R!!)3YsAwIgUO*A~^D_*@;ApXl9 z#C~7nwgm}kKs`2t8XiA)K$z0+mWUix@gyAwbd8brjisx{BVV+o_)^t$N;rZa2cuv9 z_zrq?_jBissoi2^&MM=l{0ZQkeY*9cbI_xyvs!{WZQr4r;~d+f4aLYk_Qo} z{_fw1It!+oI^l2449I>?F=N?J4a1_%pVp>n;x!c4yzkLS5dHg6dmXgo`>5Cbb4?N{ zX&yKv2#XE&_lZUJAe=QOVtS}XR5<~ow9;lPWz|5ZJ^-hPq81RvO=3z?#& zg9OpX>QHS(sY(9*UPgPo+aH!o@I3+0VekzyOULpmrTf?3d1p1wR+3ekFcpn_g_Ki| zWWV*qZVe(D-helxr99NNC? zw;#D^Liwrpjd4Rce?{^VEvsfYd*xF_v^g*=kC_LrE3T?umMDrTAVYP&_?D|G%g98O zZHmnIM{{p@1q$KB*w+mx&-_G$Yh|Gwi!@J6!%`|Le{a@L-k6Tii6UeO_%x*dMf2?R8b8*Jg$pm3M-E+M>PKpCVrPO4Vj+hjCkG0p+l}$(bjf5>{Mp{ z@z$t1uR8YGY=B8@q~?s%R;Fa6Zew2OG1?0K$nmB(9?Y%m8_JVw68$h7+m6 zO&`mK(h4;Gj+Ef(JJf*g$?CSxoT`j;1mWH`bzrS9@2wQP2~+<<5BblSaiU7%I$;u{FI=Tp4M# za6x-SF|>=Q9c?9X(4{K5u|73PsJgQKCRBC8D0eGlM?^ymdH1G|IGItJn5F zo5afN%H4uH-RrG|SY8vKnlDRlz0Aitly-EEh)$o$?3k_?sravcm8{tNz&R_wfhADD zO;3@_q220EN6avI<+bz_61Z}vaPXpyX%yHy`=aiPeizaFx%PRo+jp#cj}R~6D`@dp zKN$?}wR|;L+8EkHQ5fyWJiG8$1gB4%7CC>n61pa*DIYElPn=H(JdT=X;rxhu5iA#k zzHgK5O1^%=0FgZd=6Tbc0MG>R$p_UWKOf7B&1(JCq*Ldy}SOITfk8Id>~k= zvM+Z*U7w`UFi0A6MCY~mty1tcdR~-qOU0s5{2v2EQ@XS(Kb~d=% zP;C`AM!EHN#wnRIHZLg(;=zkbF4EPEIJlJ5HHn#TJSi)G~0nRWR5h;-_x46C*>D16M-^KOm(Rc3w*b zyhfoZo}yx!k<1biG^VsTqTNU{X|kp#Qg`^W?~dD8MK(OkH2S_I+uUmS6Ixe{hlyO% zmpRoCbI8Ei_n%JJ3xHDe{c^piG-Qm-Te0vsHZdFlwCv*B=7wN{Kf+2Pq3wfsddb~y zUvgi_rC)^uMMbyzF%tv$^84F8S~-@^--k_GAOXI<(YH3{nN^rD2m_34@Kg3%2$7o~ zuwA)(`bZVd+tO`k2cra#sENK5OQ)=Yv>r96A};#zpAP@p0pL68BkP@9<%VT;?k5>s z=)9iZkgo{bQ!vvAf|n%o392L7qrCf<0qF@XQJ|)7R^Sn$c@LW${UDrlR;0FYSZ-X4 z@c7Vy5UMYr^B>xZGye=D@@YMT8AdrM&&HWcRZd7*Mf#p|kMuXmu_Q=%a%$!sZSxMw zOdHoFXG9C#BH;-Gbp=*%2mwXn3iYe&Ue*fYs7LCAC1w|)WoMhmv}PSEcg3CkF``XW z6JqicZje)rngsc!HH%F%_U+`s_Z3PSz@G({k2O@#Y9Wu=mX!5-d zEZ^91`85TYmE>r=%eq2BLJWUY#S((&SCMdfvJMI>q!*y^esd% z*H8`!ev4iHHYGv0709$wdTEL^!RFa*y^~Ye|1>828^^~WzpNkr=2K)MpOQEUIe<`W zbatV*b^>}Ao3;<3Q=y;Y7~bjvyEbyEAnH}OCBxrVEY=~&rf!@(Gl5`JGe?s{gC{uYW;aujpsqa?*_S^yy#1PMs15L zELBbb=Y)g(GtrPpK90HbMqEPN#oL^f9jv)Lkfa{m(1r@@aRAU|9L>3LWDZVIeXE#~IqJ7zy z9hWUctk7EGb^Sam4$neXN^1KZs}f_#my=N4DP4Wv=^XiF|ue33-H`H5s^d@S!pErX;3-Yfo2i2otZOa*sUl`47}R24P({s?ld+o*P&a<4kdX4B&MoJyo-qD&){$#E)s?1JnU}sR-13jQEY3 zLTlde6XT>PenOnI%(PksD;}QvcI##s1Jf;{hC|bRvXNswhvTvbIKJtMjY@{v)!*v1 z!+_>n$*Qh6P1?%hwo&3jcHd9LLrZ>K+C;~>FD`TPXD^0?ucr&$J2A_rbd-@Mi&8M5 zd^5GgEyJEDK%`sm!L7_Tjz#$4WclSIsZl8fBX5?$KX-mYB)9C{@Xa@wR#$^q$$;^R zatAcU*U1EN9Fy+wPXOk*Dx8{F!?gSqci2cgJ#mKej?8+$XYZ?@?d+JNMCC7T-?`q} z*B83AEy+o%MP6R9Ef~Z!xTs`$PGZhy>=`qVDC1a#EWMsf6RQq*r^537AqJye% z*mrefJ|~8IA+#g-ViL%+8qY=0G9uaAZ%%wN7cDsmV1dkP;J{=s0m&-X4>tghEet3T zcN|zgeOdS;n21u<~pvAtI@POU6i*9`LJ|Vxa)~24P2ys(SsUxDA$+p!J9M+ zBtyVmZqM^1<*$pvS zI&{rnm@@kF69LSf*0Bu9O9NkH8Jv$yH+JadFL%}BG|24j!v!`|_R_LdC;<@Cl%TJv zUcZMzci0F5n?L;-NgnLXPMSAV-i9|D6Vgeuh$sWRJK=&$c&{N6#-Z08R2xD^r-dxdWY~)=k=^Akk@nvD^rr+GkvKBec~Jh8)8`^^uhTh8`3#)M50U+ zfMcY|H(%S8>KbfCDSY5mbN&^We*NlH@g5Dgw+GL+DA6m5`8zZdl*jh&1Iva$H1m=j z3>x=1U&QKN@ zJD6+UywbZ;75kTZ2{ekCXRBh`4$QF|jKs>%S?_D!Ja$Pz_rVWkQ*PZd;+8Or=SY*$ zEKAi{j$P*ytzBTD8&ihM@d$<#&aC4WE{r5)BH{jm7}f78w)6#_#v!03r84$Zew;Ha zQQzI+x+VlV>iro=jfUtpyi^C|Urf6b)EvRrVdh{sF_99AP0z59#G}&+b6)BpzV)MA z(24as(zmGT32QgRO8P}tJTtlT8yChRHw+RL8#=##Gcf|#1KQB;7~v6n3Qy;?Sl#Nk zAT|FtWdDBLb1{wAZhtLv+9c(J#~+Rh%NO1`Df=@nyuG+o0gz|kt%DRW4S(~X(~4Iz z%O1Ll1UH9zgbF8R9rj?l#aX}WH9JPmpvwOBv$}R&ruBg+A9`r)Op`NvE9S*Eu@ar= zpaVw;N6AwVCxUq5eM^i2L-Vnp_DyZA!gKo0hT^MmG zrgiPny9ny@7K}iLCUJ2W9(2!f#B*41s?l(nvPy}^+%EShw4HS{SM32rx6NO^Blrri z!ZiESR0%!(P|>=`e6et=#G{J%Iqc*a3`JKi)FvydAqQs%H{jQa7|vpKJHGOxaCdb( z=j0)OD2Jsmmytnyttuxx@$ezi27Bnnb@jyp4{c87B}-MMTgZfH53;LM%~oGHq{$j7 zGR1N=(-g}FU0}X-b@q}X8*KNUW(fT7W4tJk5BK_?7MbK!N9_aU9R*UZfAjTcY!k~7%5yOZb2onqq(2Jys=p6Sc;j37?(sOl{M@X*#p=ZFO z2M9Fa8oI`|00rwpdQe;+sM?5~gaygnm`yBLj*5JdNRnG~XK0RhdLZS73qj1kJ+{tL z^Nm)x&lJ^P1C%NwN9FlmKd`lsu`xXG4vmIvnoZkDK&mTOCX`V%0$wTkyp-fmj?L!a zC9;&8n>Ydy9rc*!@3$;u3~;vGAHR+JhBE>5B zPw|ox_(BA+*h!7=Z+y{XuF7#u*x%>YR~P8oQd_&-dftC5Ca5n)j{(yu?_?2^wL9~> zuzuRA>dQsbOHG=kgsE77t*g0*^|bn1f`yw+65Dym7k3)OKdQLU9;+hN2q4}H+)M85 zDxyt*g;MRM;{pqkK0QRxBz^JcL1CWrC1>N*KGvig7Ea3rk}5<70PQpyyD0goRlg|| z#5M3P+q1Kai!CS_s{aCNr%9SL(aLyB-LMun`@v)u^K_8IIb_B!mPZxtem$ z{^^sn56#7#RlTzpV1Z@Ini7Nb^2H_>-qKt?ZTxgCL7x zy`;ajg;Clqq1 zV$3Ssg<#;2^qQ$m+=(1cJ5vU)iU6cikX$4t^o+=2KEK`CYQs_bg^J5eMv?1l)~m)c zaQ}wDm5K_*l-3@u9Dc$O?i)7$BOU~_e>*~@=P(0Yq*)%L#Qqf1vXUXU#;8$sAg|<@F-(`e&rfmVD)(Anaxb0)sntf1}IP5;um~O1vVX z>51uEn8e6^0VGXptgy*RGuz>xI=Bn(zjxe$jgA?Ub#LBTYM%!X2ZqOCbKP#5l}_Kw z&;{I?ZAJ;a=|HZJzr8`KieCm#xfKH#e*p;J#AzSs_{kUP{TS~enE2=_FxvO0r3*Cf z6Xqj2`=gg+R~)5Wm2p9di=F)w2)a!BhWMdR2)T8x#!rxE9W8LFI^dSb00QrYWJ9bT z$Ua+d{uyVWNEN}JBjfl3MDe1%D)S1>NM?N)r=Akw6CGnB???a>)!*QS=b8Wfgm|@; z=^fcfQRKY)kugT9OK2SNk4Bt|u<*IK^tORDV8WF0pFbU@He_M_by9QEgY!dt#^I9} zPpvrFNrB;!^eD_S8{A?015(ox_MYrWwWgA>I?h5_VQEPD4$rD1+da~w zrNwuoBlF9=!m(c8rzR&P%$M`Qj*&pY(Ya&IqOckDL1fenD8Lgmq%`neq z^oqa1XY#=oFGkTi1KRRehA->~xJCOjWg33$2N;2QF zRP1Kr^4Rzo4b5)pHv=RfvVKi5GdGU@49kQ2-Ps-YC0a>$$qzb~9U~R0Bs4!>7SI`E zTVJ=|?wE<>Nb#+jzjfK5BVOIV(6kzv!TdZ*a)c1^QxCm$t92mSEkc>8uKCZqJ3F!Z z@8%Ftw8I@G71J8P*MPe|b)B zd0VK7G=r_T>ad&0tgnc}Ry>fHSBk#!Ny&9UxNpIWuL zVjS`*X=&?nTGU+*cY~DiQ~zs5X$l|QwdH$(jyT4i;m`U=jD>G{r;D_}P(C0W+WCo0 zP{S3YLPN-Y|9M)$_p76MpNn6SYM0iyI0H- z^`Yv?#iFlkM1ski5A7~w-}TPW;02M84d=T_!l$Ljd=Yx!^CbVcKpM6O{=1MIf}-0C zX?Zd$EEYz!i*rMCC72Cj78c!$Jc4Lg`u5Y5iZJ4b;b6nQy;-=Gcq_}*%`V3UjeYQ4 ztN34EjaQlO;ki`^GhU@|TAarz^$hqw& z_5@Er)-S~GWZad<0YAEbWsRvPi>Wt$!2=1XMit03I=ZAq4XHngP`0n>+Gmdn49wx& zoI6@pn+Uzo>xtN~%*hicX{dED`$;+`T07k*0OPR_TndqQRA$(@#ClbtgD<^47f*T%0 zBJ`KafwEo_p}qN+Xyv=wgH3;0Rf=e(kI(Hmx$jD!EY>*!=ZqzWA6ht@nWUa@V3?(Y z4i#x-x)kKiA_TY9XKcS_yOc!m4JI*?N_2c=hdgO;@;|;3J;i%ofr;1~`>YKxi=h4E ztuIsAKxHr4vLE?h%rB+xfLB06CmKKEX7NZri+#4>IYcGWg8zrzYe@8qc)1n7 z*oBg5cI1l$d5dppT+>Oh0KnZ_M`g5_Z+ke4ep}u$%t- zCs8R9tNsWv78vbWq}INwKW>S}F-!5a4{?L&1oE6oOkoV^{tMEUlrp4)pnQ;{+hn2# zr{RfH8jaxj!YUR1)9wa$HKba4yGHf6R6Gi#{8~(E{x+$a|8$_p)b|y!jVPJ*F#ssz zFw`<>Wl5wGypO0$eNY(Oxi!@FI|$-xytCV5TOqLg`zyv>dhlewtJ=Og7Qi^kG(Az( z*E$c>UeC5AXg+6`wpJxxi17G*w72bc8DsNhU%AAlEYm|prN89?1k;g|K)2d@8RrEA zGy#2U4(+=0$5(fT} zXnidywM{-4jNdIz?jt8Z)tNk!QA}i|g@}eijKv*cQt%L^1a#s7$(MsKJhlsSACqC| zJe+Mp6)yN=d+Z)#DI+=d;InMGY7C~gJ zj)G|1rPXzjcY4InQhe(0*fN>JJaj?Yy)qnRyblXd_-pL7bob>a^^yfHf+wB=afjWD zuxi$hYk5fx=>S(vEG8Wrm>^l>@cY?HG;`LM@-oh|@uRzph)+({%#xVC3Vm{@h2+*& zX9CA41@hW#x|!5^-FMi2$T6$O5i2W}JqN?O-+YMR5Z&lQ3foPmDE81u{hzD9DQ<}NW^t^bAanh9aG zJ$f4Hd-`3_GwK_1M3OE`{f#-ypdB;w1cLJyYTk+$6i9pe^*cyl8YHSIw*opk8A^F- z6m*$~uXm(G5Q}I(?F|heKZ8r@)V|8q$b2#)|Hr{zr_cI7|0Jii6%b1}Lu>9wuX>mC zxcOn&AE+uoZOl!Ahd@MTHnkd^&J!OENNh%1k+&!G3^AI-kgF&Mp77I-+1Fj^_W zqt*10oP)1uFk6@$T;)< zhw25tXdz6LKqG-P?Nxpk{BK-O@`zygbtf|zNDGhyUL*Y4E~_xu!G%Vj_IiqZ zNqqtM8#OfgbJP!Q#sjdKgfnSb=U}jjW>EJHoNIO6ORSL8?K$5s`svbl+0P+;u$1Ch z^-JAuoUSfBC$E%P5e)Jj>;)en_8HUw=VmXJV&%pHQKPJi-aWnj*t9CGsPWw6PfgV5 zCcQ7lng{sO(ytuYj!A}NAwsEv+bh#6OSJ)s!a;Ewapa2nKpuTlV5PIQRGQb$-V*1R6~ z(lPSa1#yP{o2&>ErECnQ1tVQ_jVmsb-MFkBVfy8}Qnm{s{QKoV22%={kA$QC*mTjh z@-Ykgvbk73Q>D#8d$D*Zj%z*EmQC=aL!vKm&Fbar|st0#$La%3Efyu}h3 z2i5o;&*a@n$c2PD21}z^D3Rv}PE5m(WjxbUp=`F(>b^d9eF?QB!HX!AqGH9AR`Wb1~t-s&o8OX zw6J>kWk=~z_pf}!$b&gKo@o=dtHvspLc-C@Q03U{jaFE0;vI(l((TW;#n`ZUUG8pZ zH#cFc1`w>C2k6bnHvbQyA+-{JoBjlfX6ogcb4b6@19szo;d;zoB`e-{X7CuY;VK23 zfkiUYNz0H9HqKE*WiMCWeW3>APV8MVkf)m-qq!QnnKLF_mHzRosCQwdWtprP$1Biy zipX#@|7G5KUt-~t1Y6U7gvWX5U)=a=Jl%L?_>ViAZ0YDypJM+w~1a*{ULiX_SIyP#$|^SCv@rAs0eWDOrb zuOW#^=nW}jjTUQ7Jt_(-%gz-1Jv*y$78xvdRkF-dHS%M;L>F<>c)q>~y~bVs@S0Or z!JHGARZ@Qb19bMN86le*N?35$!;mx@AENX|cIY#wrp3vdX{W75J_}TXMZl86mZPEV zitc&WP%aW^?Q}pWC;0NCijQxyiznG7$lrDTZJ4soC$(>1)UIDobsBqj%B(_#MfL@8loeb;CU^RAEe2dJ^YJfAdz$6 zUHLLuHdt$1kW9`L_++s^0dn*%(*$!JgGzt$2UW*2_;9NZj9vI z>>vTvY_TAPXyj^JL*9De-C%Y+r^q6pH$i(*cxVh6i?O=#YB*w^%HQP`+ z4-3GmE#&}F>eb4me0xu0N@AXO*tb@ZOFtXJ7@FtAgtBJ*N$0_%Ec^DBE(?-6`-|kH zE0ACaC;0C==a+fg6jMLhG+y$uQp@WIezt5)@Lh-bG;Zi6XUk0GM#7~Ii<2;EI%!|d zc7L6Fj9s38p#mm$bNz^LN?dV1YL`+t7RZzNv5O7frn{he+Fxu&_Qv53nQfvvS*-Xj z?>Fh4*I((w#-Luc)%zt!Ba&a$+p@p^pk-F!u6U4Jul`nt$duQGX2Fj%*ET?0HS~7; zaX^tJ_F0kSI5H?CeoM1NMjmFgsQl(uS~Z+|dPX1_`Wk2GsMr{2ny?9)w&Z%?cVd3=)``nwSdn8Bup5pMJ&ZQvev|o+RLN&7xn|d`ZaimC^MemV8wFRIYEdAa zc@&h7<>mI7q@$T5d=9F9djcVAB0f)P(Us0}hDU#`MZ#l>@oo5Pv9_zt4|l#$zNAEV zbF=sXRM{7zQKrZVpMojfl^P4!7CFUpPIk`Lv@o@lwLbfFo!-Wd_VRyF zzXM21Y~DK;76&znv9)oYX4HSm%AW71ByAy(9#yUq7lJ_Zua zFfF#<%dt?Pnn7Z_S$)EeQwSQ1J=p6+EznzhQQ&J6_G51#86@0d{*j;%KCEry>BPB(oAi`t z(W%pNgRYc*d+wQe^|hzQse3oC_a7OEP&qP^OtQnLRfhX5--@h=eEZ^$;@u*2TWPz(Q7=G(5o5Q|Ct-THRgQh%~ z6T+9}Sv#C;6x8|Mj8j>0#K+G1fGP}JQCx72?wF>Z^DK&OimvavFth)c_L(Ma zP>8*T%``)uRboe@4S>7agVh+2GCV$*6RdVPI&Iywr)y=CD~oKsIItB=0=M1SvbsVy05Xk8`shbQ1)?^^Hn6vS6+vs3c zluINVo_Uu9@{?qh5<@dzS{I%}67~Cg2-lc1ItNukLAg2!opKbB8exQsTeK&>dPQQZ ze2txotk9Dv)h|84Y?p)83`UBmZ{)+ExKMeuS;nQ&f?uHZQQEpO`6!KL(9U%Hv=CvB~6Y`77arPkZ)RaZQ`lvKog*}{R_-`Gp_|Buv>%MZ~yudIM`9|df z;o`JSR`(0#5b*DMR7eh=BW~ldyd8;qy_bFk=&^@K&mP`+^Pv!t+}j43KN!w*-dUa7 zQ1Z6`tZ?U{~ z)o0xiOqC@&awqEBuCeDuvvHg@sDxmg;9Tst)h+XgL=X z&e@9RJwd5_fQj6k-*v7*LRT#Z9FDY_P4+mSu4i4la5yK;hGGkEDe-YmPKgoxcc7q( zX=ke~D~tIrNFM*1BqE*STX`%)$^nbYs)(T;0YpWd5N_@; z)DbUqpdW-$Ds8Kq45_jnc>{t|&ycoT&5nQlN+SaatBOsYf!pj3Oop_V5XpQmzvJ{~ zvgVxn))&5Od^O~Po;7Su- z-+?E*e=o(!rMlbR-fgK(*iW;}y84%p)k7`e$J9Z5ocSCG0|Xn4tF9`a6cLR2Zrvl{ zUHa4P%<`m!PIrBK_Rd}8ifL2j-TEY;)pBW|%xg4X?x(dPt@)x>N%_-6S_BWOF+CKJ zYk69Xgl)$>sJJ(SJ?R`iqZ{ z{Mja%T3@K0-Cg}oDsQse-54;aoEyXoRC3{RhZR0B^RcP%|4?OA7qPOfUHYO@0jGB4 z!P??@IX`;;hDljyeH@Tp%}<@-#%vr3H0@`y8^PO>hHavw<@1Nd zaNE-sXNl76CFQOvg@rwWOzL6wK4MWiL|W9VwLu%S+)#L;X~lakoi?A$ogFW|3eXGP zoaUPQB{DU+_laPNDUL`dNA&DD#+`n#l_VnK_xSW*Izr*a?$YMXUe;$$T&PM>7d3*n zS~qwy8yHx}cSQ&b>mGF{5uIly(J#)-Q?#F*V9qR2PaV+!drhl~{3{Xo2^oixk&wcY zh@jfqM1K54dW=LRl8BL~P26Vr{}d8%njVu{bS>gyP4 J*JwJ%{|~9m!7Bg& literal 0 HcmV?d00001 diff --git a/premake/premake5.lua b/premake/premake5.lua new file mode 100644 index 0000000..26b476a --- /dev/null +++ b/premake/premake5.lua @@ -0,0 +1,43 @@ +-- _ACTION is a premake global variable and for our usage will be vs2012, vs2013, etc. +-- Strip "vs" from this string to make a suffix for solution and project files. +_SUFFIX = string.gsub(_ACTION, "vs", "") + +workspace "VulkanSample" +configurations { "Debug", "Release" } +platforms { "x64" } +location "../build" +filename ("VulkanSample_" .. _SUFFIX) +startproject "VulkanSample" + +filter "platforms:x64" +system "Windows" +architecture "x64" +includedirs { "../third_party/mathfu-1.1.0/include" } +libdirs { "$(VULKAN_SDK)\\Bin" } + +project "VulkanSample" +kind "ConsoleApp" +language "C++" +location "../build" +filename ("VulkanSample_" .. _SUFFIX) +targetdir "../bin" +objdir "../build/Desktop_%{_SUFFIX}/%{cfg.platform}/%{cfg.buildcfg}" +floatingpoint "Fast" +files { "../src/*.h", "../src/*.cpp" } +links { "vulkan-1" } +flags { "NoPCH", "FatalWarnings" } +characterset "Unicode" +defines { "WIN32", "_CONSOLE", "PROFILE", "_WINDOWS", "_WIN32_WINNT=0x0601" } + +filter "configurations:Debug" +defines { "_DEBUG", "DEBUG" } +flags { } +targetsuffix ("_Debug_" .. _SUFFIX) +buildoptions { "/MDd" } + +filter "configurations:Release" +defines { "NDEBUG" } +optimize "On" +flags { "LinkTimeOptimization" } +targetsuffix ("_Release_" .. _SUFFIX) +buildoptions { "/MD" } diff --git a/src/Doxyfile b/src/Doxyfile new file mode 100644 index 0000000..52a4ff1 --- /dev/null +++ b/src/Doxyfile @@ -0,0 +1,2492 @@ +# Doxyfile 1.8.13 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a double hash (##) is considered a comment and is placed in +# front of the TAG it is preceding. +# +# All text after a single hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists, items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (\" \"). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all text +# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv +# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv +# for the list of possible encodings. +# The default value is: UTF-8. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by +# double-quotes, unless you are using Doxywizard) that should identify the +# project for which the documentation is generated. This name is used in the +# title of most generated pages and in a few other places. +# The default value is: My Project. + +PROJECT_NAME = "Vulkan Memory Allocator" + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. This +# could be handy for archiving the generated documentation or if some version +# control system is used. + +PROJECT_NUMBER = + +# Using the PROJECT_BRIEF tag one can provide an optional one line description +# for a project that appears at the top of each page and should give viewer a +# quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify a logo or an icon that is included +# in the documentation. The maximum height of the logo should not exceed 55 +# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy +# the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path +# into which the generated documentation will be written. If a relative path is +# entered, it will be relative to the location where doxygen was started. If +# left blank the current directory will be used. + +OUTPUT_DIRECTORY = ../doc + +# 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 +# will distribute the generated files over these directories. Enabling this +# option can be useful when feeding doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise causes +# performance problems for the file system. +# The default value is: NO. + +CREATE_SUBDIRS = NO + +# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# characters to appear in the names of generated files. If set to NO, non-ASCII +# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode +# U+3044. +# The default value is: NO. + +ALLOW_UNICODE_NAMES = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, +# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), +# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, +# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), +# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, +# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, +# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, +# Ukrainian and Vietnamese. +# The default value is: English. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# descriptions after the members that are listed in the file and class +# documentation (similar to Javadoc). Set to NO to disable this. +# The default value is: YES. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# description of a member or function before the detailed description +# +# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. +# The default value is: YES. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator that is +# used to form the text in various listings. Each string in this list, if found +# as the leading text of the brief description, will be stripped from the text +# and the result, after processing the whole list, is used as the annotated +# text. Otherwise, the brief description is used as-is. If left blank, the +# following values are used ($name is automatically replaced with the name of +# the entity):The $name class, The $name widget, The $name file, is, provides, +# specifies, contains, represents, a, an and the. + +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# doxygen will generate a detailed section even if there is only a brief +# description. +# The default value is: NO. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. +# The default value is: NO. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# before files name in the file list and in the header files. If set to NO the +# shortest path that makes the file name unique will be used +# The default value is: YES. + +FULL_PATH_NAMES = YES + +# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. +# Stripping is only done if one of the specified strings matches the left-hand +# part of the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the path to +# strip. +# +# Note that you can specify absolute paths here, but also relative paths, which +# will be relative from the directory where doxygen is started. +# This tag requires that the tag FULL_PATH_NAMES is set to YES. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the +# path mentioned in the documentation of a class, which tells the reader which +# header file to include in order to use a class. If left blank only the name of +# the header file containing the class definition is used. Otherwise one should +# specify the list of include paths that are normally passed to the compiler +# using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but +# less readable) file names. This can be useful is your file systems doesn't +# support long names like on DOS, Mac, or CD-ROM. +# The default value is: NO. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the +# first line (until the first dot) of a Javadoc-style comment as the brief +# description. If set to NO, the Javadoc-style will behave just like regular Qt- +# style comments (thus requiring an explicit @brief command for a brief +# description.) +# The default value is: NO. + +JAVADOC_AUTOBRIEF = NO + +# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first +# line (until the first dot) of a Qt-style comment as the brief description. If +# set to NO, the Qt-style will behave just like regular Qt-style comments (thus +# requiring an explicit \brief command for a brief description.) +# The default value is: NO. + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# multi-line C++ special comment block (i.e. a block of //! or /// comments) as +# a brief description. This used to be the default behavior. The new default is +# to treat a multi-line C++ comment block as a detailed description. Set this +# tag to YES if you prefer the old behavior instead. +# +# Note that setting this tag to YES also means that rational rose comments are +# not recognized any more. +# The default value is: NO. + +MULTILINE_CPP_IS_BRIEF = NO + +# 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. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# page for each member. If set to NO, the documentation of a member will be part +# of the file/class/namespace that contains it. +# The default value is: NO. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen +# uses this value to replace tabs by spaces in code fragments. +# Minimum value: 1, maximum value: 16, default value: 4. + +TAB_SIZE = 4 + +# This tag can be used to specify a number of aliases that act as commands in +# the documentation. An alias has the form: +# name=value +# For example adding +# "sideeffect=@par Side Effects:\n" +# will allow you to put the command \sideeffect (or @sideeffect) in the +# documentation, which will result in a user-defined paragraph with heading +# "Side Effects:". You can put \n's in the value part of an alias to insert +# newlines. + +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 +# members will be omitted, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_FOR_C = NO + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or +# Python sources only. Doxygen will then generate output that is more tailored +# for that language. For instance, namespaces will be presented as packages, +# qualified scopes will look different, etc. +# The default value is: NO. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources. Doxygen will then generate output that is tailored for Fortran. +# The default value is: NO. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for VHDL. +# The default value is: NO. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# 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, +# C#, C, C++, D, PHP, Objective-C, Python, 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. 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. + +EXTENSION_MAPPING = + +# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# according to the Markdown format, which allows for more readable +# documentation. See http://daringfireball.net/projects/markdown/ for details. +# The output of markdown processing is further processed by doxygen, so you can +# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# case of backward compatibilities issues. +# The default value is: YES. + +MARKDOWN_SUPPORT = YES + +# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up +# to that level are automatically included in the table of contents, even if +# they do not have an id attribute. +# Note: This feature currently applies only to Markdown headings. +# Minimum value: 0, maximum value: 99, default value: 0. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +TOC_INCLUDE_HEADINGS = 0 + +# When enabled doxygen tries to link words that correspond to documented +# classes, or namespaces to their corresponding documentation. Such a link can +# be prevented in individual cases by putting a % sign in front of the word or +# globally by setting AUTOLINK_SUPPORT to NO. +# The default value is: YES. + +AUTOLINK_SUPPORT = YES + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should set this +# tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); +# versus func(std::string) {}). This also make the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. +# The default value is: NO. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. +# The default value is: NO. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: +# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen +# will parse them like normal C++ but will assume all classes use public instead +# of private inheritance when no explicit protection keyword is present. +# The default value is: NO. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate +# getter and setter methods for a property. Setting this option to YES will make +# doxygen to replace the get and set methods by a property in the documentation. +# This will only work if the methods are indeed getting or setting a simple +# type. If this is not the case, or you want to show the methods anyway, you +# should set this option to NO. +# The default value is: YES. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. +# The default value is: NO. + +DISTRIBUTE_GROUP_DOC = NO + +# If one adds a struct or class to a group and this option is enabled, then also +# any nested class or struct is added to the same group. By default this option +# is disabled and one has to add nested compounds explicitly via \ingroup. +# The default value is: NO. + +GROUP_NESTED_COMPOUNDS = NO + +# Set the SUBGROUPING tag to YES to allow class member groups of the same type +# (for instance a group of public functions) to be put as a subgroup of that +# type (e.g. under the Public Functions section). Set it to NO to prevent +# subgrouping. Alternatively, this can be done per class using the +# \nosubgrouping command. +# The default value is: YES. + +SUBGROUPING = YES + +# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions +# are shown inside the group in which they are included (e.g. using \ingroup) +# instead of on a separate page (for HTML and Man pages) or section (for LaTeX +# and RTF). +# +# Note that this feature does not work in combination with +# SEPARATE_MEMBER_PAGES. +# The default value is: NO. + +INLINE_GROUPED_CLASSES = NO + +# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions +# with only public data fields or simple typedef fields will be shown inline in +# the documentation of the scope in which they are defined (i.e. file, +# namespace, or group documentation), provided this scope is documented. If set +# to NO, structs, classes, and unions are shown on a separate page (for HTML and +# Man pages) or section (for LaTeX and RTF). +# The default value is: NO. + +INLINE_SIMPLE_STRUCTS = NO + +# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or +# enum is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically be +# useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. +# The default value is: NO. + +TYPEDEF_HIDES_STRUCT = NO + +# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This +# cache is used to resolve symbols given their name and scope. Since this can be +# an expensive process and often the same symbol appears multiple times in the +# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# doxygen will become slower. If the cache is too large, memory is wasted. The +# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range +# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 +# symbols. At the end of a run doxygen will report the cache usage and suggest +# the optimal cache size from a speed point of view. +# Minimum value: 0, maximum value: 9, default value: 0. + +LOOKUP_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# documentation are documented, even if no documentation was available. Private +# class members and static file members will be hidden unless the +# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. +# Note: This will also disable the warnings about undocumented members that are +# normally produced when WARNINGS is set to YES. +# The default value is: NO. + +EXTRACT_ALL = YES + +# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will +# be included in the documentation. +# The default value is: NO. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal +# scope will be included in the documentation. +# The default value is: NO. + +EXTRACT_PACKAGE = NO + +# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be +# included in the documentation. +# The default value is: NO. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined +# locally in source files will be included in the documentation. If set to NO, +# only classes defined in header files are included. Does not have any effect +# for Java sources. +# The default value is: YES. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. If set to YES, local methods, +# which are defined in the implementation section but not in the interface are +# included in the documentation. If set to NO, only methods in the interface are +# included. +# The default value is: NO. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base name of +# the file that contains the anonymous namespace. By default anonymous namespace +# are hidden. +# The default value is: NO. + +EXTRACT_ANON_NSPACES = NO + +# 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 +# section is generated. This option has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. If set +# to NO, these classes will be included in the various overviews. This option +# has no effect if EXTRACT_ALL is enabled. +# The default value is: NO. + +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. +# The default value is: NO. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# documentation blocks found inside the body of a function. If set to NO, these +# blocks will be appended to the function's detailed documentation block. +# The default value is: NO. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation that is typed after a +# \internal command is included. If the tag is set to NO then the documentation +# will be excluded. Set it to YES to include the internal documentation. +# The default value is: NO. + +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 +# and Mac users are advised to set this option to NO. +# The default value is: system dependent. + +CASE_SENSE_NAMES = NO + +# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# their full class and namespace scopes in the documentation. If set to YES, the +# scope will be hidden. +# The default value is: NO. + +HIDE_SCOPE_NAMES = NO + +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# append additional text to a page's title, such as Class Reference. If set to +# YES the compound reference will be hidden. +# The default value is: NO. + +HIDE_COMPOUND_REFERENCE= NO + +# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# the files that are included by a file in the documentation of that file. +# The default value is: YES. + +SHOW_INCLUDE_FILES = YES + +# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each +# grouped member an include statement to the documentation, telling the reader +# which file to include in order to use the member. +# The default value is: NO. + +SHOW_GROUPED_MEMB_INC = NO + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# files with double quotes in the documentation rather than with sharp brackets. +# The default value is: NO. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the +# documentation for inline members. +# The default value is: YES. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# (detailed) documentation of file and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. +# The default value is: YES. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# descriptions of file, namespace and class members alphabetically by member +# name. If set to NO, the members will appear in declaration order. Note that +# this will also influence the order of the classes in the class list. +# The default value is: NO. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# (brief and detailed) documentation of class members so that constructors and +# destructors are listed first. If set to NO the constructors will appear in the +# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. +# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief +# member documentation. +# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting +# detailed member documentation. +# The default value is: NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# of group names into alphabetical order. If set to NO the group names will +# appear in their defined order. +# The default value is: NO. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by +# fully-qualified names, including namespaces. If set to NO, the class list will +# be sorted only by class name, not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the alphabetical +# list. +# The default value is: NO. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# type resolution of all parameters of a function it will reject a match between +# the prototype and the implementation of a member function even if there is +# only one candidate or it is obvious which candidate to choose by doing a +# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# accept a match between prototype and implementation in such cases. +# The default value is: NO. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo +# list. This list is created by putting \todo commands in the documentation. +# The default value is: YES. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test +# list. This list is created by putting \test commands in the documentation. +# The default value is: YES. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug +# list. This list is created by putting \bug commands in the documentation. +# The default value is: YES. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) +# the deprecated list. This list is created by putting \deprecated commands in +# the documentation. +# The default value is: YES. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional documentation +# sections, marked by \if ... \endif and \cond +# ... \endcond blocks. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the +# initial value of a variable or macro / define can have for it to appear in the +# documentation. If the initializer consists of more lines than specified here +# it will be hidden. Use a value of 0 to hide initializers completely. The +# appearance of the value of individual variables and macros / defines can be +# controlled using \showinitializer or \hideinitializer command in the +# documentation regardless of this setting. +# Minimum value: 0, maximum value: 10000, default value: 30. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at +# the bottom of the documentation of classes and structs. If set to YES, the +# list will mention the files that were used to generate the documentation. +# The default value is: YES. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This +# will remove the Files entry from the Quick Index and from the Folder Tree View +# (if specified). +# The default value is: YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces +# page. This will remove the Namespaces entry from the Quick Index and from the +# Folder Tree View (if specified). +# The default value is: YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command command input-file, where command is the value of the +# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided +# by doxygen. Whatever the program writes to standard output is used as the file +# version. For an example see the documentation. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. To create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. You can +# optionally specify a file name after the option, if omitted DoxygenLayout.xml +# will be used as the name of the layout file. +# +# Note that if you run doxygen from a directory containing a file called +# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# tag is left empty. + +LAYOUT_FILE = + +# The CITE_BIB_FILES tag can be used to specify one or more bib files containing +# the reference definitions. This must be a list of .bib files. The .bib +# extension is automatically appended if omitted. This requires the bibtex tool +# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info. +# For LaTeX the style of the bibliography can be controlled using +# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the +# search path. See also \cite for info how to create references. + +CITE_BIB_FILES = + +#--------------------------------------------------------------------------- +# Configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated to +# standard output by doxygen. If QUIET is set to YES this implies that the +# messages are off. +# The default value is: NO. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# this implies that the warnings are on. +# +# Tip: Turn warnings on while writing the documentation. +# The default value is: YES. + +WARNINGS = YES + +# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: YES. + +WARN_IF_UNDOCUMENTED = YES + +# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some parameters +# in a documented function, or documenting parameters that don't exist or using +# markup commands wrongly. +# The default value is: YES. + +WARN_IF_DOC_ERROR = YES + +# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that +# are documented, but have no documentation for their parameters or return +# value. If set to NO, doxygen will only warn about wrong or incomplete +# parameter documentation, but not about the absence of documentation. +# The default value is: NO. + +WARN_NO_PARAMDOC = NO + +# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# a warning is encountered. +# The default value is: NO. + +WARN_AS_ERROR = NO + +# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# can produce. The string should contain the $file, $line, and $text tags, which +# will be replaced by the file and line number from which the warning originated +# and the warning text. Optionally the format may contain $version, which will +# be replaced by the version of the file (if it could be obtained via +# FILE_VERSION_FILTER) +# The default value is: $file:$line: $text. + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning and error +# messages should be written. If left blank the output is written to standard +# error (stderr). + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# Configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag is used to specify the files and/or directories that contain +# documented source files. You may enter file names like myfile.cpp or +# directories like /usr/src/myproject. Separate the files or directories with +# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING +# Note: If this tag is empty the current directory is searched. + +INPUT = 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: http://www.gnu.org/software/libiconv) for the list of +# possible encodings. +# The default value is: UTF-8. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and +# *.h) to filter out the source-files in the directories. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# read by doxygen. +# +# 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 and *.qsf. + +FILE_PATTERNS = *.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 + +# The RECURSIVE tag can be used to specify whether or not subdirectories should +# be searched for input files as well. +# The default value is: NO. + +RECURSIVE = NO + +# 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 +# subdirectory from a directory tree whose root is specified with the INPUT tag. +# +# Note that relative paths are relative to the directory from which doxygen is +# run. + +EXCLUDE = + +# 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 +# from the input. +# The default value is: NO. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test +# +# Note that the wildcards are matched against the file with absolute path, so to +# exclude all test directories use the pattern */test/* + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or directories +# that contain example code fragments that are included (see the \include +# command). + +EXAMPLE_PATH = + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and +# *.h) to filter out the source-files in the directories. If left blank all +# files are included. + +EXAMPLE_PATTERNS = * + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude commands +# irrespective of the value of the RECURSIVE tag. +# The default value is: NO. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or directories +# that contain images that are to be included in the documentation (see the +# \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command: +# +# +# +# where is the value of the INPUT_FILTER tag, and is the +# name of an input file. Doxygen will then use the output that the filter +# program writes to standard output. If FILTER_PATTERNS is specified, this tag +# will be ignored. +# +# Note that the filter must not add or remove lines; it is applied before the +# code is scanned, but not when the output code is generated. If lines are added +# or removed, the anchors will not be placed correctly. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. The filters are a list of the form: pattern=filter +# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how +# filters are used. If the FILTER_PATTERNS tag is empty or if none of the +# patterns match the file name, INPUT_FILTER is applied. +# +# Note that for custom extensions or not directly supported extensions you also +# need to set EXTENSION_MAPPING for the extension otherwise the files are not +# properly processed by doxygen. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will also be used to filter the input files that are used for +# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). +# The default value is: NO. + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and +# it is also possible to disable source filtering for a specific pattern using +# *.ext= (so without naming a filter). +# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. + +FILTER_SOURCE_PATTERNS = + +# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that +# is part of the input, its contents will be placed on the main page +# (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. + +USE_MDFILE_AS_MAINPAGE = + +#--------------------------------------------------------------------------- +# Configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will be +# generated. Documented entities will be cross-referenced with these sources. +# +# Note: To get rid of all source code in the generated output, make sure that +# also VERBATIM_HEADERS is set to NO. +# The default value is: NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body of functions, +# classes and enums directly into the documentation. +# The default value is: NO. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# special comment blocks from generated source code fragments. Normal C, C++ and +# Fortran comments will always remain visible. +# The default value is: YES. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES then for each documented +# function all documented functions referencing it will be listed. +# The default value is: NO. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES then for each documented function +# all documented entities called/used by that function will be listed. +# The default value is: NO. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set +# to YES then the hyperlinks from functions in REFERENCES_RELATION and +# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will +# link to the documentation. +# The default value is: YES. + +REFERENCES_LINK_SOURCE = YES + +# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the +# source code will show a tooltip with additional information such as prototype, +# brief description and links to the definition and documentation. Since this +# will make the HTML file larger and loading of large files a bit slower, you +# can opt to disable this feature. +# The default value is: YES. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +SOURCE_TOOLTIPS = YES + +# If the USE_HTAGS tag is set to YES then the references to source code will +# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# source browser. The htags tool is part of GNU's global source tagging system +# (see http://www.gnu.org/software/global/global.html). You will need version +# 4.8.6 or higher. +# +# To use it do the following: +# - Install the latest version of global +# - Enable SOURCE_BROWSER and USE_HTAGS in the config file +# - Make sure the INPUT points to the root of the source tree +# - Run doxygen as normal +# +# Doxygen will invoke htags (and that will in turn invoke gtags), so these +# tools must be available from the command line (i.e. in the search path). +# +# The result: instead of the source browser generated by doxygen, the links to +# source code will now point to the output of htags. +# The default value is: NO. +# This tag requires that the tag SOURCE_BROWSER is set to YES. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# verbatim copy of the header file for each class for which an include is +# specified. Set to NO to disable this. +# See also: Section \class. +# The default value is: YES. + +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. +# 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 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 +# specified with INPUT and INCLUDE_PATH. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. + +CLANG_OPTIONS = + +#--------------------------------------------------------------------------- +# Configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all +# compounds will be generated. Enable this if the project contains a lot of +# classes, structs, unions or interfaces. +# The default value is: YES. + +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 +# while generating the index headers. +# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# The default value is: YES. + +GENERATE_HTML = YES + +# 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 +# it. +# The default directory is: html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each +# generated HTML page (for example: .htm, .php, .asp). +# The default value is: .html. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a user-defined HTML header file for +# each generated HTML page. If the tag is left blank doxygen will generate a +# standard header. +# +# To get valid HTML the header file that includes any scripts and style sheets +# that doxygen needs, which is dependent on the configuration options used (e.g. +# the setting GENERATE_TREEVIEW). It is highly recommended to start with a +# default header using +# doxygen -w html new_header.html new_footer.html new_stylesheet.css +# YourConfigFile +# and then modify the file new_header.html. See also section "Doxygen usage" +# for information on how to generate the default header that doxygen normally +# uses. +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of doxygen. For a description +# of the possible markers and block names see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each +# generated HTML page. If the tag is left blank doxygen will generate a standard +# footer. See HTML_HEADER for more information on how to generate a default +# footer and what special commands can be used inside the footer. See also +# section "Doxygen usage" for information on how to generate the default footer +# that doxygen normally uses. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style +# sheet that is used by each HTML page. It can be used to fine-tune the look of +# the HTML output. If left blank doxygen will generate a default style sheet. +# See also section "Doxygen usage" for information on how to generate the style +# sheet that doxygen normally uses. +# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as +# it is more robust and this tag (HTML_STYLESHEET) will in the future become +# obsolete. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_STYLESHEET = + +# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined +# cascading style sheets that are included after the standard style sheets +# created by doxygen. Using this option one can overrule certain style aspects. +# This is preferred over using HTML_STYLESHEET since it does not replace the +# standard style sheet and is therefore more robust against future updates. +# Doxygen will copy the style sheet files to the output directory. +# Note: The order of the extra style sheet files is of importance (e.g. the last +# style sheet in the list overrules the setting of the previous ones in the +# list). For an example see the documentation. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_STYLESHEET = + +# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the HTML output directory. Note +# that these files will be copied to the base HTML output directory. Use the +# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these +# files. In the HTML_STYLESHEET file, use the file name only. Also note that the +# files will be copied as-is; there are no commands or markers available. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_EXTRA_FILES = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen +# will adjust the colors in the style sheet and background images according to +# this color. Hue is specified as an angle on a colorwheel, see +# http://en.wikipedia.org/wiki/Hue for more information. For instance the value +# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 +# purple, and 360 is red again. +# Minimum value: 0, maximum value: 359, default value: 220. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors +# in the HTML output. For a value of 0 the output will use grayscales only. A +# value of 255 will produce the most vivid colors. +# Minimum value: 0, maximum value: 255, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the +# luminance component of the colors in the HTML output. Values below 100 +# gradually make the output lighter, whereas values above 100 make the output +# darker. The value divided by 100 is the actual gamma applied, so 80 represents +# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not +# change the gamma. +# Minimum value: 40, maximum value: 240, default value: 80. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting this +# to YES can help to show when doxygen was last run and thus if the +# documentation is up to date. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_TIMESTAMP = NO + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_DYNAMIC_SECTIONS = NO + +# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries +# shown in the various tree structured indices initially; the user can expand +# and collapse entries dynamically later on. Doxygen will expand the tree to +# such a level that at most the specified number of entries are visible (unless +# a fully collapsed tree already exceeds this amount). So setting the number of +# entries 1 will produce a full collapsed tree by default. 0 is a special value +# representing an infinite number of entries and will result in a full expanded +# tree by default. +# Minimum value: 0, maximum value: 9999, default value: 100. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_INDEX_NUM_ENTRIES = 100 + +# 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: http://developer.apple.com/tools/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 http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_DOCSET = NO + +# This tag determines the name of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# The default value is: Doxygen generated docs. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# This tag specifies a string that should uniquely identify the documentation +# set bundle. This should be a reverse domain-name style string, e.g. +# com.mycompany.MyDocSet. Doxygen will append .docset to the name. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. +# The default value is: org.doxygen.Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. +# The default value is: Publisher. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_PUBLISHER_NAME = Publisher + +# 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: http://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 +# files are now used as the Windows 98 help format, and will replace the old +# Windows help format (.hlp) on all Windows platforms in the future. Compressed +# HTML files also contain an index, a table of contents, and you can search for +# words in the documentation. The HTML workshop also contains a viewer for +# compressed HTML files. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_HTMLHELP = NO + +# The CHM_FILE tag can be used to specify the file name of the resulting .chm +# file. You can add a path in front of the file if the result should not be +# written to the html output directory. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_FILE = + +# The HHC_LOCATION tag can be used to specify the location (absolute path +# including file name) of the HTML help compiler (hhc.exe). If non-empty, +# doxygen will try to run the HTML help compiler on the generated index.hhp. +# The file has to be specified with full path. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +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). +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +GENERATE_CHI = NO + +# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) +# and project file content. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +CHM_INDEX_ENCODING = + +# The BINARY_TOC flag controls whether a binary table of contents is generated +# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it +# enables the Previous and Next buttons. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members to +# the table of contents of the HTML help documentation and to the tree view. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTMLHELP is set to YES. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that +# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help +# (.qch) of the generated HTML documentation. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify +# the file name of the resulting .qch file. The path specified is relative to +# the HTML output folder. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QCH_FILE = + +# 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: http://qt-project.org/doc/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. + +QHP_NAMESPACE = org.doxygen.Project + +# 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: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual- +# folders). +# The default value is: doc. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_VIRTUAL_FOLDER = doc + +# 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: http://qt-project.org/doc/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: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom- +# filters). +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's filter section matches. Qt Help Project / Filter Attributes (see: +# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes). +# This tag requires that the tag GENERATE_QHP is set to YES. + +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. +# This tag requires that the tag GENERATE_QHP is set to YES. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be +# generated, together with the HTML files, they form an Eclipse help plugin. To +# install this plugin and make it available under the help contents menu in +# Eclipse, the contents of the directory containing the HTML and XML files needs +# to be copied into the plugins directory of eclipse. The name of the directory +# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. +# After copying Eclipse needs to be restarted before the help appears. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the Eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have this +# name. Each documentation set should have its own identifier. +# The default value is: org.doxygen.Project. +# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# If you want full control over the layout of the generated HTML pages it might +# be necessary to disable the index and replace it with your own. The +# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top +# of each HTML page. A value of NO enables the index and the value YES disables +# it. Since the tabs in the index contain the same information as the navigation +# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +DISABLE_INDEX = NO + +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index +# structure should be generated to display hierarchical information. If the tag +# value is set to YES, a side panel will be generated containing a tree-like +# index structure (just like the one that is generated for HTML Help). For this +# to work a browser that supports JavaScript, DHTML, CSS and frames is required +# (i.e. any modern browser). Windows users are probably better off using the +# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can +# further fine-tune the look of the index. As an example, the default style +# sheet generated by doxygen has an example that shows how to put an image at +# the root of the tree instead of the PROJECT_NAME. Since the tree basically has +# the same information as the tab index, you could consider setting +# DISABLE_INDEX to YES when enabling this option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +GENERATE_TREEVIEW = NO + +# 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. +# +# Note that a value of 0 will completely suppress the enum values from appearing +# in the overview section. +# Minimum value: 0, maximum value: 20, default value: 4. +# This tag requires that the tag GENERATE_HTML is set to YES. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used +# to set the initial width (in pixels) of the frame in which the tree is shown. +# Minimum value: 0, maximum value: 1500, default value: 250. +# This tag requires that the tag GENERATE_HTML is set to YES. + +TREEVIEW_WIDTH = 250 + +# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# external symbols imported via tag files in a separate window. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +EXT_LINKS_IN_WINDOW = NO + +# 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 +# output directory to force them to be regenerated. +# Minimum value: 8, maximum value: 50, default value: 10. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are not +# supported properly for IE 6.0, but are supported on all modern browsers. +# +# Note that when changing this option you need to delete any form_*.png files in +# the HTML output directory before the changes have effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see +# http://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 +# to it using the MATHJAX_RELPATH option. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +USE_MATHJAX = NO + +# 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. +# 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. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_FORMAT = HTML-CSS + +# When MathJax is enabled you need to specify the location relative to the HTML +# output directory using the MATHJAX_RELPATH option. The destination directory +# should contain the MathJax.js script. For instance, if the mathjax directory +# is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax +# 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 http://www.mathjax.org before deployment. +# The default value is: http://cdn.mathjax.org/mathjax/latest. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest + +# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax +# extension names that should be enabled during MathJax rendering. For example +# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_EXTENSIONS = + +# 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 +# example see the documentation. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_CODEFILE = + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box for +# the HTML output. The underlying search engine uses javascript and DHTML and +# should work on any modern browser. Note that when using HTML help +# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) +# there is already a search function so this one should typically be disabled. +# For large projects the javascript based search engine can be slow, then +# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to +# search using the keyboard; to jump to the search box use + S +# (what the is depends on the OS and browser, but it is typically +# , /