Line data Source code
1 : /*
2 : * SPDX-License-Identifier: GPL-3.0-only
3 : * MuseScore-CLA-applies
4 : *
5 : * MuseScore Studio
6 : * Music Composition & Notation
7 : *
8 : * Copyright (C) 2021 MuseScore Limited and others
9 : *
10 : * This program is free software: you can redistribute it and/or modify
11 : * it under the terms of the GNU General Public License version 3 as
12 : * published by the Free Software Foundation.
13 : *
14 : * This program is distributed in the hope that it will be useful,
15 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 : * GNU General Public License for more details.
18 : *
19 : * You should have received a copy of the GNU General Public License
20 : * along with this program. If not, see <https://www.gnu.org/licenses/>.
21 : */
22 : #ifndef MUSE_API_APIUTILS_H
23 : #define MUSE_API_APIUTILS_H
24 :
25 : #include <string>
26 : #include <vector>
27 : #include <QString>
28 : #include <QJSValue>
29 : #include <QMetaEnum>
30 :
31 : #include "apitypes.h"
32 : #include "iapiengine.h"
33 :
34 : namespace muse::api {
35 0 : inline std::vector<std::string> toStdVector(const QStringList& l)
36 : {
37 0 : std::vector<std::string> v;
38 0 : v.reserve(l.size());
39 0 : for (const QString& s : l) {
40 0 : v.push_back(s.toStdString());
41 : }
42 0 : return v;
43 0 : }
44 :
45 0 : inline QJSValue enumToJsValue(IApiEngine* engine, const QMetaEnum& meta, EnumType type)
46 : {
47 0 : QJSValue enumObj = engine->newObject();
48 :
49 0 : for (int i = 0; i < meta.keyCount(); ++i) {
50 0 : QString key = QString::fromLatin1(meta.key(i));
51 0 : if (type == EnumType::String) {
52 0 : enumObj.setProperty(key, key);
53 : } else {
54 0 : int val = meta.value(i);
55 0 : enumObj.setProperty(key, val);
56 : }
57 0 : }
58 :
59 0 : QJSValue frozenObj = engine->freeze(enumObj);
60 0 : return frozenObj;
61 0 : }
62 : }
63 :
64 : #endif // MUSE_API_APIUTILS_H
|