You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
105 lines
2.9 KiB
C
105 lines
2.9 KiB
C
3 weeks ago
|
/*=========================================================================
|
||
|
|
||
|
Program: Visualization Toolkit
|
||
|
Module: vtkPDirectory.h
|
||
|
|
||
|
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
||
|
All rights reserved.
|
||
|
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
||
|
|
||
|
This software is distributed WITHOUT ANY WARRANTY; without even
|
||
|
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||
|
PURPOSE. See the above copyright notice for more information.
|
||
|
|
||
|
=========================================================================*/
|
||
|
/**
|
||
|
* @class vtkPDirectory
|
||
|
*
|
||
|
* vtkPDirectory provides a portable way of finding the names of the files
|
||
|
* in a system directory where process 0 finds the information and
|
||
|
* broadcasts it to other processes. It tries to replicate the API for both
|
||
|
* Directory and vtkDirectory though there are slight mismatches between the
|
||
|
* two. This is a blocking collective operation.
|
||
|
*/
|
||
|
|
||
|
#ifndef vtkPDirectory_h
|
||
|
#define vtkPDirectory_h
|
||
|
|
||
|
#include "vtkObject.h"
|
||
|
#include "vtkParallelCoreModule.h" // For export macro
|
||
|
#include <string> // for string functions in Directory
|
||
|
|
||
|
class vtkStringArray;
|
||
|
|
||
|
class VTKPARALLELCORE_EXPORT vtkPDirectory : public vtkObject
|
||
|
{
|
||
|
public:
|
||
|
static vtkPDirectory* New();
|
||
|
vtkTypeMacro(vtkPDirectory, vtkObject);
|
||
|
void PrintSelf(ostream& os, vtkIndent indent) override;
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Open/Load the specified directory and load the names of the files
|
||
|
* in that directory. false/0 is returned if the directory can not be
|
||
|
* opened, true/1 if it is opened. The reason that there are two versions
|
||
|
* of this is that Directory uses Load() and vtkDirectory uses Open()
|
||
|
* for this functionality.
|
||
|
*/
|
||
|
bool Load(const std::string&);
|
||
|
int Open(const char* dir);
|
||
|
//@}
|
||
|
|
||
|
/**
|
||
|
* Return the number of files in the current directory.
|
||
|
*/
|
||
|
vtkIdType GetNumberOfFiles() const;
|
||
|
|
||
|
/**
|
||
|
* Return the file at the given index, the indexing is 0 based
|
||
|
*/
|
||
|
const char* GetFile(vtkIdType index) const;
|
||
|
|
||
|
/**
|
||
|
* Return true if the file is a directory. If the file is not an
|
||
|
* absolute path, it is assumed to be relative to the opened
|
||
|
* directory. If no directory has been opened, it is assumed to
|
||
|
* be relative to the current working directory.
|
||
|
*/
|
||
|
int FileIsDirectory(const char* name);
|
||
|
|
||
|
//@{
|
||
|
/**
|
||
|
* Get an array that contains all the file names.
|
||
|
*/
|
||
|
vtkGetObjectMacro(Files, vtkStringArray);
|
||
|
//@}
|
||
|
|
||
|
/**
|
||
|
* Return the path to Open'ed directory
|
||
|
*/
|
||
|
const char* GetPath() const;
|
||
|
|
||
|
/**
|
||
|
* Clear the internal structure. Used internally at beginning of Load(...)
|
||
|
* to clear the cache.
|
||
|
*/
|
||
|
void Clear();
|
||
|
|
||
|
protected:
|
||
|
vtkPDirectory();
|
||
|
~vtkPDirectory() override;
|
||
|
|
||
|
private:
|
||
|
// Array of Files
|
||
|
vtkStringArray* Files; // VTK array of files
|
||
|
|
||
|
// Path to Open'ed directory
|
||
|
std::string Path;
|
||
|
|
||
|
vtkPDirectory(const vtkPDirectory&) = delete;
|
||
|
void operator=(const vtkPDirectory&) = delete;
|
||
|
}; // End Class: vtkPDirectory
|
||
|
|
||
|
#endif
|