OpendTect  6.6
strmprov.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: A.H.Bril
8  Date: 17-5-1995
9  Contents: Generalized stream opener.
10  RCS: $Id$
11 ________________________________________________________________________
12 
13 -*/
14 
15 #include "basicmod.h"
16 #include "strmdata.h"
17 #include "bufstring.h"
18 #include "oscommand.h"
19 class CallBack;
20 class TaskRunner;
21 class BufferStringSet;
22 
23 
24 
39 {
40 public:
41  StreamProvider(const char* filenm=nullptr);
43  const char* workdir);
45 
46  void setFileName(const char*);
47  void setCommand(const OS::MachineCommand&,const char* workdir);
48 
49  bool isBad() const;
50 
51  const char* fileName() const { return fname_.buf(); }
52  bool exists(bool forread) const;
53  bool remove(bool recursive=true) const;
54  bool setReadOnly(bool yn) const;
55  bool isReadOnly() const;
56  bool rename(const char*,const CallBack* cb=0);
59 
60  StreamData makeOStream(bool binary=true,bool editmode=false) const;
65  StreamData makeIStream(bool binary=true,bool allowpreloaded=true) const;
67 
68  void addPathIfNecessary(const char*);
70 
71  bool isFile() const { return !mc_; }
72  bool isCommand() const { return mc_; }
73 
74  static const char* sStdIO();
75  static const char* sStdErr();
76 
77  // Pre-load interface
78  static bool isPreLoaded(const char*,bool isid);
80  static bool preLoad(const char*,TaskRunner&,const char* id);
82  static bool preLoad(const BufferStringSet&,TaskRunner&,
83  const char* id);
86  static void getPreLoadedFileNames(const char* id,BufferStringSet&);
88  static int getPreLoadedDataPackID(const char*);
89  static void unLoad(const char*,bool isid=false);
91  static void unLoadAll();
92 
93 protected:
94 
96  OS::MachineCommand* mc_ = nullptr;
98 
100 
101  static void sendCBMsg(const CallBack*,const char*);
102 
103 private:
104  StreamProvider(const StreamProvider&) = delete;
106 
107 public:
108 
109  mDeprecatedDef void set(const char* inp);
110 
111  static StreamData createIStream(const char*,bool binary=true);
114  static StreamData createOStream(const char*,bool binary=true,
115  bool inplaceedit=false);
119 };
120 
StreamProvider::getPreLoadedIDs
static void getPreLoadedIDs(BufferStringSet &)
StreamProvider::setFileName
void setFileName(const char *)
StreamProvider::createOStream
static StreamData createOStream(const char *, bool binary=true, bool inplaceedit=false)
StreamData
Holds data to use and close an iostream. Usually created by StreamProvider.
Definition: strmdata.h:27
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
StreamProvider::preLoad
static bool preLoad(const BufferStringSet &, TaskRunner &, const char *id)
id can be anything, usually MultiID though
StreamProvider::setCommand
void setCommand(const OS::MachineCommand &, const char *workdir)
StreamProvider::StreamProvider
StreamProvider(const char *filenm=nullptr)
StreamProvider::isPreLoaded
static bool isPreLoaded(const char *, bool isid)
If isid, a single hit will return true.
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
StreamProvider::unLoadAll
static void unLoadAll()
StreamProvider::addPathIfNecessary
void addPathIfNecessary(const char *)
adds given path if stored filename is relative
StreamProvider::createIStream
static StreamData createIStream(const char *, bool binary=true)
StreamProvider::workingdir_
BufferString workingdir_
Definition: strmprov.h:97
bufstring.h
StreamProvider::sStdIO
static const char * sStdIO()
StreamProvider::sendCBMsg
static void sendCBMsg(const CallBack *, const char *)
StreamProvider::isReadOnly
bool isReadOnly() const
StreamProvider::unLoad
static void unLoad(const char *, bool isid=false)
If isid, unload all with this id.
CallBack
CallBacks object-oriented (object + method).
Definition: callback.h:62
StreamProvider::isFile
bool isFile() const
Definition: strmprov.h:71
StreamProvider::operator=
StreamProvider & operator=(const StreamProvider &)=delete
StreamProvider
Provides I/O stream for file or system command.
Definition: strmprov.h:39
TaskRunner
Class that can execute a task.
Definition: task.h:170
StreamProvider::rename
bool rename(const char *, const CallBack *cb=0)
StreamProvider::set
void set(const char *inp)
StreamProvider::makeIStream
StreamData makeIStream(bool binary=true, bool allowpreloaded=true) const
see makeOStream remark
StreamProvider::exists
bool exists(bool forread) const
StreamProvider::sStdErr
static const char * sStdErr()
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
StreamProvider::isCommand
bool isCommand() const
Definition: strmprov.h:72
strmdata.h
StreamProvider::fname_
BufferString fname_
Definition: strmprov.h:95
StreamProvider::StreamProvider
StreamProvider(const StreamProvider &)=delete
OS::MachineCommand
Encapsulates an actual command to execute + the machine to run it on.
Definition: oscommand.h:94
StreamProvider::setReadOnly
bool setReadOnly(bool yn) const
StreamProvider::preLoad
static bool preLoad(const char *, TaskRunner &, const char *id)
id can be anything, usually MultiID though
StreamProvider::makeOStream
StreamData makeOStream(bool binary=true, bool editmode=false) const
StreamProvider::getPreLoadedFileNames
static void getPreLoadedFileNames(const char *id, BufferStringSet &)
pass null id for all files
StreamProvider::StreamProvider
StreamProvider(const OS::MachineCommand &, const char *workdir)
StreamProvider::~StreamProvider
~StreamProvider()
StreamProvider::fileName
const char * fileName() const
Definition: strmprov.h:51
mDeprecatedDef
#define mDeprecatedDef
Definition: plfdefs.h:216
oscommand.h
StreamProvider::remove
bool remove(bool recursive=true) const
StreamProvider::getPreLoadedDataPackID
static int getPreLoadedDataPackID(const char *)
StreamProvider::isBad
bool isBad() const
StreamProvider::makePLIStream
static StreamData makePLIStream(int)

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2021