VTK
vtkBlueObeliskDataParser.h
Go to the documentation of this file.
1 /*=========================================================================
2 
3  Program: Visualization Toolkit
4  Module: vtkBlueObeliskDataParser.h
5 
6  Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
7  All rights reserved.
8  See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
9 
10  This software is distributed WITHOUT ANY WARRANTY; without even
11  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
12  PURPOSE. See the above copyright notice for more information.
13 
14 =========================================================================*/
36 #ifndef vtkBlueObeliskDataParser_h
37 #define vtkBlueObeliskDataParser_h
38 
39 #include "vtkDomainsChemistryModule.h" // For export macro
40 #include "vtkXMLParser.h"
41 
42 #include "vtkSmartPointer.h" // For vtkSmartPointer
43 
44 class vtkAbstractArray;
45 class vtkBlueObeliskData;
46 class vtkFloatArray;
47 class vtkStdString;
48 class vtkStringArray;
50 
51 class VTKDOMAINSCHEMISTRY_EXPORT vtkBlueObeliskDataParser : public vtkXMLParser
52 {
53  public:
55  static vtkBlueObeliskDataParser * New();
56 
61  virtual void SetTarget(vtkBlueObeliskData *bodr);
62 
66  virtual int Parse();
67 
69 
74  virtual int Parse(const char *);
75  virtual int Parse(const char *, unsigned int);
77 
78 protected:
81 
82  void StartElement(const char *name, const char **attr);
83  void EndElement(const char *name);
84 
85  void CharacterDataHandler(const char *data, int length);
86 
87  void SetCurrentValue(const char *data, int length);
88  void SetCurrentValue(const char *data);
89 
91 
93  void NewAtomStarted(const char **attr);
94  void NewAtomFinished();
95 
97  void NewValueStarted(const char **attr);
98  void NewValueFinished();
99 
101 
103  None = 0,
122  } CurrentValueType;
123 
130  float CurrentMass;
137  float CurrentDefaultColor[3];
140  unsigned int CurrentPeriod;
141  unsigned int CurrentGroup;
142 
143 private:
144  vtkBlueObeliskDataParser(const vtkBlueObeliskDataParser&) VTK_DELETE_FUNCTION;
145  void operator=(const vtkBlueObeliskDataParser&) VTK_DELETE_FUNCTION;
146 
148 
151  static void ResizeArrayIfNeeded(vtkAbstractArray *arr, vtkIdType ind);
152  static void ResizeAndSetValue(vtkStdString *val,
153  vtkStringArray *arr,
154  vtkIdType ind);
155  static void ResizeAndSetValue(float val,
156  vtkFloatArray *arr,
157  vtkIdType ind);
158  static void ResizeAndSetValue(unsigned short val,
160  vtkIdType ind);
162 
164 
167  static int parseInt(const char *);
168  static float parseFloat(const char *);
169  static void parseFloat3(const char * str, float[3]);
170  static unsigned short parseUnsignedShort(const char *);
172 
174 
178  static vtkStdString * ToLower(vtkStdString *);
179 };
181 
182 #endif
vtkBlueObeliskDataParser::IsProcessingValue
bool IsProcessingValue
Definition: vtkBlueObeliskDataParser.h:96
vtkBlueObeliskDataParser::Period
@ Period
Definition: vtkBlueObeliskDataParser.h:120
vtkBlueObeliskDataParser::Mass
@ Mass
Definition: vtkBlueObeliskDataParser.h:110
vtkBlueObeliskDataParser::CurrentBoilingPoint
float CurrentBoilingPoint
Definition: vtkBlueObeliskDataParser.h:138
vtkBlueObeliskDataParser::CurrentSymbol
vtkStdString * CurrentSymbol
Definition: vtkBlueObeliskDataParser.h:125
vtkBlueObeliskDataParser::CurrentGroup
unsigned int CurrentGroup
Definition: vtkBlueObeliskDataParser.h:141
vtkBlueObeliskDataParser::CurrentElectronAffinity
float CurrentElectronAffinity
Definition: vtkBlueObeliskDataParser.h:133
vtkXMLParser
Parse XML to handle element tags and attributes.
Definition: vtkXMLParser.h:42
vtkBlueObeliskDataParser::CurrentMeltingPoint
float CurrentMeltingPoint
Definition: vtkBlueObeliskDataParser.h:139
vtkBlueObeliskDataParser::CurrentPeriod
unsigned int CurrentPeriod
Definition: vtkBlueObeliskDataParser.h:140
vtkIdType
int vtkIdType
Definition: vtkType.h:287
vtkUnsignedShortArray
dynamic, self-adjusting array of unsigned short
Definition: vtkUnsignedShortArray.h:42
vtkFloatArray
dynamic, self-adjusting array of float
Definition: vtkFloatArray.h:41
vtkX3D::data
@ data
Definition: vtkX3D.h:315
vtkBlueObeliskDataParser::CurrentName
vtkStdString * CurrentName
Definition: vtkBlueObeliskDataParser.h:126
vtkBlueObeliskDataParser::BoilingPoint
@ BoilingPoint
Definition: vtkBlueObeliskDataParser.h:118
vtkBlueObeliskDataParser::CurrentAtomicNumber
int CurrentAtomicNumber
Definition: vtkBlueObeliskDataParser.h:124
vtkBlueObeliskDataParser::PeriodicTableBlock
@ PeriodicTableBlock
Definition: vtkBlueObeliskDataParser.h:107
vtkBlueObeliskDataParser::ElectronicConfiguration
@ ElectronicConfiguration
Definition: vtkBlueObeliskDataParser.h:108
vtkBlueObeliskDataParser::CurrentFamily
vtkStdString * CurrentFamily
Definition: vtkBlueObeliskDataParser.h:129
vtkXMLParser.h
vtkX3D::length
@ length
Definition: vtkX3D.h:393
vtkBlueObeliskDataParser::AtomicNumber
@ AtomicNumber
Definition: vtkBlueObeliskDataParser.h:104
vtkBlueObeliskDataParser::CurrentPeriodicTableBlock
vtkStdString * CurrentPeriodicTableBlock
Definition: vtkBlueObeliskDataParser.h:127
vtkBlueObeliskDataParser
Fill a vtkBlueObeliskData container with data from the BODR XML dataset.
Definition: vtkBlueObeliskDataParser.h:51
vtkBlueObeliskDataParser::Family
@ Family
Definition: vtkBlueObeliskDataParser.h:109
vtkX3D::Group
@ Group
Definition: vtkX3D.h:51
vtkBlueObeliskDataParser::DefaultColor
@ DefaultColor
Definition: vtkBlueObeliskDataParser.h:117
vtkBlueObeliskDataParser::AtomValueType
AtomValueType
Definition: vtkBlueObeliskDataParser.h:102
vtkBlueObeliskDataParser::CurrentElectronicConfiguration
vtkStdString * CurrentElectronicConfiguration
Definition: vtkBlueObeliskDataParser.h:128
vtkBlueObeliskDataParser::CurrentExactMass
float CurrentExactMass
Definition: vtkBlueObeliskDataParser.h:131
vtkBlueObeliskDataParser::CurrentCovalentRadius
float CurrentCovalentRadius
Definition: vtkBlueObeliskDataParser.h:135
vtkXMLParser::New
static vtkXMLParser * New()
vtkBlueObeliskDataParser::PaulingElectronegativity
@ PaulingElectronegativity
Definition: vtkBlueObeliskDataParser.h:114
vtkBlueObeliskData
Contains chemical data from the Blue Obelisk Data Repository.
Definition: vtkBlueObeliskData.h:55
vtkBlueObeliskDataParser::CurrentIonizationEnergy
float CurrentIonizationEnergy
Definition: vtkBlueObeliskDataParser.h:132
vtkBlueObeliskDataParser::CurrentVDWRadius
float CurrentVDWRadius
Definition: vtkBlueObeliskDataParser.h:136
vtkBlueObeliskDataParser::VDWRadius
@ VDWRadius
Definition: vtkBlueObeliskDataParser.h:116
vtkBlueObeliskDataParser::MeltingPoint
@ MeltingPoint
Definition: vtkBlueObeliskDataParser.h:119
vtkSmartPointer.h
vtkXMLParser::Parse
virtual int Parse()
Parse the XML input.
vtkXMLParser::EndElement
virtual void EndElement(const char *name)
vtkBlueObeliskDataParser::Target
vtkBlueObeliskData * Target
Definition: vtkBlueObeliskDataParser.h:90
vtkX3D::name
@ name
Definition: vtkX3D.h:219
vtkAbstractArray
Abstract superclass for all arrays.
Definition: vtkAbstractArray.h:78
vtkBlueObeliskDataParser::IonizationEnergy
@ IonizationEnergy
Definition: vtkBlueObeliskDataParser.h:112
vtkX3D::string
@ string
Definition: vtkX3D.h:490
vtkBlueObeliskDataParser::ExactMass
@ ExactMass
Definition: vtkBlueObeliskDataParser.h:111
vtkBlueObeliskDataParser::CurrentMass
float CurrentMass
Definition: vtkBlueObeliskDataParser.h:130
vtkBlueObeliskDataParser::IsProcessingAtom
bool IsProcessingAtom
Definition: vtkBlueObeliskDataParser.h:92
vtkXMLParser::StartElement
virtual void StartElement(const char *name, const char **atts)
vtkBlueObeliskDataParser::CovalentRadius
@ CovalentRadius
Definition: vtkBlueObeliskDataParser.h:115
vtkBlueObeliskDataParser::CurrentPaulingElectronegativity
float CurrentPaulingElectronegativity
Definition: vtkBlueObeliskDataParser.h:134
vtkBlueObeliskDataParser::CharacterDataValueBuffer
std::string CharacterDataValueBuffer
Definition: vtkBlueObeliskDataParser.h:100
vtkStringArray
a vtkAbstractArray subclass for strings
Definition: vtkStringArray.h:42
vtkStdString
Wrapper around std::string to keep symbols short.
Definition: vtkStdString.h:47
vtkBlueObeliskDataParser::Symbol
@ Symbol
Definition: vtkBlueObeliskDataParser.h:105
vtkXMLParser::CharacterDataHandler
virtual void CharacterDataHandler(const char *data, int length)
vtkBlueObeliskDataParser::ElectronAffinity
@ ElectronAffinity
Definition: vtkBlueObeliskDataParser.h:113
vtkBlueObeliskDataParser::Name
@ Name
Definition: vtkBlueObeliskDataParser.h:106