libpappsomspp
Library for mass spectrometry
Loading...
Searching...
No Matches
jsclassregistrar.cpp
Go to the documentation of this file.
1
2#include "jsclassregistrar.h"
3
4namespace pappso
5{
6std::unordered_map<NamespaceClassnamePairAsKey,
19
20
21void
23{
24 // qDebug() << "Registering the constructor of the classes marked for JS.";
25
26 // qsizetype count = getNameSpaceClassNameJsConstructorRegistrarMap().size();
27 // qDebug() << "Size of the map: count" << count;
28
29 // Remember, the registrar map is actually a map of map:
30
31 // Key type: pair of namespace and class name
32 // using NamespaceClassnamePairAsKey = std::pair<QString, QString>;
33 // using RegisterFunc = std::function<void(QJSEngine *)>;
34 //
35 // std::unordered_map<NamespaceClassnamePairAsKey,
36 // RegisterFunc,
37 // NsClassKeyHash,
38 // AreNamespaceClassnamePairAsKeyEqual>
39
40 for(const auto &entry : getNameSpaceClassNameJsConstructorRegistrarMap())
41 {
42 // qDebug() << "Now registering" << entry.first.first << "-" << entry.first.second;
43 entry.second(engine);
44 }
45}
46
47
48// Note that name_space can be compounded: MsXpS::libXpertMass, for class name Formula, for example.
49void
51 const QString &class_name,
52 QJSEngine *engine)
53{
54 // Remember, the registrar map is actually a map of map:
55
56 // Key type: pair of namespace and class name
57 // using NamespaceClassnamePairAsKey = std::pair<QString, QString>;
58 // using RegisterFunc = std::function<void(QJSEngine *)>;
59 //
60 // std::unordered_map<NamespaceClassnamePairAsKey,
61 // RegisterFunc,
62 // NsClassKeyHash,
63 // AreNamespaceClassnamePairAsKeyEqual>
64
65 // So, first look for a pair<NamespaceClassnamePairAsKey, RegisterFunc>
66 // having key = {name_space, class_name}, that is, a std::pair<QString,
67 // QString>. Once we get that map item, run the second member of the
68 // outer map item which actually runs the functor.
69 auto it = getNameSpaceClassNameJsConstructorRegistrarMap().find({name_space, class_name});
71 it->second(engine);
72 else
73 qWarning().noquote() << "No JS constructor registered for namespace" << name_space
74 << "and class name" << class_name;
75}
76
77} // namespace pappso
tries to keep as much as possible monoisotopes, removing any possible C13 peaks and changes multichar...
Definition aa.cpp:39
void registerJsConstructorForNameSpaceClassNameInRegistrarMap(const QString &name_space, const QString &class_name, QJSEngine *engine)
std::function< void(QJSEngine *)> RegisterFunc
void registerJsConstructorForEachClassInRegistrarMap(QJSEngine *engine)
std::unordered_map< NamespaceClassnamePairAsKey, RegisterFunc, NamespaceClassnameAsKeyHash, AreNamespaceClassnamePairsEqual > & getNameSpaceClassNameJsConstructorRegistrarMap()
std::pair< QString, QString > NamespaceClassnamePairAsKey