DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
SchemaKernelWrapper.hpp
Go to the documentation of this file.
1#ifndef KERNELWRAPPER_H
2#define KERNELWRAPPER_H
3
5#include <QObject>
6#include <QStringList>
8#include <set>
9#include <vector>
11#include "dbe/SchemaCommand.hpp"
12
13#include "oks/file.hpp"
14
15namespace dunedaq {
16namespace oks {
17class OksKernel;
18class OksClass;
19class OksFile;
20}
21}
22
23namespace dbse {
24
25class KernelWrapper : public QObject
26{
27 friend class SchemaMainWindow;
28 friend class SchemaClassEditor;
30 friend class SchemaMethodEditor;
32
33 Q_OBJECT
34public:
35 static KernelWrapper& GetInstance();
37 void SetActiveSchema(const std::string& ActiveSchema);
38 void GetClassList(std::vector<dunedaq::oks::OksClass*>& ClassList) const;
39 void GetClassListString(QStringList& ClassListString) const;
40 void GetSchemaFiles(std::vector<std::string>& SchemaFiles);
41 void GetSchemaFiles(std::vector<dunedaq::oks::OksFile*>& SchemaFiles);
42
43 std::vector<dunedaq::oks::OksClass*> get_schema_classes(std::string& filename);
44
45 void GetIncludedList(const std::string& FileName, std::set<std::string>& IncludedFiles);
46 void get_direct_includes(const std::string& FileName, std::set<std::string>& IncludedFiles);
47 void get_all_includes(const std::string& FileName, std::set<std::string>& IncludedFiles);
48 bool IsFileWritable(const std::string& FileName) const;
49 bool is_file_modified(const std::string& FileName) const;
50 bool IsActive() const;
51 dunedaq::oks::OksClass* FindClass(std::string ClassName) const;
52 dunedaq::oks::OksFile* LoadSchema(const std::string& SchemaName) const;
53 void SaveAllSchema() const;
54 void SaveSchema(const std::string& file) const;
55 std::vector<std::string> get_modified_schema_files() const;
56 std::string ModifiedSchemaFiles() const;
57 std::string SaveModifiedSchema() const;
58 std::string GetActiveSchema() const;
59 void AddInclude(std::string schemaFile, std::string IncludeFile) const;
60 void RemoveInclude(std::string schemaFile, std::string IncludeFile) const;
61 void CloseAllSchema() const;
62 void CreateNewSchema(const std::string& SchemaName) const;
64 QString GetCardinalityStringRelationship(dunedaq::oks::OksRelationship* SchemaRelationship) const;
66 void SetInheritanceMode(bool Mode);
67 bool GetInheritanceMode() const;
69 QUndoStack* GetUndoStack();
73 void PushSetDescriptionClassCommand(dunedaq::oks::OksClass* Class, std::string Description);
74 void PushAddSuperClassCommand(dunedaq::oks::OksClass* Class, std::string SuperClass);
75 void PushRemoveSuperClassCommand(dunedaq::oks::OksClass* Class, std::string SuperClass);
76 void PushCreateClassCommand(std::string ClassName, std::string ClassDescription, bool Abstract);
78 std::string ClassName,
79 std::string ClassDescription,
80 bool Abstract);
84 std::string Name);
87 std::string ClassType);
90 std::string Description);
99 bool Value);
101 dunedaq::oks::OksRelationship* Relationship,
102 bool Value);
104 dunedaq::oks::OksRelationship* Relationship,
105 bool Value);
107 std::string Name,
108 std::string Description,
109 std::string Type,
110 bool Composite,
111 bool Exclusive,
112 bool Dependent,
116 dunedaq::oks::OksRelationship* Relationship,
117 std::string Name,
118 std::string Description,
119 std::string Type,
120 bool Composite,
121 bool Exclusive,
122 bool Dependent,
129 std::string Language);
133 std::string Prototype);
137 std::string Body);
140 std::string Language,
141 std::string Prototype,
142 std::string Body);
145 std::string Language,
146 std::string Prototype,
147 std::string Body);
149 void PushSetNameMethodCommand(dunedaq::oks::OksClass* Class, dunedaq::oks::OksMethod* Method, std::string name);
152 std::string description);
153 void PushAddMethodCommand(dunedaq::oks::OksClass* Class, std::string name, std::string description);
156 std::string name,
157 std::string description);
161 std::string NewName);
164 std::string NewDescription);
167 std::string NewType);
170 std::string NewRange);
176 bool NewIsMulti);
179 bool NewIsNull);
182 std::string NewValues);
184 std::string name,
185 std::string type,
186 bool is_mv,
187 std::string range,
188 std::string init_values,
189 std::string description,
190 bool is_null,
194 std::string name,
195 std::string type,
196 bool is_mv,
197 std::string range,
198 std::string init_values,
199 std::string description,
200 bool is_null,
202
203private:
204 KernelWrapper(QObject* parent = nullptr);
206 QUndoStack* CommandStack;
208signals:
209 void ClassCreated(QString ClassName);
210 void ClassRemoved(QString ClassName);
211 void ClassUpdated(QString ClassName);
214};
215
216} // namespace dbse
217#endif // KERNELWRAPPER_H
void PushSetIsCompositeRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, bool Value)
void PushRemoveSuperClassCommand(dunedaq::oks::OksClass *Class, std::string SuperClass)
void PushSetAttributeDescriptionCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksAttribute *Attribute, std::string NewDescription)
friend class SchemaRelationshipEditor
void PushSetAttributeIsNullCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksAttribute *Attribute, bool NewIsNull)
std::string GetActiveSchema() const
void GetClassListString(QStringList &ClassListString) const
void GetIncludedList(const std::string &FileName, std::set< std::string > &IncludedFiles)
std::string SaveModifiedSchema() const
static KernelWrapper & GetInstance()
void PushSetAttributeRangeCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksAttribute *Attribute, std::string NewRange)
void GetClassList(std::vector< dunedaq::oks::OksClass * > &ClassList) const
QUndoStack * GetUndoStack()
Stack Functions.
dunedaq::oks::OksFile * LoadSchema(const std::string &SchemaName) const
dunedaq::oks::OksKernel * GetKernel()
QString GetCardinalityStringRelationship(dunedaq::oks::OksRelationship *SchemaRelationship) const
void PushSetMethodImplementationLanguage(dunedaq::oks::OksClass *Class, dunedaq::oks::OksMethod *Method, dunedaq::oks::OksMethodImplementation *Implementation, std::string Language)
Method implementation commands.
void PushSetHighCcRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, dunedaq::oks::OksRelationship::CardinalityConstraint NewCardinality)
void PushSetAttributeFormatCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksAttribute *Attribute, dunedaq::oks::OksAttribute::Format NewFormat)
void SetActiveSchema(const std::string &ActiveSchema)
void PushSetAbstractClassCommand(dunedaq::oks::OksClass *Class, bool Value)
dunedaq::oks::OksClass * FindClass(std::string ClassName) const
void PushSetIsDependentRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, bool Value)
void RemoveInclude(std::string schemaFile, std::string IncludeFile) const
void SaveSchema(const std::string &file) const
void RebuildAttributeModel()
void PushAddSuperClassCommand(dunedaq::oks::OksClass *Class, std::string SuperClass)
void ClassUpdated(QString ClassName)
void PushSetMethodImplementationPrototype(dunedaq::oks::OksClass *Class, dunedaq::oks::OksMethod *Method, dunedaq::oks::OksMethodImplementation *Implementation, std::string Prototype)
void PushRemoveAttributeCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksAttribute *Attribute, std::string name, std::string type, bool is_mv, std::string range, std::string init_values, std::string description, bool is_null, dunedaq::oks::OksAttribute::Format format=dunedaq::oks::OksAttribute::Format::Dec)
void PushAddRelationship(dunedaq::oks::OksClass *Class, std::string Name, std::string Description, std::string Type, bool Composite, bool Exclusive, bool Dependent, dunedaq::oks::OksRelationship::CardinalityConstraint LowCc, dunedaq::oks::OksRelationship::CardinalityConstraint HighCc)
void PushAddMethodImplementationComand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksMethod *Method, std::string Language, std::string Prototype, std::string Body)
void ClassCreated(QString ClassName)
std::vector< std::string > get_modified_schema_files() const
void PushSetIsExclusiveRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, bool Value)
void PushSetDescriptionClassCommand(dunedaq::oks::OksClass *Class, std::string Description)
std::string ModifiedSchemaFiles() const
void PushSetAttributeMultiCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksAttribute *Attribute, bool NewIsMulti)
bool AnyClassReferenceThis(dunedaq::oks::OksClass *SchemaClass)
void PushSetAttributeInitialValuesCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksAttribute *Attribute, std::string NewValues)
void PushSetDescriptionMethodCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksMethod *Method, std::string description)
KernelWrapper(QObject *parent=nullptr)
void SetInheritanceMode(bool Mode)
Editor Functions.
void PushSetClassTypeRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, std::string ClassType)
dunedaq::oks::OksKernel * Kernel
void PushRemoveMethodImplementationComand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksMethod *Method, std::string Language, std::string Prototype, std::string Body)
void CreateNewSchema(const std::string &SchemaName) const
void PushSetNameMethodCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksMethod *Method, std::string name)
Method commands.
void PushRemoveRelationship(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, std::string Name, std::string Description, std::string Type, bool Composite, bool Exclusive, bool Dependent, dunedaq::oks::OksRelationship::CardinalityConstraint LowCc, dunedaq::oks::OksRelationship::CardinalityConstraint HighCc)
void PushSetAttributeTypeCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksAttribute *Attribute, std::string NewType)
void ClassRemoved(QString ClassName)
void PushAddAttributeCommand(dunedaq::oks::OksClass *Class, std::string name, std::string type, bool is_mv, std::string range, std::string init_values, std::string description, bool is_null, dunedaq::oks::OksAttribute::Format format=dunedaq::oks::OksAttribute::Format::Dec)
void PushRemoveClassCommand(dunedaq::oks::OksClass *Class, std::string ClassName, std::string ClassDescription, bool Abstract)
void PushSetLowCcRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, dunedaq::oks::OksRelationship::CardinalityConstraint NewCardinality)
bool IsFileWritable(const std::string &FileName) const
void AddInclude(std::string schemaFile, std::string IncludeFile) const
void PushSetDescriptionRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, std::string Description)
void PushAddMethodCommand(dunedaq::oks::OksClass *Class, std::string name, std::string description)
void get_all_includes(const std::string &FileName, std::set< std::string > &IncludedFiles)
void PushRemoveMethodCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksMethod *Method, std::string name, std::string description)
void PushCreateClassCommand(std::string ClassName, std::string ClassDescription, bool Abstract)
void PushSetNameRelationshipCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksRelationship *Relationship, std::string Name)
Relationship commands.
void PushSetAttributeNameCommand(dunedaq::oks::OksClass *Class, dunedaq::oks::OksAttribute *Attribute, std::string NewName)
Attribute commands.
std::vector< dunedaq::oks::OksClass * > get_schema_classes(std::string &filename)
void PushSetMethodImplementationBody(dunedaq::oks::OksClass *Class, dunedaq::oks::OksMethod *Method, dunedaq::oks::OksMethodImplementation *Implementation, std::string Body)
bool is_file_modified(const std::string &FileName) const
void GetSchemaFiles(std::vector< std::string > &SchemaFiles)
void get_direct_includes(const std::string &FileName, std::set< std::string > &IncludedFiles)
OKS attribute class.
Definition attribute.hpp:94
The OKS class.
Definition class.hpp:223
Provides interface to the OKS XML schema and data files.
Definition file.hpp:355
Provides interface to the OKS kernel.
Definition kernel.hpp:615
OKS method implementation class.
Definition method.hpp:39
OKS method class.
Definition method.hpp:147
Including QT Headers.
The DUNE-DAQ namespace.