aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2017-02-09 18:26:16 -0800
committerAlexander Karatarakis <alkarata@microsoft.com>2017-02-10 14:00:11 -0800
commit47a4bff2d11881f95bd0eb0b659360ff1b7465c0 (patch)
tree6f0bd80f1ccd881822c397d5922a8de2168a7762
parenta0696395afddf492968a76ac38b1c8f14aba0e1f (diff)
downloadvcpkg-47a4bff2d11881f95bd0eb0b659360ff1b7465c0.tar.gz
vcpkg-47a4bff2d11881f95bd0eb0b659360ff1b7465c0.zip
Add vcpkg_Enums
-rw-r--r--toolsrc/include/vcpkg_Enums.h11
-rw-r--r--toolsrc/src/vcpkg_Enums.cpp21
-rw-r--r--toolsrc/vcpkglib/vcpkglib.vcxproj2
-rw-r--r--toolsrc/vcpkglib/vcpkglib.vcxproj.filters6
4 files changed, 40 insertions, 0 deletions
diff --git a/toolsrc/include/vcpkg_Enums.h b/toolsrc/include/vcpkg_Enums.h
new file mode 100644
index 000000000..5c4dc8b06
--- /dev/null
+++ b/toolsrc/include/vcpkg_Enums.h
@@ -0,0 +1,11 @@
+#pragma once
+#include <string>
+
+namespace vcpkg::Enums
+{
+ std::string nullvalue_toString(const std::string& enum_name);
+
+ __declspec(noreturn) void nullvalue_used(const std::string& enum_name);
+
+ __declspec(noreturn) void unreachable(const std::string& enum_name);
+}
diff --git a/toolsrc/src/vcpkg_Enums.cpp b/toolsrc/src/vcpkg_Enums.cpp
new file mode 100644
index 000000000..5e698659d
--- /dev/null
+++ b/toolsrc/src/vcpkg_Enums.cpp
@@ -0,0 +1,21 @@
+#include "pch.h"
+#include "vcpkg_Enums.h"
+#include "vcpkg_Checks.h"
+
+namespace vcpkg::Enums
+{
+ std::string nullvalue_toString(const std::string& enum_name)
+ {
+ return Strings::format("%s_NULLVALUE", enum_name);
+ }
+
+ void nullvalue_used(const std::string& enum_name)
+ {
+ Checks::exit_with_message("NULLVALUE of enum %s was used", enum_name);
+ }
+
+ void unreachable(const std::string& enum_name)
+ {
+ Checks::exit_with_message("Unreachable code for enum, %s", enum_name);
+ }
+}
diff --git a/toolsrc/vcpkglib/vcpkglib.vcxproj b/toolsrc/vcpkglib/vcpkglib.vcxproj
index ad15ea7ea..537b2fb0f 100644
--- a/toolsrc/vcpkglib/vcpkglib.vcxproj
+++ b/toolsrc/vcpkglib/vcpkglib.vcxproj
@@ -165,6 +165,7 @@
<ClInclude Include="..\include\vcpkg_cmd_arguments.h" />
<ClInclude Include="..\include\vcpkg_Commands.h" />
<ClInclude Include="..\include\vcpkg_Dependencies.h" />
+ <ClInclude Include="..\include\vcpkg_Enums.h" />
<ClInclude Include="..\include\vcpkg_Environment.h" />
<ClInclude Include="..\include\vcpkg_Files.h" />
<ClInclude Include="..\include\vcpkg_Graphs.h" />
@@ -227,6 +228,7 @@
<ClCompile Include="..\src\vcpkg_Checks.cpp" />
<ClCompile Include="..\src\vcpkg_cmd_arguments.cpp" />
<ClCompile Include="..\src\vcpkg_Dependencies.cpp" />
+ <ClCompile Include="..\src\vcpkg_Enums.cpp" />
<ClCompile Include="..\src\vcpkg_Environment.cpp" />
<ClCompile Include="..\src\vcpkg_Files.cpp" />
<ClCompile Include="..\src\vcpkg_Input.cpp" />
diff --git a/toolsrc/vcpkglib/vcpkglib.vcxproj.filters b/toolsrc/vcpkglib/vcpkglib.vcxproj.filters
index 99cbf7037..519331b49 100644
--- a/toolsrc/vcpkglib/vcpkglib.vcxproj.filters
+++ b/toolsrc/vcpkglib/vcpkglib.vcxproj.filters
@@ -168,6 +168,9 @@
<ClCompile Include="..\src\PostBuildLint_BuildType.cpp">
<Filter>Source Files</Filter>
</ClCompile>
+ <ClCompile Include="..\src\vcpkg_Enums.cpp">
+ <Filter>Source Files</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\include\package_spec.h">
@@ -290,5 +293,8 @@
<ClInclude Include="..\include\PostBuildLint_BuildType.h">
<Filter>Header Files</Filter>
</ClInclude>
+ <ClInclude Include="..\include\vcpkg_Enums.h">
+ <Filter>Header Files</Filter>
+ </ClInclude>
</ItemGroup>
</Project> \ No newline at end of file