VTK  9.3.1
vtkURILoader.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
3 #ifndef vtkURILoader_h
4 #define vtkURILoader_h
5 
6 #include "vtkIOCoreModule.h" // For export macro
7 #include "vtkObject.h"
8 #include "vtkResourceStream.h" // For vtkResourceStream
9 #include "vtkSmartPointer.h" // For vtkSmartPointer
10 #include "vtkURI.h" // For vtkURI
11 
12 #include <cstdint> // for std::int32_t
13 #include <cstdlib> // for std::size_t
14 #include <memory> // for std::unique_ptr
15 #include <string> // for std::string
16 
17 VTK_ABI_NAMESPACE_BEGIN
18 
99 class VTKIOCORE_EXPORT vtkURILoader : public vtkObject
100 {
101  struct vtkInternals;
102 
103 public:
104  vtkTypeMacro(vtkURILoader, vtkObject);
105  void PrintSelf(ostream& os, vtkIndent indent) override;
106  static vtkURILoader* New();
107 
109 
127  bool SetBaseURI(const std::string& uri);
128  bool SetBaseURI(vtkURI* uri);
130 
135  vtkURI* GetBaseURI() const;
136 
140  bool HasBaseURI() const { return this->GetBaseURI() != nullptr; }
141 
152  bool SetBaseFileName(VTK_FILEPATH const std::string& filepath);
153 
164  bool SetBaseDirectory(VTK_FILEPATH const std::string& dirpath);
165 
170  vtkSmartPointer<vtkURI> Resolve(const vtkURI* uri);
171 
181  {
182  return this->Load(uri.data(), uri.size());
183  }
184 
196  vtkSmartPointer<vtkResourceStream> Load(const char* uri, std::size_t size);
197 
207 
216  vtkSmartPointer<vtkResourceStream> LoadResolved(const vtkURI* uri);
217 
218 protected:
224  vtkURILoader();
225  ~vtkURILoader() override;
226  vtkURILoader(const vtkURILoader&) = delete;
227  vtkURILoader& operator=(const vtkURILoader&) = delete;
228 
243  virtual vtkSmartPointer<vtkResourceStream> DoLoad(const vtkURI& uri);
244 
255  vtkSmartPointer<vtkResourceStream> LoadFile(const vtkURI& uri);
256 
270  vtkSmartPointer<vtkResourceStream> LoadData(const vtkURI& uri);
271 
272 private:
273  std::unique_ptr<vtkInternals> Impl;
274 };
275 
276 VTK_ABI_NAMESPACE_END
277 
278 #endif
abstract base class for most VTK objects
Definition: vtkObject.h:51
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
URI representation.
Definition: vtkURI.h:121
Hold a reference to a vtkObjectBase instance.
Definition: vtkMeta.h:23
a simple class to control print indentation
Definition: vtkIndent.h:28
bool HasBaseURI() const
Check if loader as a base URI.
Definition: vtkURILoader.h:140
#define VTK_FILEPATH
Helper class for readers and importer that need to load more than one resource.
Definition: vtkURILoader.h:99
vtkSmartPointer< vtkResourceStream > Load(const std::string &uri)
Load a resource referenced by an URI.
Definition: vtkURILoader.h:180
static vtkObject * New()
Create an object with Debug turned off, modified time initialized to zero, and reference counting on...