summaryrefslogtreecommitdiffstats
path: root/thirdparty/embree/common/sys/estring.h
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/embree/common/sys/estring.h')
-rw-r--r--thirdparty/embree/common/sys/estring.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/thirdparty/embree/common/sys/estring.h b/thirdparty/embree/common/sys/estring.h
new file mode 100644
index 0000000000..63051ad3c3
--- /dev/null
+++ b/thirdparty/embree/common/sys/estring.h
@@ -0,0 +1,73 @@
+// Copyright 2009-2021 Intel Corporation
+// SPDX-License-Identifier: Apache-2.0
+
+#pragma once
+
+#include "platform.h"
+#include "../math/vec2.h"
+#include "../math/vec3.h"
+#include "../math/vec4.h"
+
+namespace embree
+{
+ class IOStreamStateRestorer
+ {
+ public:
+ IOStreamStateRestorer(std::ostream& iostream)
+ : iostream(iostream), flags(iostream.flags()), precision(iostream.precision()) {
+ }
+
+ ~IOStreamStateRestorer() {
+ iostream.flags(flags);
+ iostream.precision(precision);
+ }
+
+ private:
+ std::ostream& iostream;
+ std::ios::fmtflags flags;
+ std::streamsize precision;
+ };
+
+ struct IndentOStream : public std::streambuf
+ {
+ explicit IndentOStream(std::ostream &ostream, int indent = 2)
+ : streambuf(ostream.rdbuf())
+ , start_of_line(true)
+ , ident_str(indent, ' ')
+ , stream(&ostream)
+ {
+ // set streambuf of ostream to this and save original streambuf
+ stream->rdbuf(this);
+ }
+
+ virtual ~IndentOStream()
+ {
+ if (stream != NULL) {
+ // restore old streambuf
+ stream->rdbuf(streambuf);
+ }
+ }
+
+ protected:
+ virtual int overflow(int ch) {
+ if (start_of_line && ch != '\n') {
+ streambuf->sputn(ident_str.data(), ident_str.size());
+ }
+ start_of_line = ch == '\n';
+ return streambuf->sputc(ch);
+ }
+
+ private:
+ std::streambuf *streambuf;
+ bool start_of_line;
+ std::string ident_str;
+ std::ostream *stream;
+ };
+
+ std::string toLowerCase(const std::string& s);
+ std::string toUpperCase(const std::string& s);
+
+ Vec2f string_to_Vec2f ( std::string str );
+ Vec3f string_to_Vec3f ( std::string str );
+ Vec4f string_to_Vec4f ( std::string str );
+}