Cloned library of VTK-5.0.0 with extra build files for internal package management.
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

/*=========================================================================
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