// SPDX-FileCopyrightText: Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
// SPDX-License-Identifier: BSD-3-Clause

// Object factories should never have deprecation warnings.
// NOLINTNEXTLINE(modernize-macro-to-enum)
#define VTK_DEPRECATION_LEVEL 0

#include "@_vtk_object_factory_library_name@ObjectFactory.h"
#include "vtkVersion.h"

// Include all of the classes we want to create overrides for.
@_vtk_object_factory_includes@

VTK_ABI_NAMESPACE_BEGIN

vtkStandardNewMacro(@_vtk_object_factory_library_name@ObjectFactory);

// Now create the functions to create overrides with.
@_vtk_object_factory_functions@

@_vtk_object_factory_library_name@ObjectFactory::@_vtk_object_factory_library_name@ObjectFactory()
{
@_vtk_object_factory_calls@
}

const char * @_vtk_object_factory_library_name@ObjectFactory::GetVTKSourceVersion() VTK_FUTURE_CONST
{
  return VTK_SOURCE_VERSION;
}

void @_vtk_object_factory_library_name@ObjectFactory::PrintSelf(ostream &os, vtkIndent indent)
{
  this->Superclass::PrintSelf(os, indent);
}

// Registration of object factories.
static unsigned int @_vtk_object_factory_library_name@Count = 0;

@_vtk_object_factory_configure_EXPORT_MACRO@ void @_vtk_object_factory_library_name@_AutoInit_Construct()
{
  if(++@_vtk_object_factory_library_name@Count == 1)
  {
@_vtk_object_factory_configure_INITIAL_CODE@

    @_vtk_object_factory_library_name@ObjectFactory* factory = @_vtk_object_factory_library_name@ObjectFactory::New();
    if (factory)
    {
      // vtkObjectFactory keeps a reference to the "factory",
      vtkObjectFactory::RegisterFactory(factory);
      factory->Delete();
    }
  }
}
VTK_ABI_NAMESPACE_END
