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.

125 lines
3.1 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkDirectory.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 vtkDirectory
* @brief OS independent class for access and manipulation of system directories
*
* vtkDirectory provides a portable way of finding the names of the files
* in a system directory. It also provides methods of manipulating directories.
*
* @warning
* vtkDirectory works with windows and unix only.
*/
#ifndef vtkDirectory_h
#define vtkDirectory_h
#include "vtkCommonSystemModule.h" // For export macro
#include "vtkObject.h"
class vtkStringArray;
class VTKCOMMONSYSTEM_EXPORT vtkDirectory : public vtkObject
{
public:
//@{
/**
* Return the class name as a string.
*/
vtkTypeMacro(vtkDirectory, vtkObject);
//@}
/**
* Create a new vtkDirectory object.
*/
static vtkDirectory* New();
/**
* Print directory to stream.
*/
void PrintSelf(ostream& os, vtkIndent indent) override;
/**
* Open the specified directory and load the names of the files
* in that directory. 0 is returned if the directory can not be
* opened, 1 if it is opened.
*/
int Open(const char* dir);
/**
* Return the number of files in the current directory.
*/
vtkIdType GetNumberOfFiles();
/**
* Return the file at the given index, the indexing is 0 based
*/
const char* GetFile(vtkIdType index);
/**
* 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);
//@}
/**
* Get the current working directory.
*/
static const char* GetCurrentWorkingDirectory(char* buf, unsigned int len);
/**
* Create directory.
*/
static int MakeDirectory(const char* dir);
/**
* Remove a directory.
*/
static int DeleteDirectory(const char* dir);
/**
* Rename a file or directory.
*/
static int Rename(const char* oldname, const char* newname);
protected:
// delete the Files and Path ivars and set
// NumberOfFiles to 0
void CleanUpFilesAndPath();
vtkDirectory();
~vtkDirectory() override;
private:
char* Path; // Path to Open'ed directory
vtkStringArray* Files; // VTK array of files
static int CreateDirectoryInternal(const char* dir);
private:
vtkDirectory(const vtkDirectory&) = delete;
void operator=(const vtkDirectory&) = delete;
};
#endif