/*========================================================================= Program: Visualization Toolkit Module: vtkSQLDatabaseSchema.cxx 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. -------------------------------------------------------------------------*/ #include "vtkToolkits.h" #include "vtkSQLDatabaseSchema.h" #include "vtkObjectFactory.h" #include "vtkStdString.h" #include // va_list #include // ---------------------------------------------------------------------- vtkStandardNewMacro(vtkSQLDatabaseSchema); // ---------------------------------------------------------------------- class vtkSQLDatabaseSchemaInternals { public: // NB: use of string instead of char* here to avoid leaks on destruction. struct Statement { vtkStdString Name; vtkStdString Action; // may have backend-specific stuff vtkStdString Backend; // only active for this backend, if != "" }; struct Column { vtkSQLDatabaseSchema::DatabaseColumnType Type; int Size; // used when required, ignored otherwise (e.g. varchar) vtkStdString Name; vtkStdString Attributes; // may have backend-specific stuff }; struct Index { vtkSQLDatabaseSchema::DatabaseIndexType Type; vtkStdString Name; std::vector ColumnNames; }; struct Trigger { vtkSQLDatabaseSchema::DatabaseTriggerType Type; vtkStdString Name; vtkStdString Action; // may have backend-specific stuff vtkStdString Backend; // only active for this backend, if != "" }; struct Option { vtkStdString Text; vtkStdString Backend; }; struct Table { vtkStdString Name; std::vector Columns; std::vector Indices; std::vector Triggers; std::vector