VTK  9.3.20240424
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
32VTK_ABI_NAMESPACE_BEGIN
35class vtkFloatArray;
36class vtkStringArray;
38
39class VTKDOMAINSCHEMISTRY_EXPORT vtkBlueObeliskDataParser : public vtkXMLParser
40{
41public:
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
68protected:
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
116 std::string* CurrentSymbol;
117 std::string* CurrentName;
120 std::string* CurrentFamily;
128 float CurrentDefaultColor[3];
131 unsigned int CurrentPeriod;
132 unsigned int CurrentGroup;
133
134private:
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
167VTK_ABI_NAMESPACE_END
168#endif
Abstract superclass for all arrays.
Fill a vtkBlueObeliskData container with data from the BODR XML dataset.
static vtkBlueObeliskDataParser * New()
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)
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.
int vtkIdType
Definition vtkType.h:315