// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen // SPDX-FileCopyrightText: Copyright 2008 Sandia Corporation // SPDX-License-Identifier: LicenseRef-BSD-3-Clause-Sandia-USGov #include "vtkSQLDatabaseSchema.h" #include "vtkObjectFactory.h" #include // va_list #include //------------------------------------------------------------------------------ VTK_ABI_NAMESPACE_BEGIN vtkStandardNewMacro(vtkSQLDatabaseSchema); //------------------------------------------------------------------------------ class vtkSQLDatabaseSchemaInternals { public: // NB: use of string instead of char* here to avoid leaks on destruction. struct Statement { std::string Name; std::string Action; // may have backend-specific stuff std::string Backend; // only active for this backend, if != "" }; struct Column { vtkSQLDatabaseSchema::DatabaseColumnType Type; int Size; // used when required, ignored otherwise (e.g. varchar) std::string Name; std::string Attributes; // may have backend-specific stuff }; struct Index { vtkSQLDatabaseSchema::DatabaseIndexType Type; std::string Name; std::vector ColumnNames; }; struct Trigger { vtkSQLDatabaseSchema::DatabaseTriggerType Type; std::string Name; std::string Action; // may have backend-specific stuff std::string Backend; // only active for this backend, if != "" }; struct Option { std::string Text; std::string Backend; }; struct Table { std::string Name; std::vector Columns; std::vector Indices; std::vector Triggers; std::vector