<commit_before>#===========================================================================
#
#  Program:   Visualization Toolkit
#  Module:    FindWindowsMangledMethods.cmake
#
#  Copyright (c) <NAME>, <NAME>, <NAME>
#  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.
#
#===========================================================================
<commit_msg>STYLE: Improved documentation of the windows.h removal and the purpose of this script.<commit_after>#===========================================================================
#
#  Program:   Visualization Toolkit
#  Module:    FindWindowsMangledMethods.cmake
#
#  Copyright (c) <NAME>, <NAME>, <NAME>
#  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.
#
#===========================================================================

# As of December 15, 2004 VTK no longer includes windows.h by default
# in most of its header files.  This change results in a 70% compile
# time reduction on Windows compilers because the compiler does not
# have to parse the 280K lines of source the preprocessor produces
# from windows.h.  All VTK code that still includes windows.h does so
# through vtkWindows.h which includes a minimal part of the real
# windows.h header.
#
# In order to avoid the windows method mangling problem all three
# possible names for such methods (Foo, FooA, and FooW) are provided
# using a preprocessor trick.  Users can detect places in their own code
# that may need this trick by using the cmake script
# VTK/Utilities/Upgrading/FindWindowsMangledMethods.cmake.
#
# There are two backward-compatibility issues:
#
# 1.) User code that used the windows API without including windows.h
# that worked before because VTK included it will now break until the
# explicit inclusion is added.  This is considered acceptable because
# the code was technically wrong in the first place.  As a quick-fix,
# users can define VTK_INCLUDE_WINDOWS_H in their application and VTK
# will include windows.h as it did before.
#
# 2.) A few virtual functions in VTK were renamed and replaced by
# non-virtuals that forward their calls to a virtual internal
# implementation.  User code calling these methods will not be affected.
# User code wishing to override these methods in a subclass will have to
# rename to the internal name.  Such user methods will also be exposed
# by the above mentioned CMake script.  The most common such method is
# GetClassName, which has been renamed to GetClassNameInternal.  Since
# user code is supposed to define this method by using vtkTypeMacro or
# vtkTypeRevisionMacro, this should not be a problem.

#-----------------------------------------------------------------------------
# Instructions to use this script:
#
{'fraction_non_alphanumeric': 0.1677459142769041, 'fraction_numerical': 0.004008633980881899, 'mean_word_length': 4.084639498432602, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4327014', 'n_tokens_mistral': 792, 'n_tokens_neox': 754, 'n_words': 387}