Itasca C++ Interface
Loading...
Searching...
No Matches
ikernel.h
Go to the documentation of this file.
1#pragma once
2
3#include "base/src/baseqt.h"
4#include "module/interface/ikernelbase.h"
5#include "utility/interface/iinputrecord.h"
6#include "utility/interface/itextinput.h"
7
14namespace shared {
15 class Stream;
16}
17
18namespace security {
19 class ISC; //ISecurityCommunication;
20 struct LicenseLocation;
21}
22
23namespace itascaxd {
24 class IInputItem;
25 class IKernelBase;
26 class IRange;
27}
28
29namespace itasca {
30 class Archive2;
31 class IKernelInput;
32 class IKernelOutput;
33 class IThing;
34 class IContainer;
35
37 class IKernel {
38 public:
39 using Skip = itascaxd::IKernelBase::Skip;
40
44 using signal_type = shared::Signal<const IThing *,const IContainer *>;
45
47 shared::Signal<> abort;
51 shared::Signal<const char *, const string &, bool> pushInputItem; // type, name start
55 shared::Signal<const char *, const string &> popInputItem; // type, name
58 shared::Signal<const string &> restoreModelState; // name
60 shared::Signal<> resetModelState;
61 shared::Signal<const string &> exportResultFile; // name
62 shared::Signal<const string &> importResultFile; // name
65 shared::Signal<int32> compressingFileIndex;
68 shared::Signal<int32> compressingFileProgress; // progress
69 shared::Signal<const string &, int64, int64, int64> tagInEditor; // source, line, colStart, colEnd
70 shared::Signal<const string &> projectSysPath; // Add project path to sys.path\
71 // This signal is sent immediately *after* a command has been processed without error.
72 // The string is the full command string seen by
73 shared::Signal<std::vector<InputLine>> commandProcessed;
74
75 virtual itascaxd::IKernelBase *getIKernelBase() = 0;
81 virtual bool initialize(IKernelInput *input,IKernelOutput *output)=0;
82
84 virtual bool disconnectFromInterface()=0;
85
90 virtual bool security(security::ISC *scomm)=0;
91 virtual void securityCheck(security::Check check = security::Check::Normal)=0;
92
95 virtual bool preCommandLineArguments(StringList * args)=0;
96
101 virtual bool commandLineArguments(const StringList &args)=0;
102 virtual std::vector<InputLine> fromCommandLineArguments(const StringList &args)=0;
103
111 virtual string processCommands(itascaxd::IInputItem *ii,const string &inputPath=string(),
112 bool recursive=false,bool suppress=false)=0;
113
124 virtual string processCommands(const std::vector<InputLine> &sl,
125 const string &inputPath=string(),bool recursive=false)=0;
126
137 virtual string processCommand(const InputLine &s,const string &inputPath=string(),
138 bool recursive=false)=0;
139
141 virtual bool getAutoTestMode() const=0;
142
145
148
150 virtual void addCommandDocumentation(const string &referencename,const StringList &list)=0;
151
153 virtual void addSphinxCommands(const StringList &)=0;
154
156 virtual void addSphinxFish(const StringList &)=0;
157
159 virtual string outputCommandsForModel() const=0;
160 virtual string outputFishForModel() const=0;
161
165 virtual int testValidCommand(const string &line, string *errorinfo=0) const=0;
166
171 virtual int testValidCommandText(const string &text, string *errorinfo=0, std::vector<int> *errorlines=0) const=0;
172
175 virtual QPair<string,string> expandCommandKeyword(const string &line,string &fileName,int cursor=-1) const=0;
178 virtual StringList getCommandInformation(const string &line,int cursor=-1,bool thinkFish=false) const=0;
179
181 virtual string getSaveFileName() const=0;
182
184 virtual bool modelChanged() const=0;
185
187 virtual bool projectChanged() const=0;
188
190 virtual void saveProject(Archive2 &a) const=0;
191 virtual bool restoreProject(Archive2 &a,uint64 label)=0;
192 virtual void remapProject(Archive2 &a)=0;
193
197 virtual bool readSaveFileInfo(shared::Stream &dev,IInputRecord::FileDataSet *set,StringList *lines) const=0;
198
206 virtual void compressFileList(const StringList &files)=0;
207 virtual void decompressFileList(const StringList &files)=0;
209 virtual bool fileIsCompressed(const string &filename) const=0;
210
211 // RESULT FILE SUPPORT
212 struct ResultsDesc {
213 string name_;
214 string command_;
215 bool state_ = false;
216 string category_;
217 };
218 virtual std::vector<ResultsDesc> getResultsState() const=0;
219 // TRUE if results files will be generated automatically during cycling.
220 virtual bool getResultsIntervalOn() const=0;
221 // non-zero if results files will be generated based on a real-time interval.
222 virtual uint64 getResultsIntervalClock() const=0;
223 // The name of the process used to determine the model time -- from the list of
224 // processes available to the current model.
225 virtual string getResultsIntervalProcess() const=0;
226 // non-zero if results files will be generated based on the number of cycles/steps.
227 virtual uint64 getResultsIntervalStep() const=0;
228 // non-zero if results files will be generated based on accumulated model time
229 // in the process returned by getResultsIntervalProcess().
230 virtual double getResultsIntervalTime() const=0;
231 // Returns the prefix used for automatically generated results files.
232 virtual string getResultsIntervalPrefix() const=0;
233 // Returns the current index used for automatically generated results files.
234 // This is appended to the prefix and incremented automatically.
235 virtual uint32 getResultsIntervalIndex() const=0;
236
240 virtual void startProcessingFile(const string &fullPathName,const string &type)=0;
241
245 virtual void stopProcessingFile(const string &fullPathName,const string &type)=0;
246
248 virtual void resetProject(bool quiet=false)=0;
249
252 virtual void cleanModel(bool all=false)=0;
253
256 virtual void calmModel()=0;
257
259 virtual void filterModel(const itascaxd::IRange &)=0;
260
262 virtual signal_type *getResetSignal() const=0;
263
265 virtual signal_type *getSaveSignal() const=0;
266
268 virtual signal_type *getRestoredSignal() const=0;
269
272 virtual void save(shared::Stream &dev,bool readOnly,bool text)=0;
273
277 virtual StringList restore(shared::Stream &dev,shared::Stream *out,Skip skip)=0;
278
279 virtual void logEvent(const string &str)=0;
280
282 virtual bool getInCycle() const=0;
283
284 virtual StringList getAllTypeKeywords() const=0;
285 };
286
287}
289// EoF
All default base headers if Qt is being used.
Definition basestring.h:89
std::unordered_set< FileData, FileDataHash > FileDataSet
Definition iinputrecord.h:37
This Interface provides an entry point for command processing.
Definition ikernel.h:37
virtual bool commandLineArguments(const StringList &args)=0
shared::Signal abort
Due to a QUIT or a STOP, or a catastrophic error, etc.
Definition ikernel.h:47
shared::Signal resetModelState
This SIGNAL is emitted when the model state is reset, (a NEW command, for example).
Definition ikernel.h:60
virtual string outputCommandsForModel() const =0
Output commands and FISH for inline help.
shared::Signal< const char *, const string & > popInputItem
Definition ikernel.h:55
virtual void addCommandDocumentation(const string &referencename, const StringList &list)=0
Add cmd-doc definitions from a StringList.
virtual void calmModel()=0
virtual QPair< string, string > expandCommandKeyword(const string &line, string &fileName, int cursor=-1) const =0
virtual StringList getCommandInformation(const string &line, int cursor=-1, bool thinkFish=false) const =0
virtual bool getInCycle() const =0
Get the boolean indicating cycling mode.
virtual bool readSaveFileInfo(shared::Stream &dev, IInputRecord::FileDataSet *set, StringList *lines) const =0
virtual signal_type * getRestoredSignal() const =0
Return the signal indicating that the model has been restored. i.e., it is emitted after a restore.
virtual void compressFileList(const StringList &files)=0
shared::Signal< const IThing *, const IContainer * > signal_type
Definition ikernel.h:44
virtual void addSphinxFish(const StringList &)=0
Add inline help FISH.
virtual int testValidCommandText(const string &text, string *errorinfo=0, std::vector< int > *errorlines=0) const =0
virtual bool security(security::ISC *scomm)=0
virtual bool projectChanged() const =0
Project changed state.
virtual StringList getTestDirectories() const =0
Returns all directories current part of the testing system.
virtual void filterModel(const itascaxd::IRange &)=0
Call a filter method in each module.
virtual void saveProject(Archive2 &a) const =0
Project archive.
virtual void cleanModel(bool all=false)=0
virtual bool initialize(IKernelInput *input, IKernelOutput *output)=0
virtual string getSaveFileName() const =0
Get the name of the last save file.
virtual signal_type * getSaveSignal() const =0
Return the signal indicating that the model will be saved, i.e., it is emitted before a save.
virtual string processCommand(const InputLine &s, const string &inputPath=string(), bool recursive=false)=0
virtual void addSphinxCommands(const StringList &)=0
Add inline help commands.
virtual void stopProcessingFile(const string &fullPathName, const string &type)=0
virtual string processCommands(const std::vector< InputLine > &sl, const string &inputPath=string(), bool recursive=false)=0
virtual bool getAutoTestMode() const =0
Return the test mode flag.
virtual void startProcessingFile(const string &fullPathName, const string &type)=0
virtual bool fileIsCompressed(const string &filename) const =0
Return true if the given file has been compressed.
shared::Signal< const string & > restoreModelState
Definition ikernel.h:58
virtual string processCommands(itascaxd::IInputItem *ii, const string &inputPath=string(), bool recursive=false, bool suppress=false)=0
shared::Signal< const char *, const string &, bool > pushInputItem
Definition ikernel.h:51
virtual bool modelChanged() const =0
Model changed state.
shared::Signal< int32 > compressingFileProgress
Definition ikernel.h:68
virtual signal_type * getResetSignal() const =0
Return the signal indicating that the model will be reset, i.e., it is emitted before a reset.
virtual bool disconnectFromInterface()=0
This is called to indicate that the GUI is shutting down - no calls to input or output should occurr.
virtual StringList restore(shared::Stream &dev, shared::Stream *out, Skip skip)=0
virtual bool preCommandLineArguments(StringList *args)=0
virtual void save(shared::Stream &dev, bool readOnly, bool text)=0
virtual int testValidCommand(const string &line, string *errorinfo=0) const =0
virtual IKernelOutput * getIKernelOutput()=0
Returns a pointer to a IKernelOutput object.
virtual void resetProject(bool quiet=false)=0
Clears PROJECT level memory (filter, persistant FISH, etc). Called by NEW PROJECT.
shared::Signal< int32 > compressingFileIndex
Definition ikernel.h:65
Interface describing ALL input support the kernel needs to receive from whatever interface is driving...
Definition ikernelinput.h:17
Interface describing ALL output support the kernel needs to send information to whatever interface is...
Definition ikerneloutput.h:12
Definition iinputitem.h:9
Definition ikernelbase.h:9
Definition ikernelbase.h:7
Interface to a filter, used as the main method for filtering objects.
Definition irange.h:32
namespace Itasca
Definition basememory.cpp:14
Itasca Library standard namespace, specific to 2D or 3D.
Definition icontactmodule.h:4
Definition ikernel.h:212
Provides a interface for getting text.
Definition itextinput.h:10