summaryrefslogtreecommitdiffstats
path: root/src/Runtime/ogl-runtime/src/foundation/StringConversionImpl.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/Runtime/ogl-runtime/src/foundation/StringConversionImpl.h')
-rw-r--r--src/Runtime/ogl-runtime/src/foundation/StringConversionImpl.h219
1 files changed, 219 insertions, 0 deletions
diff --git a/src/Runtime/ogl-runtime/src/foundation/StringConversionImpl.h b/src/Runtime/ogl-runtime/src/foundation/StringConversionImpl.h
new file mode 100644
index 00000000..c5063e6d
--- /dev/null
+++ b/src/Runtime/ogl-runtime/src/foundation/StringConversionImpl.h
@@ -0,0 +1,219 @@
+/****************************************************************************
+**
+** Copyright (C) 1993-2009 NVIDIA Corporation.
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt 3D Studio.
+**
+** $QT_BEGIN_LICENSE:GPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 or (at your option) any later version
+** approved by the KDE Free Qt Foundation. The licenses are as published by
+** the Free Software Foundation and appearing in the file LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#pragma once
+#ifndef QT3DS_FOUNDATION_STRING_CONVERSION_IMPL_H
+#define QT3DS_FOUNDATION_STRING_CONVERSION_IMPL_H
+#include "foundation/StringConversion.h"
+#include "foundation/Qt3DSMemoryBuffer.h"
+#include "EABase/eabase.h"
+#include "foundation/StringTable.h"
+#include "foundation/Utils.h"
+#include "stdlib.h"
+#include "stdio.h" //snprintf
+#include <QLocale>
+
+#if !defined EA_PLATFORM_WINDOWS
+#define _snprintf snprintf
+#endif
+
+namespace qt3ds {
+namespace foundation {
+
+ template <>
+ struct StringConversion<bool>
+ {
+ QT3DSU32 ToStr(bool item, NVDataRef<char8_t> buffer)
+ {
+ return static_cast<QT3DSU32>(
+ _snprintf(buffer.begin(), buffer.size(), "%s", item ? "True" : "False"));
+ }
+ bool StrTo(const char8_t *buffer, bool &item)
+ {
+ if (AreEqualCaseless(buffer, "True"))
+ item = true;
+ else
+ item = false;
+ return true;
+ }
+ };
+
+ template <>
+ struct StringConversion<QT3DSU8>
+ {
+ QT3DSU32 ToStr(QT3DSU8 item, NVDataRef<char8_t> buffer)
+ {
+ return static_cast<QT3DSU32>(
+ _snprintf(buffer.begin(), buffer.size(), "%hu", static_cast<QT3DSU16>(item)));
+ }
+ bool StrTo(const char8_t *buffer, QT3DSU8 &item)
+ {
+ item = static_cast<QT3DSU8>(strtoul(buffer, NULL, 10));
+ return true;
+ }
+ };
+ template <>
+ struct StringConversion<QT3DSI8>
+ {
+ QT3DSU32 ToStr(QT3DSI8 item, NVDataRef<char8_t> buffer)
+ {
+ return static_cast<QT3DSU32>(
+ _snprintf(buffer.begin(), buffer.size(), "%hd", static_cast<QT3DSI16>(item)));
+ }
+ bool StrTo(const char8_t *buffer, QT3DSI8 &item)
+ {
+ item = static_cast<QT3DSI8>(strtol(buffer, NULL, 10));
+ return true;
+ }
+ };
+ template <>
+ struct StringConversion<QT3DSU16>
+ {
+ QT3DSU32 ToStr(QT3DSU16 item, NVDataRef<char8_t> buffer)
+ {
+ return static_cast<QT3DSU32>(_snprintf(buffer.begin(), buffer.size(), "%hu", item));
+ }
+ bool StrTo(const char8_t *buffer, QT3DSU16 &item)
+ {
+ item = static_cast<QT3DSU16>(strtoul(buffer, NULL, 10));
+ return true;
+ }
+ };
+ template <>
+ struct StringConversion<QT3DSI16>
+ {
+ QT3DSU32 ToStr(QT3DSI16 item, NVDataRef<char8_t> buffer)
+ {
+ return static_cast<QT3DSU32>(_snprintf(buffer.begin(), buffer.size(), "%hd", item));
+ }
+ bool StrTo(const char8_t *buffer, QT3DSI16 &item)
+ {
+ item = static_cast<QT3DSI16>(strtol(buffer, NULL, 10));
+ return true;
+ }
+ };
+
+ template <>
+ struct StringConversion<QT3DSU32>
+ {
+ QT3DSU32 ToStr(QT3DSU32 item, NVDataRef<char8_t> buffer)
+ {
+ // hope the buffer is big enough...
+ return static_cast<QT3DSU32>(_snprintf(buffer.begin(), buffer.size(), "%u", item));
+ }
+ bool StrTo(const char8_t *buffer, QT3DSU32 &item)
+ {
+ item = strtoul(buffer, NULL, 10);
+ return true;
+ }
+ };
+ template <>
+ struct StringConversion<QT3DSI32>
+ {
+ QT3DSU32 ToStr(QT3DSI32 item, NVDataRef<char8_t> buffer)
+ {
+ return static_cast<QT3DSU32>(_snprintf(buffer.begin(), buffer.size(), "%d", (int)item));
+ }
+ bool StrTo(const char8_t *buffer, QT3DSI32 &item)
+ {
+ item = strtol(buffer, NULL, 10);
+ return true;
+ }
+ };
+ template <>
+ struct StringConversion<QT3DSU64>
+ {
+ QT3DSU32 ToStr(QT3DSU64 item, NVDataRef<char8_t> buffer)
+ {
+#ifdef _WIN32
+ return static_cast<QT3DSU32>(_snprintf(buffer.begin(), buffer.size(), "%I64u", item));
+#else
+ return static_cast<QT3DSU32>(_snprintf(buffer.begin(), buffer.size(), "%lu", item));
+#endif
+ }
+ bool StrTo(const char8_t *buffer, QT3DSU64 &item)
+ {
+ item = strtoul(buffer, NULL, 10);
+ return true;
+ }
+ };
+ template <>
+ struct StringConversion<QT3DSI64>
+ {
+ QT3DSU32 ToStr(QT3DSI64 item, NVDataRef<char8_t> buffer)
+ {
+#ifdef _WIN32
+ return static_cast<QT3DSU32>(_snprintf(buffer.begin(), buffer.size(), "%I64d", item));
+#else
+ return static_cast<QT3DSU32>(_snprintf(buffer.begin(), buffer.size(), "%ld", item));
+#endif
+ }
+ bool StrTo(const char8_t *buffer, QT3DSI64 &item)
+ {
+ item = strtol(buffer, NULL, 10);
+ return true;
+ }
+ };
+ template <>
+ struct StringConversion<QT3DSF32>
+ {
+ QT3DSU32 ToStr(QT3DSF32 item, NVDataRef<char8_t> buffer)
+ {
+ QString s = QLocale::c().toString(item);
+ strncpy(buffer.begin(), s.toStdString().c_str(), buffer.size());
+ return s.length();
+ }
+ bool StrTo(const char8_t *buffer, QT3DSF32 &item)
+ {
+ bool ok;
+ item = QLocale::c().toFloat(buffer, &ok);
+ return ok;
+ }
+ };
+
+ template <>
+ struct StringConversion<QT3DSF64>
+ {
+ QT3DSU32 ToStr(QT3DSF64 item, NVDataRef<char8_t> buffer)
+ {
+ QString s = QLocale::c().toString(item);
+ strncpy(buffer.begin(), s.toStdString().c_str(), buffer.size());
+ return s.length();
+ }
+ bool StrTo(const char8_t *buffer, QT3DSF64 &item)
+ {
+ bool ok;
+ item = QLocale::c().toDouble(buffer, &ok);
+ return ok;
+ }
+ };
+}
+}
+
+#endif