File: vtkGlobFileNames.h

package info (click to toggle)
paraview 5.13.2%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 544,220 kB
  • sloc: cpp: 3,374,605; ansic: 1,332,409; python: 150,381; xml: 122,166; sql: 65,887; sh: 7,317; javascript: 5,262; yacc: 4,417; java: 3,977; perl: 2,363; lex: 1,929; f90: 1,397; makefile: 170; objc: 153; tcl: 59; pascal: 50; fortran: 29
file content (127 lines) | stat: -rw-r--r-- 3,434 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause
/**
 * @class   vtkGlobFileNames
 * @brief   find files that match a wildcard pattern
 *
 * vtkGlobFileNames is a utility for finding files and directories
 * that match a given wildcard pattern.  Allowed wildcards are
 * *, ?, [...], [!...]. The "*" wildcard matches any substring,
 * the "?" matches any single character, the [...] matches any one of
 * the enclosed characters, e.g. [abc] will match one of a, b, or c,
 * while [0-9] will match any digit, and [!...] will match any single
 * character except for the ones within the brackets.  Special
 * treatment is given to "/" (or "\" on Windows) because these are
 * path separators.  These are never matched by a wildcard, they are
 * only matched with another file separator.
 * @warning
 * This function performs case-sensitive matches on UNIX and
 * case-insensitive matches on Windows.
 * @sa
 * vtkDirectory
 */

#ifndef vtkGlobFileNames_h
#define vtkGlobFileNames_h

#include "vtkIOCoreModule.h" // For export macro
#include "vtkObject.h"

VTK_ABI_NAMESPACE_BEGIN
class vtkStringArray;

class VTKIOCORE_EXPORT vtkGlobFileNames : public vtkObject
{
public:
  ///@{
  /**
   * Return the class name as a string.
   */
  vtkTypeMacro(vtkGlobFileNames, vtkObject);
  ///@}

  /**
   * Create a new vtkGlobFileNames object.
   */
  static vtkGlobFileNames* New();

  /**
   * Print directory to stream.
   */
  void PrintSelf(ostream& os, vtkIndent indent) override;

  /**
   * Reset the glob by clearing the list of output filenames.
   */
  void Reset();

  ///@{
  /**
   * Set the directory in which to perform the glob.  If this is
   * not set, then the current directory will be used.  Also, if
   * you use a glob pattern that contains absolute path (one that
   * starts with "/" or a drive letter) then that absolute path
   * will be used and Directory will be ignored.
   */
  vtkSetFilePathMacro(Directory);
  vtkGetFilePathMacro(Directory);
  ///@}

  /**
   * Search for all files that match the given expression,
   * sort them, and add them to the output.  This method can
   * be called repeatedly to add files matching additional patterns.
   * Returns 1 if successful, otherwise returns zero.
   */
  int AddFileNames(VTK_FILEPATH const char* pattern);

  ///@{
  /**
   * Recurse into subdirectories.
   */
  vtkSetMacro(Recurse, vtkTypeBool);
  vtkBooleanMacro(Recurse, vtkTypeBool);
  vtkGetMacro(Recurse, vtkTypeBool);
  ///@}

  /**
   * Return the number of files found.
   */
  int GetNumberOfFileNames();

  /**
   * Return the file at the given index, the indexing is 0 based.
   */
  VTK_FILEPATH const char* GetNthFileName(int index);

  ///@{
  /**
   * Get an array that contains all the file names.
   */
  vtkGetObjectMacro(FileNames, vtkStringArray);
  ///@}

protected:
  ///@{
  /**
   * Set the wildcard pattern.
   */
  vtkSetFilePathMacro(Pattern);
  vtkGetFilePathMacro(Pattern);
  ///@}

  vtkGlobFileNames();
  ~vtkGlobFileNames() override;

private:
  char* Directory;           // Directory for search.
  char* Pattern;             // Wildcard pattern
  vtkTypeBool Recurse;       // Recurse into subdirectories
  vtkStringArray* FileNames; // VTK array of files

  vtkGlobFileNames(const vtkGlobFileNames&) = delete;
  void operator=(const vtkGlobFileNames&) = delete;
};

VTK_ABI_NAMESPACE_END
#endif