VTK  9.3.20240419
vtkBlueObeliskDataParser.h
Go to the documentation of this file.
1 // SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
2 // SPDX-License-Identifier: BSD-3-Clause
24 #ifndef vtkBlueObeliskDataParser_h
25 #define vtkBlueObeliskDataParser_h
26 
27 #include "vtkDomainsChemistryModule.h" // For export macro
28 #include "vtkXMLParser.h"
29 
30 #include "vtkSmartPointer.h" // For vtkSmartPointer
31 
32 VTK_ABI_NAMESPACE_BEGIN
33 class vtkAbstractArray;
34 class vtkBlueObeliskData;
35 class vtkFloatArray;
36 class vtkStringArray;
38 
39 class VTKDOMAINSCHEMISTRY_EXPORT vtkBlueObeliskDataParser : public vtkXMLParser
40 {
41 public:
43  void PrintSelf(ostream& os, vtkIndent indent) override;
44 
46 
51  virtual void SetTarget(vtkBlueObeliskData* bodr);
52 
56  int Parse() override;
57 
59 
64  int Parse(const char*) override;
65  int Parse(const char*, unsigned int) override;
67 
68 protected:
71 
72  void StartElement(const char* name, const char** attr) override;
73  void EndElement(const char* name) override;
74 
75  void CharacterDataHandler(const char* data, int length) override;
76 
77  void SetCurrentValue(const char* data, int length);
78  void SetCurrentValue(const char* data);
79 
81 
83  void NewAtomStarted(const char** attr);
85 
87  void NewValueStarted(const char** attr);
89 
91 
93  {
94  None = 0,
112  Group
113  } CurrentValueType;
114 
121  float CurrentMass;
128  float CurrentDefaultColor[3];
131  unsigned int CurrentPeriod;
132  unsigned int CurrentGroup;
133 
134 private:
136  void operator=(const vtkBlueObeliskDataParser&) = delete;
137 
139 
142  static void ResizeArrayIfNeeded(vtkAbstractArray* arr, vtkIdType ind);
143  static void ResizeAndSetValue(std::string* val, vtkStringArray* arr, vtkIdType ind);
144  static void ResizeAndSetValue(float val, vtkFloatArray* arr, vtkIdType ind);
145  static void ResizeAndSetValue(unsigned short val, vtkUnsignedShortArray* arr, vtkIdType ind);
147 
149 
152  static int parseInt(const char*);
153  static float parseFloat(const char*);
154  static void parseFloat3(const char* str, float[3]);
155  static unsigned short parseUnsignedShort(const char*);
157 
159 
163  static std::string* ToLower(std::string*);
165 };
166 
167 VTK_ABI_NAMESPACE_END
168 #endif
Abstract superclass for all arrays.
Fill a vtkBlueObeliskData container with data from the BODR XML dataset.
void EndElement(const char *name) override
void NewAtomStarted(const char **attr)
void StartElement(const char *name, const char **attr) override
void NewValueStarted(const char **attr)
~vtkBlueObeliskDataParser() override
void SetCurrentValue(const char *data)
static vtkBlueObeliskDataParser * New()
virtual void SetTarget(vtkBlueObeliskData *bodr)
Set the target vtkBlueObeliskData object that this parser will populate.
int Parse(const char *, unsigned int) override
These are only implemented to prevent compiler warnings about hidden virtual overloads.
int Parse() override
Start parsing.
int Parse(const char *) override
These are only implemented to prevent compiler warnings about hidden virtual overloads.
void CharacterDataHandler(const char *data, int length) override
void PrintSelf(ostream &os, vtkIndent indent) override
Methods invoked by print to print information about the object including superclasses.
void SetCurrentValue(const char *data, int length)
Contains chemical data from the Blue Obelisk Data Repository.
dynamic, self-adjusting array of float
a simple class to control print indentation
Definition: vtkIndent.h:108
a vtkAbstractArray subclass for strings
dynamic, self-adjusting array of unsigned short
Parse XML to handle element tags and attributes.
Definition: vtkXMLParser.h:29
@ Group
Definition: vtkX3D.h:51
@ length
Definition: vtkX3D.h:393
@ name
Definition: vtkX3D.h:219
@ data
Definition: vtkX3D.h:315
@ string
Definition: vtkX3D.h:490
int vtkIdType
Definition: vtkType.h:315