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.

110 lines
3.4 KiB
C

/*=========================================================================
Program: Visualization Toolkit
Module: vtkMergeTables.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.
=========================================================================*/
/*-------------------------------------------------------------------------
Copyright 2008 Sandia Corporation.
Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
the U.S. Government retains certain rights in this software.
-------------------------------------------------------------------------*/
/**
* @class vtkMergeTables
* @brief combine two tables
*
*
* Combines the columns of two tables into one larger table.
* The number of rows in the resulting table is the sum of the number of
* rows in each of the input tables.
* The number of columns in the output is generally the sum of the number
* of columns in each input table, except in the case where column names
* are duplicated in both tables.
* In this case, if MergeColumnsByName is on (the default), the two columns
* will be merged into a single column of the same name.
* If MergeColumnsByName is off, both columns will exist in the output.
* You may set the FirstTablePrefix and SecondTablePrefix to define how
* the columns named are modified. One of these prefixes may be the empty
* string, but they must be different.
*/
#ifndef vtkMergeTables_h
#define vtkMergeTables_h
#include "vtkInfovisCoreModule.h" // For export macro
#include "vtkTableAlgorithm.h"
class VTKINFOVISCORE_EXPORT vtkMergeTables : public vtkTableAlgorithm
{
public:
static vtkMergeTables* New();
vtkTypeMacro(vtkMergeTables, vtkTableAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
//@{
/**
* The prefix to give to same-named fields from the first table.
* Default is "Table1.".
*/
vtkSetStringMacro(FirstTablePrefix);
vtkGetStringMacro(FirstTablePrefix);
//@}
//@{
/**
* The prefix to give to same-named fields from the second table.
* Default is "Table2.".
*/
vtkSetStringMacro(SecondTablePrefix);
vtkGetStringMacro(SecondTablePrefix);
//@}
//@{
/**
* If on, merges columns with the same name.
* If off, keeps both columns, but calls one
* FirstTablePrefix + name, and the other SecondTablePrefix + name.
* Default is on.
*/
vtkSetMacro(MergeColumnsByName, bool);
vtkGetMacro(MergeColumnsByName, bool);
vtkBooleanMacro(MergeColumnsByName, bool);
//@}
//@{
/**
* If on, all columns will have prefixes except merged columns.
* If off, only unmerged columns with the same name will have prefixes.
* Default is off.
*/
vtkSetMacro(PrefixAllButMerged, bool);
vtkGetMacro(PrefixAllButMerged, bool);
vtkBooleanMacro(PrefixAllButMerged, bool);
//@}
protected:
vtkMergeTables();
~vtkMergeTables() override;
bool MergeColumnsByName;
bool PrefixAllButMerged;
char* FirstTablePrefix;
char* SecondTablePrefix;
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
private:
vtkMergeTables(const vtkMergeTables&) = delete;
void operator=(const vtkMergeTables&) = delete;
};
#endif