aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/um/libsimple/utils
diff options
context:
space:
mode:
Diffstat (limited to 'um/libsimple/utils')
-rw-r--r--um/libsimple/utils/CMakeLists.txt2
-rw-r--r--um/libsimple/utils/exchange_ints.cpp44
2 files changed, 46 insertions, 0 deletions
diff --git a/um/libsimple/utils/CMakeLists.txt b/um/libsimple/utils/CMakeLists.txt
new file mode 100644
index 0000000..8824e3e
--- /dev/null
+++ b/um/libsimple/utils/CMakeLists.txt
@@ -0,0 +1,2 @@
+add_executable(exchange_ints exchange_ints.cpp)
+target_link_libraries(exchange_ints libsimple)
diff --git a/um/libsimple/utils/exchange_ints.cpp b/um/libsimple/utils/exchange_ints.cpp
new file mode 100644
index 0000000..2935b2f
--- /dev/null
+++ b/um/libsimple/utils/exchange_ints.cpp
@@ -0,0 +1,44 @@
+// Copyright (c) 2015 Egor Tensin <Egor.Tensin@gmail.com>
+// This file is part of the "Windows 7 drivers" project.
+// For details, see https://github.com/egor-tensin/windows7-drivers.
+// Distributed under the MIT License.
+
+#include "libsimple/all.hpp"
+
+#include <exception>
+#include <iostream>
+#include <sstream>
+#include <string>
+
+namespace
+{
+ bool parse_int(unsigned int& dest, const std::string& src)
+ {
+ std::istringstream iss(src);
+ char c;
+ return iss >> dest && !iss.get(c);
+ }
+}
+
+int main(int argc, char* argv[])
+{
+ try
+ {
+ unsigned int src;
+
+ if (argc != 2 || !parse_int(src, argv[1]))
+ {
+ std::cout << "Usage: " << argv[0] << " N\n";
+ return 1;
+ }
+
+ std::cout << libsimple::Device().exchange_ints(src) << "\n";
+ }
+ catch (const std::exception& e)
+ {
+ std::cerr << e.what() << "\n";
+ return 1;
+ }
+
+ return 0;
+}