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 <QStringList>
6#include <QObject>
8#include <vector>
9#include <set>
11#include "dbe/SchemaCommand.hpp"
12
13#include "oks/file.hpp"
14
15namespace dunedaq {
16 namespace oks {
17 class OksKernel;
18 class OksClass;
19 }
20}
21
22namespace dbse
23{
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,
46 std::set<std::string> & IncludedFiles );
47 void get_direct_includes ( const std::string & FileName,
48 std::set<std::string> & IncludedFiles );
49 void get_all_includes ( const std::string & FileName,
50 std::set<std::string> & IncludedFiles );
51 bool IsFileWritable ( const std::string & FileName ) const;
52 bool is_file_modified ( const std::string & FileName ) const;
53 bool IsActive() const;
54 dunedaq::oks::OksClass * FindClass ( std::string ClassName ) const;
55 void LoadSchema ( const std::string & SchemaName ) const;
56 void SaveAllSchema() const;
57 void SaveSchema ( const std::string& file ) const;
58 std::vector<std::string> get_modified_schema_files() const;
59 std::string ModifiedSchemaFiles() const;
60 std::string SaveModifiedSchema() const;
61 std::string GetActiveSchema() const;
62 void AddInclude( std::string schemaFile, std::string IncludeFile ) const;
63 void RemoveInclude( std::string schemaFile, std::string IncludeFile ) const;
64 void CloseAllSchema() const;
65 void CreateNewSchema ( const std::string & SchemaName ) const;
66 bool AnyClassReferenceThis ( dunedaq::oks::OksClass * SchemaClass );
67 QString GetCardinalityStringRelationship ( dunedaq::oks::OksRelationship * SchemaRelationship ) const;
69 void SetInheritanceMode ( bool Mode );
70 bool GetInheritanceMode() const;
72 QUndoStack * GetUndoStack();
75 void PushSetAbstractClassCommand ( dunedaq::oks::OksClass * Class, bool Value );
76 void PushSetDescriptionClassCommand ( dunedaq::oks::OksClass * Class, std::string Description );
77 void PushAddSuperClassCommand ( dunedaq::oks::OksClass * Class, std::string SuperClass );
78 void PushRemoveSuperClassCommand ( dunedaq::oks::OksClass * Class, std::string SuperClass );
79 void PushCreateClassCommand ( std::string ClassName, std::string ClassDescription,
80 bool Abstract );
81 void PushRemoveClassCommand ( dunedaq::oks::OksClass * Class, std::string ClassName,
82 std::string ClassDescription, bool Abstract );
84 void PushSetNameRelationshipCommand ( dunedaq::oks::OksClass* Class, dunedaq::oks::OksRelationship * Relationship, std::string Name );
86 std::string ClassType );
88 std::string Description );
96 void PushAddRelationship ( dunedaq::oks::OksClass * Class, std::string Name, std::string Description,
97 std::string Type, bool Composite, bool Exclusive, bool Dependent,
101 std::string Name, std::string Description, std::string Type,
102 bool Composite, bool Exclusive, bool Dependent,
107 std::string Language );
109 std::string Prototype );
111 std::string Body );
112 void PushAddMethodImplementationComand ( dunedaq::oks::OksClass * Class, dunedaq::oks::OksMethod * Method, std::string Language,
113 std::string Prototype, std::string Body );
114 void PushRemoveMethodImplementationComand ( dunedaq::oks::OksClass * Class, dunedaq::oks::OksMethod * Method, std::string Language,
115 std::string Prototype, std::string Body );
117 void PushSetNameMethodCommand ( dunedaq::oks::OksClass * Class, dunedaq::oks::OksMethod * Method, std::string name );
118 void PushSetDescriptionMethodCommand ( dunedaq::oks::OksClass * Class, dunedaq::oks::OksMethod * Method, std::string description );
119 void PushAddMethodCommand ( dunedaq::oks::OksClass * Class, std::string name, std::string description );
120 void PushRemoveMethodCommand ( dunedaq::oks::OksClass * Class, dunedaq::oks::OksMethod * Method, std::string name,
121 std::string description );
123 void PushSetAttributeNameCommand ( dunedaq::oks::OksClass * Class, dunedaq::oks::OksAttribute * Attribute, std::string NewName );
125 dunedaq::oks::OksAttribute * Attribute,
126 std::string NewDescription );
127 void PushSetAttributeTypeCommand ( dunedaq::oks::OksClass * Class, dunedaq::oks::OksAttribute * Attribute, std::string NewType );
128 void PushSetAttributeRangeCommand ( dunedaq::oks::OksClass * Class, dunedaq::oks::OksAttribute * Attribute, std::string NewRange );
131 void PushSetAttributeMultiCommand ( dunedaq::oks::OksClass * Class, dunedaq::oks::OksAttribute * Attribute, bool NewIsMulti );
132 void PushSetAttributeIsNullCommand ( dunedaq::oks::OksClass * Class,dunedaq::oks::OksAttribute * Attribute, bool NewIsNull );
134 std::string NewValues );
135 void PushAddAttributeCommand ( dunedaq::oks::OksClass * Class, std::string name, std::string type,
136 bool is_mv, std::string range, std::string init_values,
137 std::string description, bool is_null,
140 std::string name,
141 std::string type, bool is_mv, std::string range,
142 std::string init_values, std::string description,
143 bool is_null, dunedaq::oks::OksAttribute::Format format =
145private:
146 KernelWrapper ( QObject * parent = nullptr );
148 QUndoStack * CommandStack;
150signals:
151 void ClassCreated ( QString ClassName );
152 void ClassRemoved ( QString ClassName );
153 void ClassUpdated ( QString ClassName );
156};
157
158} // namespace dbse
159#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)
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::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 LoadSchema(const std::string &SchemaName) const
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.
The OKS class.
Definition class.hpp:200
Provides interface to the OKS kernel.
Definition kernel.hpp:577
OKS method implementation class.
Definition method.hpp:35
OKS method class.
Definition method.hpp:153
Including QT Headers.
The DUNE-DAQ namespace.
Definition ral.hpp:28