VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
readerWriterFile.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2025 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
14 
15 #pragma once
16 
18 #include "readerWriter/rwString.h"
19 #include <vlutil/vlFilename.h>
20 #include <mtl/mtlEnvironment.h>
21 
22 typedef std::map<DtlObj*, std::string> DtlObjStringMap;
23 
25 class DtFilename;
26 
36 {
37 public:
40 
42  DtReaderWriterFile(const DtString& name,
43  DtReaderWriterRegistry* parentRegistry = NULL);
44 
46  DtReaderWriterRegistry* parentRegistry = NULL);
47 
49  DtReaderWriterFile(const DtString& name, const DtReaderWriterFile& orig,
50  DtReaderWriterRegistry* parentRegistry = NULL);
51 
52  DtReaderWriterFile(const DtSymbolString& name, const DtReaderWriterFile& orig,
53  DtReaderWriterRegistry* parentRegistry = NULL);
54 
57  DtReaderWriterFile& operator=(const DtFilename& orig);
58 
60  virtual ~DtReaderWriterFile() override;
61 
63  DtReaderWriterFile* clone(const DtString& name,
64  DtReaderWriterRegistry* parentRegistry = NULL);
65 
66  DtReaderWriterFile* clone(const DtSymbolString& name,
67  DtReaderWriterRegistry* parentRegistry = NULL);
68 
71  virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths,
72  const DtVariableBindingsList &variableBindings) override;
73 
75  virtual bool saveFile(const DtFilename& filename);
76 
78  virtual bool loadFile(const DtReaderWriter::SearchPaths& searchPaths,
79  const DtVariableBindingsList& variableBindings, DtlObjStringMap* commentMap = NULL);
80 
83  virtual void putSelf(std::string &fp, int indentLevel, bool writeUnspecified,
84  const DtFilename &path) override;
85 
87  virtual void setObjectToReadAndWrite(DtReaderWriter* object);
89  virtual const DtReaderWriter& objectToReadAndWrite() const;
90 
92  static const DtFilename& appPath();
93 
101  virtual void setFilename(const DtString& filename);
102 
107  virtual void setFilename(const DtString& filename, const DtString& unsubstitutedFilename);
108 
112  virtual const DtString& filename() const;
113 
115  virtual DtString unsubstitutedFilename() const;
116 
118  virtual void setUnsubstitudedFilename(const DtString& f);
119 
121  virtual const DtFilename& filenameLastReadIn() const;
122 
127  virtual void setFileReadOnly(bool readOnly = true);
128  virtual bool fileReadOnly() const;
129 
133  virtual const char *readerWriterType() const override;
134 
136  virtual void substitute(const DtVariableBindingsList& variableBindings);
137 
139  bool operator==(const DtReaderWriterFile&) const;
140 
141  static DtFilename findHighestPriorityFile(const DtFilename& filename,
142  const DtReaderWriter::SearchPaths& searchPaths, bool warnOnNotFound = true);
143  static FILE* loadHighestPriorityFile(const DtFilename& filename,
144  const DtReaderWriter::SearchPaths& searchPaths, bool warnOnNotFound = true);
145  static FILE* loadHighestPriorityFile(const DtFilename& filename,
146  const DtReaderWriter::SearchPaths& searchPaths, DtFilename& successfulPath,
147  bool warnOnNotFound = true);
148 
149  // Returns a filename that is a substitutable fragment for the given file
150  static DtFilename createPathFragment(const DtFilename& filename,
151  const DtReaderWriter::SearchPaths& searchPaths);
152 
153  // Finds all files with the given extension in the supplied path.
154  // Non-recursive.
155  static std::vector<DtFilename> findFilesByExtension(
156  const DtString& path, const DtString& extension);
157 
158 protected:
159 
163  bool getFilenameToWrite(const DtFilename& path, const DtFilename& filename,
164  DtFilename& filenameToWrite) const;
165 
166 protected:
172 };
173 
bool operator==(const DtReaderWriter &) const
Equivalence operator.
virtual const char * readerWriterType() const
Used to supply a string type that this reader writer type is. This can be used in place of dynamic-ca...
#define DT_DLL_readerWriter
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: readerWriterDefines.h:34
This class allows one to collect and compare strings using an index number instead of having to do st...
Definition: symbolString.h:27
bool myFileReadOnly
Definition: readerWriterFile.h:169
DtFilename myFilenameLastReadIn
Definition: readerWriterFile.h:170
const char * filename
Definition: ioapi.h:38
Definition: readerWriter.h:85
Description: Readable, Writable DtString Variable substitutions are done on this object when it is re...
Definition: rwString.h:20
Definition: readerWriterRegistry.h:39
DtString myVariableSubstitutedFilename
Definition: readerWriterFile.h:171
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
std::map< DtlObj *, std::string > DtlObjStringMap
Definition: extDtcRead.h:20
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
virtual void getSelf(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths=SearchPaths(), const DtVariableBindingsList &variableBindings=nullVariableReference())
Top level to read itself from an input stream. searchPath is passed down to all DtReaderWriter member...
virtual void putSelf(std::string &fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
Top level call to write itself to file. If write unspecified is true, will write entries that are uns...
DtRwString myFilename
Definition: readerWriterFile.h:167
const DtReaderWriter & operator=(const DtReaderWriter &orig)
assignment operator
Using a DtReaderWriterFile allows a DtReaderWriter object to be read in from an MTL stream contained ...
Definition: readerWriterFile.h:35
DtReaderWriter * myObjectToReadAndWrite
Definition: readerWriterFile.h:168
static const DtFilename & appPath()
Gets the current working directory. The first time this accessor is called, it determines the current...

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)