You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							348 lines
						
					
					
						
							15 KiB
						
					
					
				
			
		
		
	
	
							348 lines
						
					
					
						
							15 KiB
						
					
					
				/*=========================================================================
 | 
						|
 | 
						|
  Program:   Visualization Toolkit
 | 
						|
  Module:    $RCSfile: vtkInformation.h,v $
 | 
						|
 | 
						|
  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.
 | 
						|
 | 
						|
=========================================================================*/
 | 
						|
// .NAME vtkInformation - Store vtkAlgorithm input/output information.
 | 
						|
// .SECTION Description
 | 
						|
// vtkInformation represents information and/or data for one input or
 | 
						|
// one output of a vtkAlgorithm.  It maps from keys to values of
 | 
						|
// several data types.  Instances of this class are collected in
 | 
						|
// vtkInformationVector instances and passed to
 | 
						|
// vtkAlgorithm::ProcessRequest calls.  The information and
 | 
						|
// data referenced by the instance on a particular input or output
 | 
						|
// define the request made to the vtkAlgorithm instance.
 | 
						|
 | 
						|
#ifndef __vtkInformation_h
 | 
						|
#define __vtkInformation_h
 | 
						|
 | 
						|
#include "vtkObject.h"
 | 
						|
 | 
						|
class vtkDataObject;
 | 
						|
class vtkExecutive;
 | 
						|
class vtkInformationDataObjectKey;
 | 
						|
class vtkInformationDoubleKey;
 | 
						|
class vtkInformationDoubleVectorKey;
 | 
						|
class vtkInformationExecutivePortKey;
 | 
						|
class vtkInformationExecutivePortVectorKey;
 | 
						|
class vtkInformationIdTypeKey;
 | 
						|
class vtkInformationInformationKey;
 | 
						|
class vtkInformationInformationVectorKey;
 | 
						|
class vtkInformationIntegerKey;
 | 
						|
class vtkInformationIntegerPointerKey;
 | 
						|
class vtkInformationIntegerVectorKey;
 | 
						|
class vtkInformationInternals;
 | 
						|
class vtkInformationKey;
 | 
						|
class vtkInformationKeyToInformationFriendship;
 | 
						|
class vtkInformationKeyVectorKey;
 | 
						|
class vtkInformationObjectBaseKey;
 | 
						|
class vtkInformationRequestKey;
 | 
						|
class vtkInformationStringKey;
 | 
						|
class vtkInformationUnsignedLongKey;
 | 
						|
class vtkInformationVector;
 | 
						|
 | 
						|
class VTK_FILTERING_EXPORT vtkInformation : public vtkObject
 | 
						|
{
 | 
						|
public:
 | 
						|
  static vtkInformation *New();
 | 
						|
  vtkTypeRevisionMacro(vtkInformation,vtkObject);
 | 
						|
  void PrintSelf(ostream& os, vtkIndent indent);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Clear all information entries.
 | 
						|
  void Clear();
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Copy all information entries from the given vtkInformation
 | 
						|
  // instance.  Any previously existing entries are removed.  If 
 | 
						|
  // deep==1, a deep copy of the information structure is performed (new 
 | 
						|
  // instances of any contained vtkInformation and vtkInformationVector 
 | 
						|
  // objects are created).
 | 
						|
  void Copy(vtkInformation* from, int deep=0);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Copy the key/value pair associated with the given key in the
 | 
						|
  // given information object.  If deep=1, a deep copy of the information
 | 
						|
  // structure is performed (new instances of any contained vtkInformation and 
 | 
						|
  // vtkInformationVector objects are created).
 | 
						|
  void CopyEntry(vtkInformation* from, vtkInformationKey* key, int deep=0);
 | 
						|
  void CopyEntry(vtkInformation* from, vtkInformationDataObjectKey* key, int deep=0);
 | 
						|
  void CopyEntry(vtkInformation* from, vtkInformationDoubleVectorKey* key, int deep=0);
 | 
						|
  void CopyEntry(vtkInformation* from, vtkInformationExecutivePortKey* key, int deep=0);
 | 
						|
  void CopyEntry(vtkInformation* from, vtkInformationInformationKey* key, int deep=0);
 | 
						|
  void CopyEntry(vtkInformation* from, vtkInformationInformationVectorKey* key, int deep=0);
 | 
						|
  void CopyEntry(vtkInformation* from, vtkInformationIntegerKey* key, int deep=0);
 | 
						|
  void CopyEntry(vtkInformation* from, vtkInformationIntegerVectorKey* key, int deep=0);
 | 
						|
  void CopyEntry(vtkInformation* from, vtkInformationRequestKey* key, int deep=0);
 | 
						|
  void CopyEntry(vtkInformation* from, vtkInformationStringKey* key, int deep=0);
 | 
						|
  void CopyEntry(vtkInformation* from, vtkInformationUnsignedLongKey* key, int deep=0);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Use the given key to lookup a list of other keys in the given
 | 
						|
  // information object.  The key/value pairs associated with these
 | 
						|
  // other keys will be copied.  If deep==1, a deep copy of the
 | 
						|
  // information structure is performed.
 | 
						|
  void CopyEntries(vtkInformation* from, vtkInformationKeyVectorKey* key, int deep=0);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set a request-valued entry.
 | 
						|
  void Set(vtkInformationRequestKey* key);
 | 
						|
  void Remove(vtkInformationRequestKey* key);
 | 
						|
  int Has(vtkInformationRequestKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an integer-valued entry.
 | 
						|
  void Set(vtkInformationIntegerKey* key, int value);
 | 
						|
  int Get(vtkInformationIntegerKey* key);
 | 
						|
  void Remove(vtkInformationIntegerKey* key);
 | 
						|
  int Has(vtkInformationIntegerKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set a vtkIdType-valued entry.
 | 
						|
  void Set(vtkInformationIdTypeKey* key, vtkIdType value);
 | 
						|
  vtkIdType Get(vtkInformationIdTypeKey* key);
 | 
						|
  void Remove(vtkInformationIdTypeKey* key);
 | 
						|
  int Has(vtkInformationIdTypeKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an double-valued entry.
 | 
						|
  void Set(vtkInformationDoubleKey* key, double value);
 | 
						|
  double Get(vtkInformationDoubleKey* key);
 | 
						|
  void Remove(vtkInformationDoubleKey* key);
 | 
						|
  int Has(vtkInformationDoubleKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an integer-vector-valued entry.
 | 
						|
  void Append(vtkInformationIntegerVectorKey* key, int value);
 | 
						|
  void Set(vtkInformationIntegerVectorKey* key, int* value, int length);
 | 
						|
  void Set(vtkInformationIntegerVectorKey* key, int value1, 
 | 
						|
           int value2, int value3);
 | 
						|
  void Set(vtkInformationIntegerVectorKey* key, 
 | 
						|
           int value1, int value2, int value3,
 | 
						|
           int value4, int value5, int value6);
 | 
						|
  int* Get(vtkInformationIntegerVectorKey* key);
 | 
						|
  void Get(vtkInformationIntegerVectorKey* key, int* value);
 | 
						|
  int Length(vtkInformationIntegerVectorKey* key);
 | 
						|
  void Remove(vtkInformationIntegerVectorKey* key);
 | 
						|
  int Has(vtkInformationIntegerVectorKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an integer-pointer-valued entry.
 | 
						|
  void Set(vtkInformationIntegerPointerKey* key, int* value, int length);
 | 
						|
  int* Get(vtkInformationIntegerPointerKey* key);
 | 
						|
  void Get(vtkInformationIntegerPointerKey* key, int* value);
 | 
						|
  int Length(vtkInformationIntegerPointerKey* key);
 | 
						|
  void Remove(vtkInformationIntegerPointerKey* key);
 | 
						|
  int Has(vtkInformationIntegerPointerKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an unsigned-long-valued entry.
 | 
						|
  void Set(vtkInformationUnsignedLongKey* key, unsigned long value);
 | 
						|
  unsigned long Get(vtkInformationUnsignedLongKey* key);
 | 
						|
  void Remove(vtkInformationUnsignedLongKey* key);
 | 
						|
  int Has(vtkInformationUnsignedLongKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an double-vector-valued entry.
 | 
						|
  void Append(vtkInformationDoubleVectorKey* key, double value);
 | 
						|
  void Set(vtkInformationDoubleVectorKey* key, double* value, int length);
 | 
						|
  void Set(vtkInformationDoubleVectorKey* key, double value1, 
 | 
						|
           double value2, double value3);
 | 
						|
  void Set(vtkInformationDoubleVectorKey* key, 
 | 
						|
           double value1, double value2, double value3,
 | 
						|
           double value4, double value5, double value6);
 | 
						|
  double* Get(vtkInformationDoubleVectorKey* key);
 | 
						|
  void Get(vtkInformationDoubleVectorKey* key, double* value);
 | 
						|
  int Length(vtkInformationDoubleVectorKey* key);
 | 
						|
  void Remove(vtkInformationDoubleVectorKey* key);
 | 
						|
  int Has(vtkInformationDoubleVectorKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an InformationKey-vector-valued entry.
 | 
						|
  void Append(vtkInformationKeyVectorKey* key, vtkInformationKey* value);
 | 
						|
  void AppendUnique(vtkInformationKeyVectorKey* key, vtkInformationKey* value);
 | 
						|
  void Set(vtkInformationKeyVectorKey* key, vtkInformationKey** value, int length);
 | 
						|
  void Remove(vtkInformationKeyVectorKey* key, vtkInformationKey* value);
 | 
						|
  vtkInformationKey** Get(vtkInformationKeyVectorKey* key);
 | 
						|
  void Get(vtkInformationKeyVectorKey* key, vtkInformationKey** value);
 | 
						|
  int Length(vtkInformationKeyVectorKey* key);
 | 
						|
  void Remove(vtkInformationKeyVectorKey* key);
 | 
						|
  int Has(vtkInformationKeyVectorKey* key);
 | 
						|
 | 
						|
  // Provide extra overloads of this method to avoid requiring user
 | 
						|
  // code to include the headers for these key types.  Avoid wrapping
 | 
						|
  // them because the original method can be called from the wrappers
 | 
						|
  // anyway and this causes a python help string to be too long.
 | 
						|
  //BTX
 | 
						|
  void Append(vtkInformationKeyVectorKey* key,
 | 
						|
              vtkInformationDataObjectKey* value);
 | 
						|
  void Append(vtkInformationKeyVectorKey* key, vtkInformationDoubleKey* value);
 | 
						|
  void Append(vtkInformationKeyVectorKey* key,
 | 
						|
              vtkInformationDoubleVectorKey* value);
 | 
						|
  void Append(vtkInformationKeyVectorKey* key,
 | 
						|
              vtkInformationExecutivePortKey* value);
 | 
						|
  void Append(vtkInformationKeyVectorKey* key,
 | 
						|
              vtkInformationInformationKey* value);
 | 
						|
  void Append(vtkInformationKeyVectorKey* key,
 | 
						|
              vtkInformationInformationVectorKey* value);
 | 
						|
  void Append(vtkInformationKeyVectorKey* key,
 | 
						|
              vtkInformationIntegerKey* value);
 | 
						|
  void Append(vtkInformationKeyVectorKey* key,
 | 
						|
              vtkInformationIntegerVectorKey* value);
 | 
						|
  void Append(vtkInformationKeyVectorKey* key, vtkInformationStringKey* value);
 | 
						|
  void Append(vtkInformationKeyVectorKey* key,
 | 
						|
              vtkInformationObjectBaseKey* value);
 | 
						|
  void Append(vtkInformationKeyVectorKey* key,
 | 
						|
              vtkInformationUnsignedLongKey* value);
 | 
						|
 | 
						|
  void AppendUnique(vtkInformationKeyVectorKey* key,
 | 
						|
                    vtkInformationDataObjectKey* value);
 | 
						|
  void AppendUnique(vtkInformationKeyVectorKey* key, 
 | 
						|
                    vtkInformationDoubleKey* value);
 | 
						|
  void AppendUnique(vtkInformationKeyVectorKey* key,
 | 
						|
                    vtkInformationDoubleVectorKey* value);
 | 
						|
  void AppendUnique(vtkInformationKeyVectorKey* key,
 | 
						|
                    vtkInformationExecutivePortKey* value);
 | 
						|
  void AppendUnique(vtkInformationKeyVectorKey* key,
 | 
						|
                    vtkInformationInformationKey* value);
 | 
						|
  void AppendUnique(vtkInformationKeyVectorKey* key,
 | 
						|
                    vtkInformationInformationVectorKey* value);
 | 
						|
  void AppendUnique(vtkInformationKeyVectorKey* key,
 | 
						|
                    vtkInformationIntegerKey* value);
 | 
						|
  void AppendUnique(vtkInformationKeyVectorKey* key,
 | 
						|
                    vtkInformationIntegerVectorKey* value);
 | 
						|
  void AppendUnique(vtkInformationKeyVectorKey* key, 
 | 
						|
                    vtkInformationStringKey* value);
 | 
						|
  void AppendUnique(vtkInformationKeyVectorKey* key,
 | 
						|
                    vtkInformationObjectBaseKey* value);
 | 
						|
  void AppendUnique(vtkInformationKeyVectorKey* key,
 | 
						|
                    vtkInformationUnsignedLongKey* value);
 | 
						|
  //ETX
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set a string-valued entry.
 | 
						|
  void Set(vtkInformationStringKey* key, const char*);
 | 
						|
  const char* Get(vtkInformationStringKey* key);
 | 
						|
  void Remove(vtkInformationStringKey* key);
 | 
						|
  int Has(vtkInformationStringKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an entry storing another vtkInformation instance.
 | 
						|
  void Set(vtkInformationInformationKey* key, vtkInformation*);
 | 
						|
  vtkInformation* Get(vtkInformationInformationKey* key);
 | 
						|
  void Remove(vtkInformationInformationKey* key);
 | 
						|
  int Has(vtkInformationInformationKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an entry storing a vtkInformationVector instance.
 | 
						|
  void Set(vtkInformationInformationVectorKey* key, vtkInformationVector*);
 | 
						|
  vtkInformationVector* Get(vtkInformationInformationVectorKey* key);
 | 
						|
  void Remove(vtkInformationInformationVectorKey* key);
 | 
						|
  int Has(vtkInformationInformationVectorKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an entry storing a vtkObjectBase instance.
 | 
						|
  void Set(vtkInformationObjectBaseKey* key, vtkObjectBase*);
 | 
						|
  vtkObjectBase* Get(vtkInformationObjectBaseKey* key);
 | 
						|
  void Remove(vtkInformationObjectBaseKey* key);
 | 
						|
  int Has(vtkInformationObjectBaseKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an entry storing a vtkDataObject instance.
 | 
						|
  void Set(vtkInformationDataObjectKey* key, vtkDataObject*);
 | 
						|
  vtkDataObject* Get(vtkInformationDataObjectKey* key);
 | 
						|
  void Remove(vtkInformationDataObjectKey* key);
 | 
						|
  int Has(vtkInformationDataObjectKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an entry storing a vtkExecutive/port number pair.
 | 
						|
  void Set(vtkInformationExecutivePortKey* key, vtkExecutive*, int);
 | 
						|
  vtkExecutive* GetExecutive(vtkInformationExecutivePortKey* key);
 | 
						|
  int GetPort(vtkInformationExecutivePortKey* key);
 | 
						|
  void Get(vtkInformationExecutivePortKey* key, vtkExecutive*& executive, int &port);
 | 
						|
  void Remove(vtkInformationExecutivePortKey* key);
 | 
						|
  int Has(vtkInformationExecutivePortKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set an entry storing a vector of vtkExecutive/port number pairs.
 | 
						|
  void Append(vtkInformationExecutivePortVectorKey* key,
 | 
						|
              vtkExecutive* executive, int port);
 | 
						|
  void Remove(vtkInformationExecutivePortVectorKey* key,
 | 
						|
              vtkExecutive* executive, int port);
 | 
						|
  void Set(vtkInformationExecutivePortVectorKey* key,
 | 
						|
           vtkExecutive** executives, int* ports, int length);
 | 
						|
  vtkExecutive** GetExecutives(vtkInformationExecutivePortVectorKey* key);
 | 
						|
  int* GetPorts(vtkInformationExecutivePortVectorKey* key);
 | 
						|
  void Get(vtkInformationExecutivePortVectorKey* key,
 | 
						|
           vtkExecutive** executives, int* ports);
 | 
						|
  int Length(vtkInformationExecutivePortVectorKey* key);
 | 
						|
  void Remove(vtkInformationExecutivePortVectorKey* key);
 | 
						|
  int Has(vtkInformationExecutivePortVectorKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Upcast the given key instance.
 | 
						|
  static vtkInformationKey* GetKey(vtkInformationDataObjectKey* key);
 | 
						|
  static vtkInformationKey* GetKey(vtkInformationDoubleKey* key);
 | 
						|
  static vtkInformationKey* GetKey(vtkInformationDoubleVectorKey* key);
 | 
						|
  static vtkInformationKey* GetKey(vtkInformationExecutivePortKey* key);
 | 
						|
  static vtkInformationKey* GetKey(vtkInformationInformationKey* key);
 | 
						|
  static vtkInformationKey* GetKey(vtkInformationInformationVectorKey* key);
 | 
						|
  static vtkInformationKey* GetKey(vtkInformationIntegerKey* key);
 | 
						|
  static vtkInformationKey* GetKey(vtkInformationIntegerVectorKey* key);
 | 
						|
  static vtkInformationKey* GetKey(vtkInformationRequestKey* key);
 | 
						|
  static vtkInformationKey* GetKey(vtkInformationStringKey* key);
 | 
						|
  static vtkInformationKey* GetKey(vtkInformationKey* key);
 | 
						|
  static vtkInformationKey* GetKey(vtkInformationUnsignedLongKey* key);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Initiate garbage collection when a reference is removed.
 | 
						|
  virtual void Register(vtkObjectBase* o);
 | 
						|
  virtual void UnRegister(vtkObjectBase* o);
 | 
						|
 | 
						|
  // Description:
 | 
						|
  // Get/Set the Request ivar
 | 
						|
  void SetRequest(vtkInformationRequestKey *request) { this->Request = request; }
 | 
						|
  vtkInformationRequestKey *GetRequest() { return this->Request; }
 | 
						|
      
 | 
						|
protected:
 | 
						|
  vtkInformation();
 | 
						|
  ~vtkInformation();
 | 
						|
 | 
						|
  // Get/Set a map entry directly through the vtkObjectBase instance
 | 
						|
  // representing the value.  Used internally to manage the map.
 | 
						|
  void SetAsObjectBase(vtkInformationKey* key, vtkObjectBase* value);
 | 
						|
  vtkObjectBase* GetAsObjectBase(vtkInformationKey* key);
 | 
						|
 | 
						|
  // Expand the table to a larger size
 | 
						|
  void ExpandTable();
 | 
						|
  
 | 
						|
  // Internal implementation details.
 | 
						|
  vtkInformationInternals* Internal;
 | 
						|
 | 
						|
  // Garbage collection support.
 | 
						|
  virtual void ReportReferences(vtkGarbageCollector*);
 | 
						|
 | 
						|
  // Report the object associated with the given key to the collector.
 | 
						|
  void ReportAsObjectBase(vtkInformationKey* key,
 | 
						|
                          vtkGarbageCollector* collector);
 | 
						|
 | 
						|
private:
 | 
						|
  //BTX
 | 
						|
  friend class vtkInformationKeyToInformationFriendship;
 | 
						|
  //ETX
 | 
						|
private:
 | 
						|
  vtkInformation(const vtkInformation&);  // Not implemented.
 | 
						|
  void operator=(const vtkInformation&);  // Not implemented.
 | 
						|
  vtkInformationRequestKey *Request;
 | 
						|
};
 | 
						|
 | 
						|
#endif
 | 
						|
 |