Itasca C++ Interface
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
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 class IParse;
36
38 class IKernel {
39 public:
40 using Skip = itascaxd::IKernelBase::Skip;
41
45 using signal_type = shared::Signal<const IThing *,const IContainer *>;
46
48 shared::Signal<> abort;
52 shared::Signal<const char *, const string &, bool> pushInputItem; // type, name start
56 shared::Signal<const char *, const string &> popInputItem; // type, name
59 shared::Signal<> restoreModelStateStart;
61 shared::Signal<const string &> restoreModelStateEnd;
64 shared::Signal<const string &> restoreModelState; // name
66 shared::Signal<> resetModelState;
67 shared::Signal<const string &> exportResultFile; // name
68 shared::Signal<const string &> importResultFile; // name
71 shared::Signal<int32> compressingFileIndex;
74 shared::Signal<int32> compressingFileProgress; // progress
75 shared::Signal<const string &, int64, int64, int64> tagInEditor; // source, line, colStart, colEnd
76 shared::Signal<const string &> projectSysPath; // Add project path to sys.path\
77 // This signal is sent immediately *after* a command has been processed without error.
78 // The string is the full command string seen by
79 shared::Signal<std::vector<InputLine>> commandProcessed;
80
81 virtual itascaxd::IKernelBase *getIKernelBase() = 0;
87 virtual bool initialize(IKernelInput *input,IKernelOutput *output)=0;
88
90 virtual bool disconnectFromInterface()=0;
91
96 virtual bool security(security::ISC *scomm)=0;
97 virtual void securityCheck(security::Check check = security::Check::Normal)=0;
98
101 virtual bool preCommandLineArguments(StringList * args)=0;
102
107 virtual bool commandLineArguments(const StringList &args)=0;
108 virtual std::vector<InputLine> fromCommandLineArguments(const StringList &args)=0;
109
117 virtual string processCommands(itascaxd::IInputItem *ii,const string &inputPath=string(),
118 bool recursive=false,bool suppress=false)=0;
119
130 virtual string processCommands(const std::vector<InputLine> &sl,
131 const string &inputPath=string(),bool recursive=false)=0;
132
143 virtual string processCommand(const InputLine &s,const string &inputPath=string(),
144 bool recursive=false)=0;
145
147 virtual bool getAutoTestMode() const=0;
148
151
154
156 virtual void addCommandDocumentation(const string &referencename,const StringList &list)=0;
157
159 virtual void addSphinxCommands(const StringList &)=0;
160
162 virtual void addSphinxFish(const StringList &)=0;
163
165 virtual string outputCommandsForModel() const=0;
166 virtual string outputFishForModel() const=0;
167
171 virtual int testValidCommand(const string &line, string *errorinfo=0) const=0;
172
177 virtual int testValidCommandText(const string &text, string *errorinfo=0, std::vector<int> *errorlines=0) const=0;
178
181 virtual QPair<string,string> expandCommandKeyword(const string &line,string &fileName,int cursor=-1) const=0;
184 virtual StringList getCommandInformation(const string &line,int cursor=-1,bool thinkFish=false) const=0;
185
187 virtual string getSaveFileName() const=0;
188
190 virtual bool modelChanged() const=0;
191
193 virtual bool projectChanged() const=0;
194
196 virtual void saveProject(Archive2 &a) const=0;
197 virtual bool restoreProject(Archive2 &a,uint64 label)=0;
198 virtual void remapProject(Archive2 &a)=0;
199
201 virtual IParse * createStackAndParse(const QString &) = 0;
202
206 virtual bool readSaveFileInfo(shared::Stream &dev,IInputRecord::FileDataSet *set,StringList *lines) const=0;
207
215 virtual void compressFileList(const StringList &files)=0;
216 virtual void decompressFileList(const StringList &files)=0;
218 virtual bool fileIsCompressed(const string &filename) const=0;
219
220 // RESULT FILE SUPPORT
221 struct ResultsDesc {
222 string name_;
223 string command_;
224 bool state_ = false;
225 string category_;
226 };
227 virtual std::vector<ResultsDesc> getResultsState() const=0;
228 // TRUE if results files will be generated automatically during cycling.
229 virtual bool getResultsIntervalOn() const=0;
230 // non-zero if results files will be generated based on a real-time interval.
231 virtual uint64 getResultsIntervalClock() const=0;
232 // The name of the process used to determine the model time -- from the list of
233 // processes available to the current model.
234 virtual string getResultsIntervalProcess() const=0;
235 // non-zero if results files will be generated based on the number of cycles/steps.
236 virtual uint64 getResultsIntervalStep() const=0;
237 // non-zero if results files will be generated based on accumulated model time
238 // in the process returned by getResultsIntervalProcess().
239 virtual double getResultsIntervalTime() const=0;
240 // Returns the prefix used for automatically generated results files.
241 virtual string getResultsIntervalPrefix() const=0;
242 // Returns the current index used for automatically generated results files.
243 // This is appended to the prefix and incremented automatically.
244 virtual uint32 getResultsIntervalIndex() const=0;
245
249 virtual void startProcessingFile(const string &fullPathName,const string &type)=0;
250
254 virtual void stopProcessingFile(const string &fullPathName,const string &type)=0;
255
257 virtual void resetProject(bool quiet=false)=0;
258
261 virtual void cleanModel(bool all=false)=0;
262
265 virtual void calmModel()=0;
266
268 virtual void filterModel(const itascaxd::IRange &)=0;
269
271 virtual signal_type *getResetSignal() const=0;
272
274 virtual signal_type *getSaveSignal() const=0;
275
277 virtual signal_type *getRestoredSignal() const=0;
278
281 virtual void save(shared::Stream &dev,bool readOnly,bool text)=0;
282
286 virtual StringList restore(shared::Stream &dev,shared::Stream *out,Skip skip)=0;
287
288 virtual void logEvent(const string &str)=0;
289
291 virtual bool getInCycle() const=0;
292
293 virtual StringList getAllTypeKeywords() const=0;
294
296 virtual StateInfoOutput getModelStateInformation() const=0;
297
299 virtual StateInfoOutput getProgramStateInformation() const=0;
300 };
301
302}
304// 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:38
shared::Signal< const string & > restoreModelStateEnd
This SIGNAL is emitted when a model restore is finished, regardless of hidden state.
Definition ikernel.h:61
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:48
shared::Signal resetModelState
This SIGNAL is emitted when the model state is reset, (a NEW command, for example).
Definition ikernel.h:66
virtual string outputCommandsForModel() const =0
Output commands and FISH for inline help.
virtual StateInfoOutput getProgramStateInformation() const =0
Get the program state information.
shared::Signal< const char *, const string & > popInputItem
Definition ikernel.h:56
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:45
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
shared::Signal restoreModelStateStart
Definition ikernel.h:59
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 StateInfoOutput getModelStateInformation() const =0
Get the model state information.
virtual void stopProcessingFile(const string &fullPathName, const string &type)=0
virtual IParse * createStackAndParse(const QString &)=0
Create a Parse object and stack from terminal. Needs to be destroyed.
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:64
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:52
virtual bool modelChanged() const =0
Model changed state.
shared::Signal< int32 > compressingFileProgress
Definition ikernel.h:74
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:71
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
Interface to the main command processing class.
Definition iparse.h:50
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:221
Provides a interface for getting text.
Definition itextinput.h:10