From 47b53b9015deaa2f569d788447254c8bc3de96a9 Mon Sep 17 00:00:00 2001 From: Alexander Karatarakis Date: Thu, 9 Mar 2017 18:24:04 -0800 Subject: Add lazy.h --- toolsrc/include/lazy.h | 26 ++++++++++++++++++++++++++ toolsrc/vcpkglib/vcpkglib.vcxproj | 1 + toolsrc/vcpkglib/vcpkglib.vcxproj.filters | 3 +++ 3 files changed, 30 insertions(+) create mode 100644 toolsrc/include/lazy.h diff --git a/toolsrc/include/lazy.h b/toolsrc/include/lazy.h new file mode 100644 index 000000000..f9dbd8dc7 --- /dev/null +++ b/toolsrc/include/lazy.h @@ -0,0 +1,26 @@ +#pragma once + +namespace vcpkg +{ + template + class lazy + { + public: + lazy() : value(T()), initialized(false) {} + + template + T const& get_lazy(F& f) const + { + if (!initialized) + { + value = f(); + initialized = true; + } + return value; + } + + private: + mutable T value; + mutable bool initialized; + }; +} diff --git a/toolsrc/vcpkglib/vcpkglib.vcxproj b/toolsrc/vcpkglib/vcpkglib.vcxproj index b96dd1050..dd5dd124a 100644 --- a/toolsrc/vcpkglib/vcpkglib.vcxproj +++ b/toolsrc/vcpkglib/vcpkglib.vcxproj @@ -137,6 +137,7 @@ + diff --git a/toolsrc/vcpkglib/vcpkglib.vcxproj.filters b/toolsrc/vcpkglib/vcpkglib.vcxproj.filters index aefba7a49..d701321be 100644 --- a/toolsrc/vcpkglib/vcpkglib.vcxproj.filters +++ b/toolsrc/vcpkglib/vcpkglib.vcxproj.filters @@ -293,5 +293,8 @@ Header Files + + Header Files + \ No newline at end of file -- cgit v1.2.3