File: vtkVVFileInstancePool.h

package info (click to toggle)
volview 3.4-3
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 25,204 kB
  • sloc: cpp: 132,585; ansic: 11,612; tcl: 236; sh: 64; makefile: 25; xml: 8
file content (115 lines) | stat: -rw-r--r-- 4,307 bytes parent folder | download
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
/*=========================================================================

  Copyright (c) Kitware, Inc.
  All rights reserved.
  See Copyright.txt or http://www.kitware.com/VolViewCopyright.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.

=========================================================================*/
// .NAME vtkVVFileInstancePool - a class that stores a pool of file instances.
// .SECTION Description
// This class stores a pool of file instances (vtkVVFileInstance). 

#ifndef __vtkVVFileInstancePool_h
#define __vtkVVFileInstancePool_h

#include "vtkKWObject.h"
#include "XML/vtkXMLIOBaseMacros.h" // Needed for XML reader/writer macros
 
class vtkVVFileInstance;
class vtkVVFileInstancePoolInternals;

class VTK_EXPORT vtkVVFileInstancePool : public vtkKWObject
{
public:
  static vtkVVFileInstancePool* New();
  vtkTypeRevisionMacro(vtkVVFileInstancePool,vtkKWObject);
  virtual void PrintSelf(ostream& os, vtkIndent indent);
  //BTX
  vtkKWGetXMLReaderWriterObjectsMacro();
  //ETX

  // Description:
  // Add a file instance.
  // It is ref counted (and will be released by RemoveFileInstance()).
  // Return 1 on success, 0 otherwise
  int AddFileInstance(vtkVVFileInstance*);
                 
  // Description:
  // Get number of file instances stored so far
  virtual int GetNumberOfFileInstances();

  // Description:
  // Query if a file instance is in the pool, given an instance or just
  // its name
  virtual int HasFileInstance(vtkVVFileInstance *instance);
  virtual int HasFileInstanceWithName(const char *name);

  // Description:
  // Retrieve a given file instance (i-th, or by name)
  vtkVVFileInstance* GetNthFileInstance(int i);
  vtkVVFileInstance* GetFileInstanceWithName(const char *name);

  // Description::
  // Retrieve the index of a file instance
  int GetIndexOfFileInstance(vtkVVFileInstance *instance);

  // Description:
  // Remove a given file instance, or all of them
  virtual void RemoveFileInstance(vtkVVFileInstance*);
  virtual void RemoveAllFileInstances();
  
  // Description:
  // Get/Query/Remove/Enumerate file instances with the same filename(s) as
  // a given instance.
  virtual int HasFileInstanceWithSameFileNames(vtkVVFileInstance *instance);
  virtual int GetNumberOfFileInstancesWithSameFileNames(
    vtkVVFileInstance *instance);
  vtkVVFileInstance* GetNthFileInstanceWithSameFileNames(
    int i, vtkVVFileInstance *instance);
  int GetIndexOfNthFileInstanceWithSameFileNames(
    int i, vtkVVFileInstance *instance);
  virtual void RemoveNthFileInstanceWithSameFileNames(
    int i, vtkVVFileInstance *instance);

  // Description:
  // Suggest a unique name for a file instance, given the other file 
  // instances in the pool and their filenames.
  // Also accept a filename as parameter, suggesting to find a unique name
  // for an potential instance with a unique filename.
  // Return a pointer to a static buffer, use it ASAP or save it.
  virtual const char* SuggestUniqueNameForFileInstance(
    vtkVVFileInstance *instance);
  virtual const char* SuggestUniqueNameForFileInstanceWithFileName(
    const char *filename);

  // Description:
  // Get/Query/Remove/Enumerate file instances with the same filename(s) 
  // *and* the same open properties as a given instance (i.e. a file that
  // was open using the same custom parameters, say, custom extent, spacing, 
  // or scalar component, etc).
  virtual int HasSimilarFileInstance(vtkVVFileInstance *instance);
  virtual int GetNumberOfSimilarFileInstances(
    vtkVVFileInstance *instance);
  vtkVVFileInstance* GetNthSimilarFileInstance(
    int i, vtkVVFileInstance *instance);
  int GetIndexOfNthSimilarFileInstance(int i, vtkVVFileInstance *instance);
  virtual void RemoveNthSimilarFileInstance(int i, vtkVVFileInstance *instance);
  
protected:
  vtkVVFileInstancePool();
  ~vtkVVFileInstancePool();

  // Description:
  // PIMPL Encapsulation for STL containers
  vtkVVFileInstancePoolInternals *Internals;

private:
  vtkVVFileInstancePool(const vtkVVFileInstancePool&); // Not implemented
  void operator=(const vtkVVFileInstancePool&); // Not implemented
};

#endif