Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qohosutils.cpp
Go to the documentation of this file.
1// Copyright (C) 2025 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qohosutils.h"
5#include <cerrno>
6#include <cstdarg>
7
8QT_BEGIN_NAMESPACE
9
10namespace QtOhos
11{
12
13std::optional<double> tryParseStringAsFiniteDouble(const std::string &inputString)
14{
15 char *endPtr;
16 errno = 0;
17 auto value = std::strtod(inputString.c_str(), &endPtr);
18 bool validValue = !inputString.empty()
19 && endPtr == inputString.c_str() + inputString.size()
20 && errno != ERANGE
21 && std::isfinite(value);
22
23 return validValue
24 ? std::optional(value)
25 : std::nullopt;
26}
27
28std::string printfToString(const char *format, ...)
29{
30 std::va_list ap;
31
32 va_start(ap, format);
33 auto dryVsnprintfResult = std::vsnprintf(nullptr, 0, format, ap);
34 va_end(ap);
35
36 if (dryVsnprintfResult < 0)
37 qOhosReportFatalErrorAndAbort("String formatting with format '%s' failed: %d", format, dryVsnprintfResult);
38
39 auto outputSize = static_cast<std::size_t>(dryVsnprintfResult);
40
41 std::string output(outputSize + 1, '\0');
42
43 va_start(ap, format);
44 auto vsnprintfResult = std::vsnprintf(&output[0], output.size(), format, ap);
45 va_end(ap);
46
47 if (vsnprintfResult < 0)
48 qOhosReportFatalErrorAndAbort("String formatting with format '%s' failed: %d", format, vsnprintfResult);
49
50 output.resize(outputSize);
51
52 return output;
53}
54
55const char *mapBoolToTrueFalseStr(bool value)
56{
57 return value ? "true" : "false";
58}
59
61 QOhosJsState &jsState, std::optional<QtOhos::QObjectThreadSafeRef> optInstanceMainWindowRef)
62{
63 if (!optInstanceMainWindowRef.has_value())
64 return jsState.defaultQAbility();
65
66 auto optQAbility = jsState.tryGetQAbilityByQWindow(optInstanceMainWindowRef.value());
67 if (!optQAbility) {
68 qCWarning(
69 QtForOhos, "%s: QAbility for window '%s' no longer exists",
70 Q_FUNC_INFO, optInstanceMainWindowRef.value().refName().c_str());
71 }
72
73 return optQAbility;
74}
75
76}
77
78QT_END_NAMESPACE
std::optional< QNapi::Object > tryMapOptMainWindowToQAbility(QOhosJsState &jsState, std::optional< QtOhos::QObjectThreadSafeRef > optInstanceMainWindowRef)
std::string const char * mapBoolToTrueFalseStr(bool value)
std::optional< double > tryParseStringAsFiniteDouble(const std::string &inputString)