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.

119 lines
3.3 KiB
C++

/*=========================================================================
Program: Visualization Toolkit
Module: vtkFixedWidthTextReader.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 vtkFixedWidthTextReader
* @brief reader for pulling in text files with fixed-width fields
*
*
*
* vtkFixedWidthTextReader reads in a table from a text file where
* each column occupies a certain number of characters.
*
* This class emits ProgressEvent for every 100 lines it reads.
*
*
* @warning
* This first version of the reader will assume that all fields have
* the same width. It also assumes that the first line in the file
* has at least as many fields (i.e. at least as many characters) as
* any other line in the file.
*
* @par Thanks:
* Thanks to Andy Wilson from Sandia National Laboratories for
* implementing this class.
*/
#ifndef vtkFixedWidthTextReader_h
#define vtkFixedWidthTextReader_h
#include "vtkIOInfovisModule.h" // For export macro
#include "vtkTableAlgorithm.h"
class vtkCommand;
class vtkTable;
class VTKIOINFOVIS_EXPORT vtkFixedWidthTextReader : public vtkTableAlgorithm
{
public:
static vtkFixedWidthTextReader* New();
vtkTypeMacro(vtkFixedWidthTextReader, vtkTableAlgorithm);
void PrintSelf(ostream& os, vtkIndent indent) override;
vtkGetStringMacro(FileName);
vtkSetStringMacro(FileName);
//@{
/**
* Set/get the field width
*/
vtkSetMacro(FieldWidth, int);
vtkGetMacro(FieldWidth, int);
//@}
//@{
/**
* If set, this flag will cause the reader to strip whitespace from
* the beginning and ending of each field. Defaults to off.
*/
vtkSetMacro(StripWhiteSpace, bool);
vtkGetMacro(StripWhiteSpace, bool);
vtkBooleanMacro(StripWhiteSpace, bool);
//@}
//@{
/**
* Set/get whether to treat the first line of the file as headers.
*/
vtkGetMacro(HaveHeaders, bool);
vtkSetMacro(HaveHeaders, bool);
vtkBooleanMacro(HaveHeaders, bool);
//@}
//@{
/**
* Set/get the ErrorObserver for the internal vtkTable
* This is useful for applications that want to catch error messages.
*/
void SetTableErrorObserver(vtkCommand*);
vtkGetObjectMacro(TableErrorObserver, vtkCommand);
//@}
protected:
vtkFixedWidthTextReader();
~vtkFixedWidthTextReader() override;
int RequestData(vtkInformation*, vtkInformationVector**, vtkInformationVector*) override;
void OpenFile();
char* FileName;
bool HaveHeaders;
bool StripWhiteSpace;
int FieldWidth;
private:
vtkFixedWidthTextReader(const vtkFixedWidthTextReader&) = delete;
void operator=(const vtkFixedWidthTextReader&) = delete;
vtkCommand* TableErrorObserver;
};
#endif