Full Code of Caphyon/clang-power-tools for AI

master 511648a27cf8 cached
390 files
1.5 MB
385.1k tokens
1374 symbols
1 requests
Download .txt
Showing preview only (1,666K chars total). Download the full file or copy to clipboard to get everything.
Repository: Caphyon/clang-power-tools
Branch: master
Commit: 511648a27cf8
Files: 390
Total size: 1.5 MB

Directory structure:
gitextract_1cs8fm3_/

├── .gitattributes
├── .github/
│   └── workflows/
│       ├── Build-ClangPowerTools.yml
│       └── Run-ClangPowerTools-tests.yml
├── .gitignore
├── ClangPowerTools/
│   ├── Automation/
│   │   ├── full-llvm-update-instructions.md
│   │   ├── get-tidy-checks-and-format.ps1
│   │   ├── input_checks.txt
│   │   └── update_clang-format.ps1
│   ├── CPTReleases/
│   │   └── IncrementRevisionNumber.ps1
│   ├── ClangPowerTools/
│   │   ├── ClangPowerTools.csproj
│   │   ├── ClangPowerTools.csproj.bak
│   │   ├── ClangPowerTools.vsct
│   │   ├── ClangPowerToolsPackage.cs
│   │   ├── Key.snk
│   │   ├── Properties/
│   │   │   ├── AssemblyInfo.cs
│   │   │   ├── Resource.Designer.cs
│   │   │   └── Resource.resx
│   │   ├── Tooling/
│   │   │   └── v1/
│   │   │       ├── clang-build.ps1
│   │   │       └── psClang/
│   │   │           ├── get-header-references.ps1
│   │   │           ├── get-llvm-helper.ps1
│   │   │           ├── get-llvm.ps1
│   │   │           ├── io.ps1
│   │   │           ├── itemdefinition-context.ps1
│   │   │           ├── jsondb-export.ps1
│   │   │           ├── msbuild-expression-eval.ps1
│   │   │           ├── msbuild-project-cache-repository.ps1
│   │   │           ├── msbuild-project-data.ps1
│   │   │           ├── msbuild-project-load.ps1
│   │   │           └── visualstudio-detection.ps1
│   │   ├── VSPackage.resx
│   │   ├── cpt.config
│   │   └── source.extension.vsixmanifest
│   ├── ClangPowerTools.aip
│   ├── ClangPowerTools.sln
│   ├── ClangPowerToolsLib16/
│   │   ├── ClangPowerToolsLib16.csproj
│   │   ├── Key.snk
│   │   └── Properties/
│   │       ├── AssemblyInfo.cs
│   │       ├── Resource.Designer.cs
│   │       └── Resource.resx
│   ├── ClangPowerToolsLib17/
│   │   ├── ClangPowerToolsLib17.csproj
│   │   ├── Key.snk
│   │   └── Properties/
│   │       ├── AssemblyInfo.cs
│   │       ├── Resource.Designer.cs
│   │       └── Resource.resx
│   ├── ClangPowerToolsShared/
│   │   ├── Attributes/
│   │   │   ├── ClangCheckAttribute.cs
│   │   │   ├── ClangFormatPathAttribute.cs
│   │   │   └── ClangTidyPathAttribute.cs
│   │   ├── Builder/
│   │   │   ├── IAsyncBuilder.cs
│   │   │   └── IBuilder.cs
│   │   ├── CMake/
│   │   │   └── CMakeBuilder.cs
│   │   ├── ClangPowerToolsPackage.cs
│   │   ├── ClangPowerToolsPackageImpl.cs
│   │   ├── ClangPowerToolsShared.projitems
│   │   ├── ClangPowerToolsShared.projitems.bak
│   │   ├── ClangPowerToolsShared.shproj
│   │   ├── Commands/
│   │   │   ├── BackgroundTidy/
│   │   │   │   ├── BackgroundTidy.cs
│   │   │   │   ├── DataProcessor.cs
│   │   │   │   └── PowerShellWrapperBackground.cs
│   │   │   ├── BasicCommand.cs
│   │   │   ├── ClangCommand.cs
│   │   │   ├── CommandController.cs
│   │   │   ├── CommandControllerInstance.cs
│   │   │   ├── CommandIds.cs
│   │   │   ├── CommandUILocation.cs
│   │   │   ├── CompileCommand.cs
│   │   │   ├── DocumentationHtmlCommand.cs
│   │   │   ├── DocumentationMdCommand.cs
│   │   │   ├── DocumentationYamlCommand.cs
│   │   │   ├── FindCommand.cs
│   │   │   ├── FindCommandIds.cs
│   │   │   ├── FindViewMenuCommand.cs
│   │   │   ├── FormatCommand.cs
│   │   │   ├── IgnoreCommand.cs
│   │   │   ├── IgnoreCompileCommand.cs
│   │   │   ├── IgnoreFormatCommand.cs
│   │   │   ├── JsonCompilationDatabaseCommand.cs
│   │   │   ├── LookInMenu.cs
│   │   │   ├── Models/
│   │   │   │   └── CacheProjectsItemsModel.cs
│   │   │   ├── OptimizeIncludesCommand.cs
│   │   │   ├── RunController.cs
│   │   │   ├── SettingsCommand.cs
│   │   │   ├── StopCommand.cs
│   │   │   ├── TidyCommand.cs
│   │   │   └── VsCommands.cs
│   │   ├── Convertors/
│   │   │   ├── BooleanToGridLengthConverter.cs
│   │   │   ├── BooleanToVisibilityConverter.cs
│   │   │   ├── ClangFormatFallbackStyleConverter.cs
│   │   │   ├── ClangFormatStyleConverter.cs
│   │   │   ├── ClangGeneralAdditionalIncludesConvertor.cs
│   │   │   ├── ClangTidyHeaderFiltersConvertor.cs
│   │   │   └── ClangTidyUseChecksFromConvertor.cs
│   │   ├── Error/
│   │   │   ├── ErrorDetector.cs
│   │   │   ├── ErrorFormatter.cs
│   │   │   ├── ErrorParserConstants.cs
│   │   │   ├── ErrorWindowController.cs
│   │   │   ├── TaskErrorModel.cs
│   │   │   ├── TaskErrorModelBuilder.cs
│   │   │   └── TaskErrorViewModel.cs
│   │   ├── Events/
│   │   │   ├── ActiveDocumentEventArgs.cs
│   │   │   ├── BoolEventArgs.cs
│   │   │   ├── ClangCommandEventArgs.cs
│   │   │   ├── CleanErrorListEventArgs.cs
│   │   │   ├── CloseDataConnectionEventArgs.cs
│   │   │   ├── CloseDataStreamingEventArgs.cs
│   │   │   ├── ErrorDetectedEventArgs.cs
│   │   │   ├── FormatCommandEventArgs.cs
│   │   │   ├── HasEncodingErrorEventArgs.cs
│   │   │   ├── JsonFilePathArgs.cs
│   │   │   └── VsHierarchyDetectedEventArgs.cs
│   │   ├── Executables/
│   │   │   └── Clang Format Editor.msi
│   │   ├── Export Config/
│   │   │   └── TidyConfigFile.cs
│   │   ├── Extensions/
│   │   │   ├── IntExtension.cs
│   │   │   ├── ObjectExtension.cs
│   │   │   ├── StringExtension.cs
│   │   │   └── TaskExtensions.cs
│   │   ├── Files Operations/
│   │   │   ├── FileChangerWatcher.cs
│   │   │   ├── FileOpener.cs
│   │   │   └── FilePathCollector.cs
│   │   ├── Helpers/
│   │   │   ├── ActiveWindowProperties.cs
│   │   │   ├── ApiUtility.cs
│   │   │   ├── AutomationUtil.cs
│   │   │   ├── ClangTidyCleaner.cs
│   │   │   ├── DocumentHandler.cs
│   │   │   ├── FileSystem.cs
│   │   │   ├── FormatEditorUtility.cs
│   │   │   ├── GenerateDocumentation.cs
│   │   │   ├── JoinUtility.cs
│   │   │   ├── LaunchCompilationDbProgrammatically.cs
│   │   │   ├── ManageEncoding.cs
│   │   │   ├── NetworkUtility.cs
│   │   │   ├── PCHCleaner.cs
│   │   │   ├── PackageUtility.cs
│   │   │   ├── ProjectConfigurationHandler.cs
│   │   │   ├── PropertyHandler.cs
│   │   │   ├── RegistryUtility.cs
│   │   │   ├── RunningDocTableEvents.cs
│   │   │   ├── ScriptGenerator.cs
│   │   │   ├── SettingsApi.cs
│   │   │   ├── SettingsPathBuilder.cs
│   │   │   ├── SolutionInfo.cs
│   │   │   ├── StatusBarHandler.cs
│   │   │   ├── UIUpdater.cs
│   │   │   ├── VsWindowController.cs
│   │   │   └── Vsix.cs
│   │   ├── IgnoreActions/
│   │   │   └── IgnoreItem.cs
│   │   ├── Items/
│   │   │   ├── CurrentDocument.cs
│   │   │   ├── CurrentProject.cs
│   │   │   ├── CurrentProjectItem.cs
│   │   │   ├── CurrentSolution.cs
│   │   │   ├── IItem.cs
│   │   │   └── ItemsCollector.cs
│   │   ├── MVVM/
│   │   │   ├── .clang-format
│   │   │   ├── AutoCompleteHistory/
│   │   │   │   ├── ASTMatchers.cs
│   │   │   │   └── AutoCompleteBehavior.cs
│   │   │   ├── CollectionElementsCounter.cs
│   │   │   ├── Command/
│   │   │   │   └── RelayCommand.cs
│   │   │   ├── Commands/
│   │   │   │   ├── FileCommand.cs
│   │   │   │   ├── RelayCommand.cs
│   │   │   │   ├── TidyDiffCommand.cs
│   │   │   │   └── VSThemeCommand.cs
│   │   │   ├── CommonSettingsFunctionality.cs
│   │   │   ├── Constants/
│   │   │   │   ├── CPPKeywords.cs
│   │   │   │   ├── ComboBoxConstants.cs
│   │   │   │   ├── EncodingConstants.cs
│   │   │   │   ├── FormatEditorConstants.cs
│   │   │   │   ├── IconResourceConstants.cs
│   │   │   │   ├── LLVMVersionsAlternate.cs
│   │   │   │   ├── LlvmConstants.cs
│   │   │   │   ├── LlvmVersions.cs
│   │   │   │   ├── MatchConstants.cs
│   │   │   │   ├── PathConstants.cs
│   │   │   │   ├── PsUpdaterConstants.cs
│   │   │   │   ├── ResourceConstants.cs
│   │   │   │   ├── ThemeConstants.cs
│   │   │   │   ├── TidyConstants.cs
│   │   │   │   └── UIElementsConstants.cs
│   │   │   ├── Controllers/
│   │   │   │   ├── AccountController.cs
│   │   │   │   ├── FindController.cs
│   │   │   │   ├── FormatEditorController.cs
│   │   │   │   ├── FreeTrialController.cs
│   │   │   │   ├── LicenseController.cs
│   │   │   │   ├── LlvmController.cs
│   │   │   │   ├── LookInMenuController.cs
│   │   │   │   └── TidyToolWindowController.cs
│   │   │   ├── FindToolWindowHandler.cs
│   │   │   ├── Interfaces/
│   │   │   │   ├── IAccountValidator.cs
│   │   │   │   ├── IDownload.cs
│   │   │   │   ├── IInstall.cs
│   │   │   │   ├── ILicense.cs
│   │   │   │   ├── IView.cs
│   │   │   │   └── IViewMatche.cs
│   │   │   ├── LicenseValidation/
│   │   │   │   ├── CommercialLicenseValidator.cs
│   │   │   │   ├── LicenseType.cs
│   │   │   │   ├── LocalLicenseValidator.cs
│   │   │   │   ├── PersonalLicenseValidator.cs
│   │   │   │   └── Token.cs
│   │   │   ├── LlvmUri.cs
│   │   │   ├── Models/
│   │   │   │   ├── AccountApiModel.cs
│   │   │   │   ├── AccountModel.cs
│   │   │   │   ├── CompilerSettingsModel.cs
│   │   │   │   ├── FileModel.cs
│   │   │   │   ├── FormatSettingsModel.cs
│   │   │   │   ├── GeneralSettingsModel.cs
│   │   │   │   ├── InputDataModel.cs
│   │   │   │   ├── LicenseModel.cs
│   │   │   │   ├── LlvmModel.cs
│   │   │   │   ├── LlvmSettingsModel.cs
│   │   │   │   ├── MessageModel.cs
│   │   │   │   ├── SelectedFileModel.cs
│   │   │   │   ├── TidyCheckModel.cs
│   │   │   │   ├── TidySettingsModel.cs
│   │   │   │   ├── ToggleModel.cs
│   │   │   │   ├── TokenModel.cs
│   │   │   │   ├── ToolWindowModels/
│   │   │   │   │   ├── AutoCompleteHistoryModel.cs
│   │   │   │   │   ├── ComponentVisibility.cs
│   │   │   │   │   ├── CountStateFilesModel.cs
│   │   │   │   │   ├── CustomMatchesModel.cs
│   │   │   │   │   ├── DefaultArgsModel.cs
│   │   │   │   │   ├── FileType.cs
│   │   │   │   │   ├── FindControllerModel.cs
│   │   │   │   │   ├── FindToolWindowModel.cs
│   │   │   │   │   ├── IconModel.cs
│   │   │   │   │   └── TidyToolWindowModel.cs
│   │   │   │   └── UserModel.cs
│   │   │   ├── OldSettings/
│   │   │   │   ├── ClangFormatPathValue.cs
│   │   │   │   ├── ClangTidyPathValue.cs
│   │   │   │   ├── HeaderFiltersValue.cs
│   │   │   │   └── OldModels/
│   │   │   │       ├── ClangFormatOptions.cs
│   │   │   │       ├── ClangOptions.cs
│   │   │   │       ├── ClangTidyOptions.cs
│   │   │   │       └── DefaultOptions.cs
│   │   │   ├── PreinstalledLlvm.cs
│   │   │   ├── Provider/
│   │   │   │   ├── FindToolWindowProvider.cs
│   │   │   │   └── SettingsProvider.cs
│   │   │   ├── SettingsHandler.cs
│   │   │   ├── SettingsTooltips.cs
│   │   │   ├── TextManipulation.cs
│   │   │   ├── TidyChecks.cs
│   │   │   ├── TidyChecksDefault.cs
│   │   │   ├── ViewModels/
│   │   │   │   ├── AboutSettingsViewModel.cs
│   │   │   │   ├── AutoCompleteHistoryViewModel.cs
│   │   │   │   ├── CompilerSettingsViewModel.cs
│   │   │   │   ├── DetectedStyleInfoViewModel.cs
│   │   │   │   ├── EncodingErrorViewModel.cs
│   │   │   │   ├── FeedbackViewModel.cs
│   │   │   │   ├── FindToolWindowViewModel.cs
│   │   │   │   ├── FolderExplorerViewModel.cs
│   │   │   │   ├── FormatSettingsViewModel.cs
│   │   │   │   ├── InputDataViewModel.cs
│   │   │   │   ├── InputMultipleDataViewModel.cs
│   │   │   │   ├── LicenseViewModel.cs
│   │   │   │   ├── LlvmSettingsViewModel.cs
│   │   │   │   ├── LoginViewModel.cs
│   │   │   │   ├── ReleaseNotesViewModel.cs
│   │   │   │   ├── SettingsViewModel.cs
│   │   │   │   ├── TidyChecksViewModel.cs
│   │   │   │   ├── TidySettingsViewModel.cs
│   │   │   │   ├── TidyToolWindowViewModel.cs
│   │   │   │   ├── ToggleMultipleDataViewModel.cs
│   │   │   │   └── TrialExpiredViewModel.cs
│   │   │   ├── Views/
│   │   │   │   ├── AboutSettingsView.xaml
│   │   │   │   ├── AboutSettingsView.xaml.cs
│   │   │   │   ├── CMakeBetaWarning.xaml
│   │   │   │   ├── CMakeBetaWarning.xaml.cs
│   │   │   │   ├── CompilerSettingsView.xaml
│   │   │   │   ├── CompilerSettingsView.xaml.cs
│   │   │   │   ├── Components/
│   │   │   │   │   ├── BuyNowFooter.xaml
│   │   │   │   │   ├── BuyNowFooter.xaml.cs
│   │   │   │   │   ├── InputList.xaml
│   │   │   │   │   ├── InputList.xaml.cs
│   │   │   │   │   ├── MessageBanner.xaml
│   │   │   │   │   ├── MessageBanner.xaml.cs
│   │   │   │   │   ├── ThreePieceButton.xaml
│   │   │   │   │   ├── ThreePieceButton.xaml.cs
│   │   │   │   │   ├── ThreePieceComponent.xaml
│   │   │   │   │   └── ThreePieceComponent.xaml.cs
│   │   │   │   ├── DialogWindow.cs
│   │   │   │   ├── EncodingErrorView.xaml
│   │   │   │   ├── EncodingErrorView.xaml.cs
│   │   │   │   ├── FeedbackView.xaml
│   │   │   │   ├── FeedbackView.xaml.cs
│   │   │   │   ├── FindToolWindowView.xaml
│   │   │   │   ├── FindToolWindowView.xaml.cs
│   │   │   │   ├── FolderExplorerView.xaml
│   │   │   │   ├── FolderExplorerView.xaml.cs
│   │   │   │   ├── FormatEditorWarning.xaml
│   │   │   │   ├── FormatEditorWarning.xaml.cs
│   │   │   │   ├── FormatSettingsView.xaml
│   │   │   │   ├── FormatSettingsView.xaml.cs
│   │   │   │   ├── InputDataView.xaml
│   │   │   │   ├── InputDataView.xaml.cs
│   │   │   │   ├── LicenseView.xaml
│   │   │   │   ├── LicenseView.xaml.cs
│   │   │   │   ├── LlvmSettingsView.xaml
│   │   │   │   ├── LlvmSettingsView.xaml.cs
│   │   │   │   ├── LoginView.xaml
│   │   │   │   ├── LoginView.xaml.cs
│   │   │   │   ├── ReleaseNotesView.xaml
│   │   │   │   ├── ReleaseNotesView.xaml.cs
│   │   │   │   ├── SearchBoxView.xaml
│   │   │   │   ├── SearchBoxView.xaml.cs
│   │   │   │   ├── SettingsView.xaml
│   │   │   │   ├── SettingsView.xaml.cs
│   │   │   │   ├── Styles/
│   │   │   │   │   ├── AppResources.xaml
│   │   │   │   │   ├── HyperlinkStyle.xaml
│   │   │   │   │   ├── ImageResources.xaml
│   │   │   │   │   ├── SettingsButtonStyle.xaml
│   │   │   │   │   ├── SettingsComboBoxStyle.xaml
│   │   │   │   │   ├── ToggleStyle.xaml
│   │   │   │   │   └── YellowButtonStyle.xaml
│   │   │   │   ├── TidyChecksView.xaml
│   │   │   │   ├── TidyChecksView.xaml.cs
│   │   │   │   ├── TidySettingsView.xaml
│   │   │   │   ├── TidySettingsView.xaml.cs
│   │   │   │   ├── TidyToolWindowView.xaml
│   │   │   │   ├── TidyToolWindowView.xaml.cs
│   │   │   │   ├── ToolWindows/
│   │   │   │   │   ├── FindToolWindow.cs
│   │   │   │   │   └── TidyToolWindow.cs
│   │   │   │   ├── TrialExpiredView.xaml
│   │   │   │   └── TrialExpiredView.xaml.cs
│   │   │   ├── WebApi/
│   │   │   │   └── WebApiUrl.cs
│   │   │   └── XmlSerializer.cs
│   │   ├── Output/
│   │   │   ├── OutputContentModel.cs
│   │   │   ├── OutputProcessor.cs
│   │   │   ├── OutputWindowBuilder.cs
│   │   │   ├── OutputWindowConstants.cs
│   │   │   ├── OutputWindowController.cs
│   │   │   └── OutputWindowModel.cs
│   │   ├── Resources/
│   │   │   └── LICENSE.txt
│   │   ├── Script/
│   │   │   ├── ClangTidyModeParametersFactory.cs
│   │   │   ├── GenericScriptBuilder.cs
│   │   │   ├── ItemRelatedScriptBuilder.cs
│   │   │   ├── PowerShellWrapper.cs
│   │   │   ├── RunModeScriptBuilder.cs
│   │   │   ├── RunningProcesses.cs
│   │   │   ├── ScriptConstants.cs
│   │   │   └── VerbosityScriptBuilder.cs
│   │   ├── Services/
│   │   │   ├── PowerShellService.cs
│   │   │   └── VsServiceProvider.cs
│   │   ├── SilentFile/
│   │   │   ├── SilentFileChangerBuilder.cs
│   │   │   ├── SilentFileChangerController.cs
│   │   │   ├── SilentFileChangerEqualityComparer.cs
│   │   │   └── SilentFileChangerModel.cs
│   │   ├── Squiggle/
│   │   │   ├── SquiggleErrorTag.cs
│   │   │   ├── SquiggleErrorTagger.cs
│   │   │   ├── SquiggleErrorTaggerProvider.cs
│   │   │   ├── SquiggleModel.cs
│   │   │   ├── SquiggleViewModel.cs
│   │   │   └── SquigglesFactory.cs
│   │   ├── TextOperationsInterfaces/
│   │   │   ├── IDetector.cs
│   │   │   └── ITextFormatter.cs
│   │   └── Tooling/
│   │       └── v1/
│   │           ├── clang-build.ps1
│   │           └── psClang/
│   │               ├── get-header-references.ps1
│   │               ├── get-llvm-helper.ps1
│   │               ├── get-llvm.ps1
│   │               ├── integration-project.tests.ps1
│   │               ├── integration-projects/
│   │               │   ├── CptIntegrationProjects.sln
│   │               │   └── itemgroups/
│   │               │       └── test.vcxproj
│   │               ├── io.ps1
│   │               ├── io.tests.ps1
│   │               ├── itemdefinition-context.ps1
│   │               ├── jsondb-export.ps1
│   │               ├── jsondb-export.tests.ps1
│   │               ├── msbuild-expression-eval.ps1
│   │               ├── msbuild-expression-eval.tests.ps1
│   │               ├── msbuild-project-cache-repository.ps1
│   │               ├── msbuild-project-cache-repository.tests.ps1
│   │               ├── msbuild-project-data.ps1
│   │               ├── msbuild-project-data.tests.ps1
│   │               ├── msbuild-project-load.ps1
│   │               ├── msbuild-project-load.tests.ps1
│   │               ├── visualstudio-detection.ps1
│   │               ├── visualstudio-detection.tests.ps1
│   │               └── ~advinst.tests.ps1
│   ├── ClangPowerToolsUnitTests/
│   │   ├── ClangCommandTests/
│   │   │   ├── IgnoreCompileCommandTests.cs
│   │   │   ├── IgnoreFormatCommandTests.cs
│   │   │   └── ScriptTests.cs
│   │   ├── ClangPowerToolsUnitTests.csproj
│   │   ├── Constants/
│   │   │   └── IgnoreCommand.cs
│   │   ├── PackageTests/
│   │   │   └── AsyncPackageTests.cs
│   │   ├── Settings Tests/
│   │   │   ├── CompilerSettingsTests.cs
│   │   │   ├── FormatSettingsTests.cs
│   │   │   ├── GeneralSettingsTests.cs
│   │   │   └── TidySettingsTests.cs
│   │   ├── VSVersionTests.cs
│   │   └── VsServiceProviderTests.cs
│   ├── VsixAI/
│   │   └── InfoDocument.txt
│   └── cert.pfx
├── LICENSE.TXT
└── README.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
# Auto detect text files and perform LF normalization
* text=auto


================================================
FILE: .github/workflows/Build-ClangPowerTools.yml
================================================
# This is a basic workflow to help you get started with Actions

name: Build Clang Power Tools and generate vsix with Advenced Installer

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the master branch
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "build"
  build:
    # The type of runner that the job will run on
    runs-on: windows-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v2
        
      - name: Add msbuild to PATH
        uses: microsoft/setup-msbuild@v1.1
        
      - name: Restore dependencies
        run: dotnet restore ClangPowerTools\ClangPowerTools.sln

      - name: Build app for release
        run: msbuild ${{ github.workspace }}\ClangPowerTools\ClangPowerTools.sln -t:rebuild -property:Configuration=Release

  generate-aip:
    runs-on: windows-latest
    needs: build
    if: github.ref == 'refs/heads/master'
    steps:
      - uses: actions/checkout@v2
      - name: Add msbuild to PATH
        uses: microsoft/setup-msbuild@v1.1
        
      - name: Restore dependencies
        run: dotnet restore ClangPowerTools\ClangPowerTools.sln

      - name: Build app for release
        run: msbuild ${{ github.workspace }}\ClangPowerTools\ClangPowerTools.sln -t:rebuild -property:Configuration=Release
      - name: Create ClangPowerTools.vsix- build AIP
        uses: caphyon/advinst-github-action@v1.0
        with:
          advinst-license: ${{ secrets.ADVINST_LICENSE_KEY }}
          advinst-enable-automation: 'true'
          aip-path: ${{ github.workspace }}\ClangPowerTools\ClangPowerTools.aip
      - run: |
          AdvancedInstaller.com /edit ${{ github.workspace }}\ClangPowerTools\ClangPowerTools.aip /SetProperty Identifier="Caphyon.9ce239f2-d27a-432c-906c-1d55a123dbfd"
          AdvancedInstaller.com /edit ${{ github.workspace }}\ClangPowerTools\ClangPowerTools.aip /SetProperty Name="Clang Power Tools 2022"
          AdvancedInstaller.com /edit ${{ github.workspace }}\ClangPowerTools\ClangPowerTools.aip /SetPackageName ClangPowerTools2022

      - name: Create ClangPowerTools2022.vsix - build AIP
        uses: caphyon/advinst-github-action@v1.0
        with:
          advinst-license: ${{ secrets.ADVINST_LICENSE_KEY }}
          advinst-enable-automation: 'true'
          aip-path: ${{ github.workspace }}\ClangPowerTools\ClangPowerTools.aip

     
      - name: Archive production ClangPowerTools artifacts (cpt generated with advanced installer)
        uses: actions/upload-artifact@v4
        with:
          name: VsixAI
          path: ${{ github.workspace }}\ClangPowerTools\VsixAI\ClangPowerTools.vsix

      - name: Archive production ClangPowerTools 2022 artifacts (cpt 2022 generated with advanced installer)
        uses: actions/upload-artifact@v4
        with:
          name: VsixAI2022
          path: ${{ github.workspace }}\ClangPowerTools\VsixAI\ClangPowerTools2022.vsix
      




================================================
FILE: .github/workflows/Run-ClangPowerTools-tests.yml
================================================
name: Run script tests

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the master branch
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:

# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
  # This workflow contains a single job called "run-script-tests"
  run-script-tests:
    # The type of runner that the job will run on
    runs-on: windows-latest

    # Steps represent a sequence of tasks that will be executed as part of the job
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - name: Check out repository code
        uses: actions/checkout@v2

      - name: Perform Pester tests from the command-line
        shell: pwsh
        run: Invoke-Pester

================================================
FILE: .gitignore
================================================
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.

# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates

# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
build/
bld/
[Bb]in/
[Oo]bj/

#Nuget
[Pp]ackages

# Visual Studio cache/options directory

.vs/
.DS_Store
ClangPowerTools/ClangPowerTools/ClangPowerToolsLib16.dll
ClangPowerTools/ClangPowerTools/ClangPowerToolsLib17.dll
ClangPowerTools/CPTReleases/ClangPowerTools2022.vsix
ClangPowerTools/CPTReleases/ClangPowerTools.vsix
ClangPowerTools/ClangPowerToolsShared/Tooling/.vscode/launch.json


================================================
FILE: ClangPowerTools/Automation/full-llvm-update-instructions.md
================================================

# Copilot recipe – Update clang-format & LLVM metadata

When the user says something like:

> Update clang-format and LLVM version to `<NEW_LLVM_VERSION>` with CPT previous release tag `<CPT_PREVIOUS_RELEASE_TAG>`

you must do **all** of the following steps from the **repo root** (`clang-power-tools`).

> ⚠️ **Important:**  
> The value of `kCptGithubLlvm` is **the Clang Power Tools GitHub release that contains the previous assets**  
> (`#Url to assets (clang++ and clang-tidy) from previous release made by Clang Power Tools on github`).  
> If the user did **not** provide `<CPT_PREVIOUS_RELEASE_TAG>`, you **must ask the user** for it before editing
> `get-llvm-helper.ps1`. Do **not** guess it.

---

## 1. Run the PowerShell updater

From the **repo root**, run:

```powershell
& ".\ClangPowerTools\Tidy_Checks_Automation\update-clang-format.ps1" -LlvmVersion <NEW_LLVM_VERSION>
```

Example for LLVM 21.1.6:

```powershell
& ".\ClangPowerTools\Tidy_Checks_Automation\update-clang-format.ps1" -LlvmVersion 21.1.6
```

This downloads:

```
https://github.com/llvm/llvm-project/releases/download/llvmorg-<NEW_LLVM_VERSION>/LLVM-<NEW_LLVM_VERSION>-win64.exe
```

runs the installer into a temporary folder, then copies the new `clang-format.exe` to:

```
ClangPowerTools/ClangPowerToolsShared/Executables/clang-format.exe
```

You do **not** need to manually edit the EXE; just ensure this path is updated.

---

## 2. Update C# version lists

### 2.1 File: `ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/LLVMVersionsAlternate.cs`

In the `VersionAlternateUri` list, insert the new version **at the top** (as the first element), keeping the rest unchanged.

Pattern:

```diff
public static List<string> VersionAlternateUri { get; } = new List<string>
{
+  "<NEW_LLVM_VERSION>",
   "18.1.2",
   "17.0.1",
   "16.0.6",
   // ...
};
```

---

### 2.2 File: `ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/LlvmVersions.cs`

In the `Versions` list, insert the new version **at the top** (first element), keeping the rest unchanged.

Pattern:

```diff
public static List<string> Versions { get; } = new List<string>
{
+  "<NEW_LLVM_VERSION>",
   "18.1.2",
   "17.0.1",
   "16.0.6",
   // ...
};
```

---

## 3. Update the PowerShell helper script

### File: `ClangPowerTools/ClangPowerToolsShared/Tooling/v1/psClang/get-llvm-helper.ps1`

At the top of this file there is a comment:

```powershell
#Url to assets (clang++ and clang-tidy) from previous release made by Clang Power Tools on github
```

This means:

- `kCptGithubLlvm` must point to the **previous Clang Power Tools GitHub release** that contains the clang++/clang-tidy assets.
- `kCptGithubLlvmVersion` is a human-readable description for the LLVM version.

> 🔴 **Rule for Copilot:**  
> If the user did **not** provide `<CPT_PREVIOUS_RELEASE_TAG>`, you must ask:  
> *“What is the Clang Power Tools GitHub release tag that contains the previous clang++/clang-tidy assets (for kCptGithubLlvm)?”*  
> Only after the user answers, update `kCptGithubLlvm`.

Once the user has provided `<CPT_PREVIOUS_RELEASE_TAG>`, update both variables like this:

```diff
-Set-Variable -name kCptGithubLlvm -value "https://github.com/Caphyon/clang-power-tools/releases/download/v2023.9.0" `
+Set-Variable -name kCptGithubLlvm -value "https://github.com/Caphyon/clang-power-tools/releases/download/<CPT_PREVIOUS_RELEASE_TAG>" `
                                   -option Constant
-Set-Variable -name kCptGithubLlvmVersion -value "18.1.2 (LLVM 18.1.2)" -Option Constant
+Set-Variable -name kCptGithubLlvmVersion -value "<NEW_LLVM_VERSION> (LLVM <NEW_LLVM_VERSION>)" -Option Constant
```

---

## 4. Summary for Copilot

When asked to update LLVM to `<NEW_LLVM_VERSION>`:

1. **Run the update script** from the repo root:

```powershell
& ".\ClangPowerTools\Tidy_Checks_Automation\update-clang-format.ps1" -LlvmVersion <NEW_LLVM_VERSION>
```

2. **Edit** `ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/LLVMVersionsAlternate.cs`:
   - Insert `<NEW_LLVM_VERSION>` as the first element in `VersionAlternateUri`.

3. **Edit** `ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/LlvmVersions.cs`:
   - Insert `<NEW_LLVM_VERSION>` as the first element in `Versions`.

4. **Edit** `get-llvm-helper.ps1`:
   - If `<CPT_PREVIOUS_RELEASE_TAG>` is **not provided**, ask the user for it.
   - After receiving it, update:
     - `kCptGithubLlvm` → `"https://github.com/Caphyon/clang-power-tools/releases/download/<CPT_PREVIOUS_RELEASE_TAG>"`
     - `kCptGithubLlvmVersion` → `"<NEW_LLVM_VERSION> (LLVM <NEW_LLVM_VERSION>)"`

5. After all changes, show diffs for:
   - `LLVMVersionsAlternate.cs`
   - `LlvmVersions.cs`
   - `get-llvm-helper.ps1`
   - Confirm the script replaced `clang-format.exe`.


================================================
FILE: ClangPowerTools/Automation/get-tidy-checks-and-format.ps1
================================================
param(
    [string]$OutFile = "input_checks.txt",
    [string]$Url     = "https://clang.llvm.org/extra/clang-tidy/checks/list.html"
)

# Make sure TLS is OK on older PowerShells
[Net.ServicePointManager]::SecurityProtocol =
    [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls13

# Download HTML
$response = Invoke-WebRequest -Uri $Url
$html = $response.Content

# Regex:
# <a class="reference internal" ...>
#   <span class="doc">CHECK-NAME</span>
# </a>
$pattern = '<a[^>]*class=["'']reference internal["''][^>]*>\s*<span[^>]*class=["'']doc["''][^>]*>([^<]+)</span>\s*</a>'

$matches = [regex]::Matches(
    $html,
    $pattern,
    [System.Text.RegularExpressions.RegexOptions]::IgnoreCase
)

$checks = @()

foreach ($m in $matches) {
    $name = $m.Groups[1].Value.Trim()
    if ([string]::IsNullOrWhiteSpace($name)) { continue }

    # Names can contain letters, digits, -, _, .
    if ($name -match '^[A-Za-z0-9_.-]+$') {
        $checks += $name
    }
}

# Sort & dedupe
$checks = $checks | Sort-Object -Unique

# Write to file
$checks | Set-Content -Path $OutFile -Encoding UTF8

Write-Host "$($checks.Count) checks written to '$OutFile'"


#-------------------------------------------------------------- Format here --------------------------------------------------------------------------------------------------------

# Will convert bugprone-empty-catch list in new TidyCheckModel { Name = "bugprone-empty-catch", IsChecked = false }, and remove dublicates

# Input and output file paths
$inputFilePath = "input_checks.txt"
$outputFilePath = "output_checks.txt"

# Read checks from input file
$checks = Get-Content $inputFilePath

# Sort the checks alphabetically
$sortedChecks = $checks | Sort-Object

# Create a hashtable to store unique checks
$uniqueChecks = @{}

# Format and add each unique check to the hashtable
foreach ($check in $sortedChecks) {
    if (-not $uniqueChecks.ContainsKey($check)) {
        $uniqueChecks[$check] = "new TidyCheckModel { Name = `"$check`", IsChecked = false },"
    }
}

# Sort the unique checks alphabetically again
$sortedUniqueChecks = $uniqueChecks.Values | Sort-Object

# Write sorted unique checks to output file
$sortedUniqueChecks | Out-File $outputFilePath

Write-Host "Formatted unique checks written to $outputFilePath"


================================================
FILE: ClangPowerTools/Automation/input_checks.txt
================================================
abseil-cleanup-ctad
abseil-duration-addition
abseil-duration-comparison
abseil-duration-conversion-cast
abseil-duration-division
abseil-duration-factory-float
abseil-duration-factory-scale
abseil-duration-subtraction
abseil-duration-unnecessary-conversion
abseil-faster-strsplit-delimiter
abseil-no-internal-dependencies
abseil-no-namespace
abseil-redundant-strcat-calls
abseil-str-cat-append
abseil-string-find-startswith
abseil-string-find-str-contains
abseil-time-comparison
abseil-time-subtraction
abseil-upgrade-duration-conversions
altera-id-dependent-backward-branch
altera-kernel-name-restriction
altera-single-work-item-barrier
altera-struct-pack-align
altera-unroll-loops
android-cloexec-accept
android-cloexec-accept4
android-cloexec-creat
android-cloexec-dup
android-cloexec-epoll-create
android-cloexec-epoll-create1
android-cloexec-fopen
android-cloexec-inotify-init
android-cloexec-inotify-init1
android-cloexec-memfd-create
android-cloexec-open
android-cloexec-pipe
android-cloexec-pipe2
android-cloexec-socket
android-comparison-in-temp-failure-retry
boost-use-ranges
boost-use-to-string
bugprone-argument-comment
bugprone-assert-side-effect
bugprone-assignment-in-if-condition
bugprone-bad-signal-to-kill-thread
bugprone-bitwise-pointer-cast
bugprone-bool-pointer-implicit-conversion
bugprone-branch-clone
bugprone-capturing-this-in-member-variable
bugprone-casting-through-void
bugprone-chained-comparison
bugprone-command-processor
bugprone-compare-pointer-to-member-virtual-function
bugprone-copy-constructor-init
bugprone-copy-constructor-mutates-argument
bugprone-crtp-constructor-accessibility
bugprone-dangling-handle
bugprone-default-operator-new-on-overaligned-type
bugprone-derived-method-shadowing-base-method
bugprone-dynamic-static-initializers
bugprone-easily-swappable-parameters
bugprone-empty-catch
bugprone-exception-copy-constructor-throws
bugprone-exception-escape
bugprone-float-loop-counter
bugprone-fold-init-type
bugprone-forward-declaration-namespace
bugprone-forwarding-reference-overload
bugprone-implicit-widening-of-multiplication-result
bugprone-inaccurate-erase
bugprone-inc-dec-in-conditions
bugprone-incorrect-enable-if
bugprone-incorrect-enable-shared-from-this
bugprone-incorrect-roundings
bugprone-infinite-loop
bugprone-integer-division
bugprone-invalid-enum-default-initialization
bugprone-lambda-function-name
bugprone-macro-parentheses
bugprone-macro-repeated-side-effects
bugprone-misleading-setter-of-reference
bugprone-misplaced-operator-in-strlen-in-alloc
bugprone-misplaced-pointer-arithmetic-in-alloc
bugprone-misplaced-widening-cast
bugprone-move-forwarding-reference
bugprone-multi-level-implicit-pointer-conversion
bugprone-multiple-new-in-one-expression
bugprone-multiple-statement-macro
bugprone-narrowing-conversions
bugprone-no-escape
bugprone-nondeterministic-pointer-iteration-order
bugprone-non-zero-enum-to-bool-conversion
bugprone-not-null-terminated-result
bugprone-optional-value-conversion
bugprone-parent-virtual-call
bugprone-pointer-arithmetic-on-polymorphic-object
bugprone-posix-return
bugprone-random-generator-seed
bugprone-raw-memory-call-on-non-trivial-type
bugprone-redundant-branch-condition
bugprone-reserved-identifier
bugprone-return-const-ref-from-parameter
bugprone-shared-ptr-array-mismatch
bugprone-signal-handler
bugprone-signed-char-misuse
bugprone-sizeof-container
bugprone-sizeof-expression
bugprone-spuriously-wake-up-functions
bugprone-standalone-empty
bugprone-std-namespace-modification
bugprone-string-constructor
bugprone-string-integer-assignment
bugprone-string-literal-with-embedded-nul
bugprone-stringview-nullptr
bugprone-suspicious-enum-usage
bugprone-suspicious-include
bugprone-suspicious-memory-comparison
bugprone-suspicious-memset-usage
bugprone-suspicious-missing-comma
bugprone-suspicious-realloc-usage
bugprone-suspicious-semicolon
bugprone-suspicious-string-compare
bugprone-suspicious-stringview-data-usage
bugprone-swapped-arguments
bugprone-switch-missing-default-case
bugprone-tagged-union-member-count
bugprone-terminating-continue
bugprone-throwing-static-initialization
bugprone-throw-keyword-missing
bugprone-too-small-loop-variable
bugprone-unchecked-optional-access
bugprone-unchecked-string-to-number-conversion
bugprone-undefined-memory-manipulation
bugprone-undelegated-constructor
bugprone-unhandled-exception-at-new
bugprone-unhandled-self-assignment
bugprone-unintended-char-ostream-output
bugprone-unique-ptr-array-mismatch
bugprone-unsafe-functions
bugprone-unused-local-non-trivial-variable
bugprone-unused-raii
bugprone-unused-return-value
bugprone-use-after-move
bugprone-virtual-near-miss
cert-arr39-c
cert-con36-c
cert-con54-cpp
cert-ctr56-cpp
cert-dcl03-c
cert-dcl16-c
cert-dcl37-c
cert-dcl50-cpp
cert-dcl51-cpp
cert-dcl54-cpp
cert-dcl58-cpp
cert-dcl59-cpp
cert-env33-c
cert-err09-cpp
cert-err33-c
cert-err34-c
cert-err52-cpp
cert-err58-cpp
cert-err60-cpp
cert-err61-cpp
cert-exp42-c
cert-fio38-c
cert-flp30-c
cert-flp37-c
cert-int09-c
cert-mem57-cpp
cert-msc24-c
cert-msc30-c
cert-msc32-c
cert-msc33-c
cert-msc50-cpp
cert-msc51-cpp
cert-msc54-cpp
cert-oop11-cpp
cert-oop54-cpp
cert-oop57-cpp
cert-oop58-cpp
cert-pos44-c
cert-pos47-c
cert-sig30-c
cert-str34-c
clang-analyzer-core.BitwiseShift
clang-analyzer-core.CallAndMessage
clang-analyzer-core.DivideZero
clang-analyzer-core.NonNullParamChecker
clang-analyzer-core.NullDereference
clang-analyzer-core.StackAddressEscape
clang-analyzer-core.UndefinedBinaryOperatorResult
clang-analyzer-core.uninitialized.ArraySubscript
clang-analyzer-core.uninitialized.Assign
clang-analyzer-core.uninitialized.Branch
clang-analyzer-core.uninitialized.CapturedBlockVariable
clang-analyzer-core.uninitialized.NewArraySize
clang-analyzer-core.uninitialized.UndefReturn
clang-analyzer-core.VLASize
clang-analyzer-cplusplus.ArrayDelete
clang-analyzer-cplusplus.InnerPointer
clang-analyzer-cplusplus.Move
clang-analyzer-cplusplus.NewDelete
clang-analyzer-cplusplus.NewDeleteLeaks
clang-analyzer-cplusplus.PlacementNew
clang-analyzer-cplusplus.SelfAssignment
clang-analyzer-cplusplus.StringChecker
clang-analyzer-deadcode.DeadStores
clang-analyzer-fuchsia.HandleChecker
clang-analyzer-nullability.NullableDereferenced
clang-analyzer-nullability.NullablePassedToNonnull
clang-analyzer-nullability.NullableReturnedFromNonnull
clang-analyzer-nullability.NullPassedToNonnull
clang-analyzer-nullability.NullReturnedFromNonnull
clang-analyzer-optin.core.EnumCastOutOfRange
clang-analyzer-optin.cplusplus.UninitializedObject
clang-analyzer-optin.cplusplus.VirtualCall
clang-analyzer-optin.mpi.MPI-Checker
clang-analyzer-optin.osx.cocoa.localizability.EmptyLocalizationContextChecker
clang-analyzer-optin.osx.cocoa.localizability.NonLocalizedStringChecker
clang-analyzer-optin.performance.GCDAntipattern
clang-analyzer-optin.performance.Padding
clang-analyzer-optin.portability.UnixAPI
clang-analyzer-optin.taint.TaintedAlloc
clang-analyzer-osx.API
clang-analyzer-osx.cocoa.AtSync
clang-analyzer-osx.cocoa.AutoreleaseWrite
clang-analyzer-osx.cocoa.ClassRelease
clang-analyzer-osx.cocoa.Dealloc
clang-analyzer-osx.cocoa.IncompatibleMethodTypes
clang-analyzer-osx.cocoa.Loops
clang-analyzer-osx.cocoa.MissingSuperCall
clang-analyzer-osx.cocoa.NilArg
clang-analyzer-osx.cocoa.NonNilReturnValue
clang-analyzer-osx.cocoa.NSAutoreleasePool
clang-analyzer-osx.cocoa.NSError
clang-analyzer-osx.cocoa.ObjCGenerics
clang-analyzer-osx.cocoa.RetainCount
clang-analyzer-osx.cocoa.RunLoopAutoreleaseLeak
clang-analyzer-osx.cocoa.SelfInit
clang-analyzer-osx.cocoa.SuperDealloc
clang-analyzer-osx.cocoa.UnusedIvars
clang-analyzer-osx.cocoa.VariadicMethodTypes
clang-analyzer-osx.coreFoundation.CFError
clang-analyzer-osx.coreFoundation.CFNumber
clang-analyzer-osx.coreFoundation.CFRetainRelease
clang-analyzer-osx.coreFoundation.containers.OutOfBounds
clang-analyzer-osx.coreFoundation.containers.PointerSizedValues
clang-analyzer-osx.NumberObjectConversion
clang-analyzer-osx.ObjCProperty
clang-analyzer-osx.SecKeychainAPI
clang-analyzer-security.cert.env.InvalidPtr
clang-analyzer-security.FloatLoopCounter
clang-analyzer-security.insecureAPI.bcmp
clang-analyzer-security.insecureAPI.bcopy
clang-analyzer-security.insecureAPI.bzero
clang-analyzer-security.insecureAPI.decodeValueOfObjCType
clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling
clang-analyzer-security.insecureAPI.getpw
clang-analyzer-security.insecureAPI.gets
clang-analyzer-security.insecureAPI.mkstemp
clang-analyzer-security.insecureAPI.mktemp
clang-analyzer-security.insecureAPI.rand
clang-analyzer-security.insecureAPI.strcpy
clang-analyzer-security.insecureAPI.UncheckedReturn
clang-analyzer-security.insecureAPI.vfork
clang-analyzer-security.PutenvStackArray
clang-analyzer-security.SetgidSetuidOrder
clang-analyzer-unix.API
clang-analyzer-unix.BlockInCriticalSection
clang-analyzer-unix.cstring.BadSizeArg
clang-analyzer-unix.cstring.NullArg
clang-analyzer-unix.Errno
clang-analyzer-unix.Malloc
clang-analyzer-unix.MallocSizeof
clang-analyzer-unix.MismatchedDeallocator
clang-analyzer-unix.StdCLibraryFunctions
clang-analyzer-unix.Stream
clang-analyzer-unix.Vfork
clang-analyzer-webkit.NoUncountedMemberChecker
clang-analyzer-webkit.RefCntblBaseVirtualDtor
clang-analyzer-webkit.UncountedLambdaCapturesChecker
concurrency-mt-unsafe
concurrency-thread-canceltype-asynchronous
cppcoreguidelines-avoid-capturing-lambda-coroutines
cppcoreguidelines-avoid-c-arrays
cppcoreguidelines-avoid-const-or-ref-data-members
cppcoreguidelines-avoid-do-while
cppcoreguidelines-avoid-goto
cppcoreguidelines-avoid-magic-numbers
cppcoreguidelines-avoid-non-const-global-variables
cppcoreguidelines-avoid-reference-coroutine-parameters
cppcoreguidelines-c-copy-assignment-signature
cppcoreguidelines-explicit-virtual-functions
cppcoreguidelines-init-variables
cppcoreguidelines-interfaces-global-init
cppcoreguidelines-macro-to-enum
cppcoreguidelines-macro-usage
cppcoreguidelines-misleading-capture-default-by-value
cppcoreguidelines-missing-std-forward
cppcoreguidelines-narrowing-conversions
cppcoreguidelines-noexcept-destructor
cppcoreguidelines-noexcept-move-operations
cppcoreguidelines-noexcept-swap
cppcoreguidelines-no-malloc
cppcoreguidelines-non-private-member-variables-in-classes
cppcoreguidelines-no-suspend-with-lock
cppcoreguidelines-owning-memory
cppcoreguidelines-prefer-member-initializer
cppcoreguidelines-pro-bounds-array-to-pointer-decay
cppcoreguidelines-pro-bounds-avoid-unchecked-container-access
cppcoreguidelines-pro-bounds-constant-array-index
cppcoreguidelines-pro-bounds-pointer-arithmetic
cppcoreguidelines-pro-type-const-cast
cppcoreguidelines-pro-type-cstyle-cast
cppcoreguidelines-pro-type-member-init
cppcoreguidelines-pro-type-reinterpret-cast
cppcoreguidelines-pro-type-static-cast-downcast
cppcoreguidelines-pro-type-union-access
cppcoreguidelines-pro-type-vararg
cppcoreguidelines-rvalue-reference-param-not-moved
cppcoreguidelines-slicing
cppcoreguidelines-special-member-functions
cppcoreguidelines-use-default-member-init
cppcoreguidelines-use-enum-class
cppcoreguidelines-virtual-class-destructor
darwin-avoid-spinlock
darwin-dispatch-once-nonstatic
fuchsia-default-arguments-calls
fuchsia-default-arguments-declarations
fuchsia-header-anon-namespaces
fuchsia-multiple-inheritance
fuchsia-overloaded-operator
fuchsia-statically-constructed-objects
fuchsia-temporary-objects
fuchsia-trailing-return
fuchsia-virtual-inheritance
google-build-explicit-make-pair
google-build-namespaces
google-build-using-namespace
google-default-arguments
google-explicit-constructor
google-global-names-in-headers
google-objc-avoid-nsobject-new
google-objc-avoid-throwing-exception
google-objc-function-naming
google-objc-global-variable-declaration
google-readability-avoid-underscore-in-googletest-name
google-readability-braces-around-statements
google-readability-casting
google-readability-function-size
google-readability-namespace-comments
google-readability-todo
google-runtime-float
google-runtime-int
google-runtime-operator
google-upgrade-googletest-case
hicpp-avoid-c-arrays
hicpp-avoid-goto
hicpp-braces-around-statements
hicpp-deprecated-headers
hicpp-exception-baseclass
hicpp-explicit-conversions
hicpp-function-size
hicpp-ignored-remove-result
hicpp-invalid-access-moved
hicpp-member-init
hicpp-move-const-arg
hicpp-multiway-paths-covered
hicpp-named-parameter
hicpp-new-delete-operators
hicpp-no-array-decay
hicpp-no-assembler
hicpp-noexcept-move
hicpp-no-malloc
hicpp-signed-bitwise
hicpp-special-member-functions
hicpp-static-assert
hicpp-undelegated-constructor
hicpp-uppercase-literal-suffix
hicpp-use-auto
hicpp-use-emplace
hicpp-use-equals-default
hicpp-use-equals-delete
hicpp-use-noexcept
hicpp-use-nullptr
hicpp-use-override
hicpp-vararg
linuxkernel-must-check-errs
llvm-else-after-return
llvm-header-guard
llvm-include-order
llvmlibc-callee-namespace
llvmlibc-implementation-in-namespace
llvmlibc-inline-function-decl
llvmlibc-restrict-system-libc-headers
llvm-namespace-comment
llvm-prefer-isa-or-dyn-cast-in-conditionals
llvm-prefer-register-over-unsigned
llvm-prefer-static-over-anonymous-namespace
llvm-qualified-auto
llvm-twine-local
llvm-use-new-mlir-op-builder
llvm-use-ranges
misc-confusable-identifiers
misc-const-correctness
misc-coroutine-hostile-raii
misc-definitions-in-headers
misc-header-include-cycle
misc-include-cleaner
misc-misleading-bidirectional
misc-misleading-identifier
misc-misplaced-const
misc-new-delete-overloads
misc-non-copyable-objects
misc-non-private-member-variables-in-classes
misc-no-recursion
misc-override-with-different-visibility
misc-predictable-rand
misc-redundant-expression
misc-static-assert
misc-throw-by-value-catch-by-reference
misc-unconventional-assign-operator
misc-uniqueptr-reset-release
misc-unused-alias-decls
misc-unused-parameters
misc-unused-using-decls
misc-use-anonymous-namespace
misc-use-internal-linkage
modernize-avoid-bind
modernize-avoid-c-arrays
modernize-avoid-setjmp-longjmp
modernize-avoid-variadic-functions
modernize-concat-nested-namespaces
modernize-deprecated-headers
modernize-deprecated-ios-base-aliases
modernize-loop-convert
modernize-macro-to-enum
modernize-make-shared
modernize-make-unique
modernize-min-max-use-initializer-list
modernize-pass-by-value
modernize-raw-string-literal
modernize-redundant-void-arg
modernize-replace-auto-ptr
modernize-replace-disallow-copy-and-assign-macro
modernize-replace-random-shuffle
modernize-return-braced-init-list
modernize-shrink-to-fit
modernize-type-traits
modernize-unary-static-assert
modernize-use-auto
modernize-use-bool-literals
modernize-use-constraints
modernize-use-default-member-init
modernize-use-designated-initializers
modernize-use-emplace
modernize-use-equals-default
modernize-use-equals-delete
modernize-use-integer-sign-comparison
modernize-use-nodiscard
modernize-use-noexcept
modernize-use-nullptr
modernize-use-override
modernize-use-ranges
modernize-use-scoped-lock
modernize-use-starts-ends-with
modernize-use-std-format
modernize-use-std-numbers
modernize-use-std-print
modernize-use-trailing-return-type
modernize-use-transparent-functors
modernize-use-uncaught-exceptions
modernize-use-using
mpi-buffer-deref
mpi-type-mismatch
objc-assert-equals
objc-avoid-nserror-init
objc-dealloc-in-category
objc-forbidden-subclassing
objc-missing-hash
objc-nsdate-formatter
objc-nsinvocation-argument-lifetime
objc-property-declaration
objc-super-self
openmp-exception-escape
openmp-use-default-none
performance-avoid-endl
performance-enum-size
performance-faster-string-find
performance-for-range-copy
performance-implicit-conversion-in-loop
performance-inefficient-algorithm
performance-inefficient-string-concatenation
performance-inefficient-vector-operation
performance-move-const-arg
performance-move-constructor-init
performance-no-automatic-move
performance-noexcept-destructor
performance-noexcept-move-constructor
performance-noexcept-swap
performance-no-int-to-ptr
performance-trivially-destructible
performance-type-promotion-in-math-fn
performance-unnecessary-copy-initialization
performance-unnecessary-value-param
portability-avoid-pragma-once
portability-restrict-system-includes
portability-simd-intrinsics
portability-std-allocator-const
portability-template-virtual-member-function
readability-ambiguous-smartptr-reset-call
readability-avoid-const-params-in-decls
readability-avoid-nested-conditional-operator
readability-avoid-return-with-void-value
readability-avoid-unconditional-preprocessor-if
readability-braces-around-statements
readability-const-return-type
readability-container-contains
readability-container-data-pointer
readability-container-size-empty
readability-convert-member-functions-to-static
readability-delete-null-pointer
readability-duplicate-include
readability-else-after-return
readability-enum-initial-value
readability-function-cognitive-complexity
readability-function-size
readability-identifier-length
readability-identifier-naming
readability-implicit-bool-conversion
readability-inconsistent-declaration-parameter-name
readability-isolate-declaration
readability-magic-numbers
readability-make-member-function-const
readability-math-missing-parentheses
readability-misleading-indentation
readability-misplaced-array-index
readability-named-parameter
readability-non-const-parameter
readability-operators-representation
readability-qualified-auto
readability-redundant-access-specifiers
readability-redundant-casting
readability-redundant-control-flow
readability-redundant-declaration
readability-redundant-function-ptr-dereference
readability-redundant-inline-specifier
readability-redundant-member-init
readability-redundant-parentheses
readability-redundant-preprocessor
readability-redundant-smartptr-get
readability-redundant-string-cstr
readability-redundant-string-init
readability-redundant-typename
readability-reference-to-constructed-temporary
readability-simplify-boolean-expr
readability-simplify-subscript-expr
readability-static-accessed-through-instance
readability-static-definition-in-anonymous-namespace
readability-string-compare
readability-suspicious-call-argument
readability-uniqueptr-delete-release
readability-uppercase-literal-suffix
readability-use-anyofallof
readability-use-concise-preprocessor-directives
readability-use-std-min-max
zircon-temporary-objects


================================================
FILE: ClangPowerTools/Automation/update_clang-format.ps1
================================================
<#
.SYNOPSIS
  Download and update clang-format.exe for a given LLVM version.

.DESCRIPTION
  - Downloads the official LLVM Windows installer from GitHub releases:
      https://github.com/llvm/llvm-project/releases/download/llvmorg-<VERSION>/LLVM-<VERSION>-win64.exe
  - Runs the installer silently into a temporary folder.
  - Locates clang-format.exe in the installed tree.
  - Replaces:
      ClangPowerTools/ClangPowerToolsShared/Executables/clang-format.exe

.PARAMETER LlvmVersion
  LLVM version, e.g. "20.1.0" or "21.1.6".

.PARAMETER RepoRoot
  (Optional) Path to the repository root.
  Defaults to one level above the script location.

.EXAMPLE
  .\update-clang-format.ps1 -LlvmVersion 21.1.6
#>

[CmdletBinding()]
param (
    [Parameter(Mandatory = $true)]
    [string] $LlvmVersion,

    [Parameter(Mandatory = $false)]
    [string] $RepoRoot = (Resolve-Path (Join-Path $PSScriptRoot "..")).Path
)

# -------- Config --------

# GitHub tag prefix
$GithubTagPrefix = "llvmorg"

# Asset file name pattern
# Example: LLVM-21.1.6-win64.exe
$AssetFileName = "LLVM-$LlvmVersion-win64.exe"

# Target clang-format path (relative to repo root)
$TargetRelativePath = "ClangPowerTools\ClangPowerToolsShared\Executables\clang-format.exe"

# -------- Derived paths & URLs --------

$tag = "$GithubTagPrefix-$LlvmVersion"
$baseDownloadUrl = "https://github.com/llvm/llvm-project/releases/download/$tag"
$downloadUrl = "$baseDownloadUrl/$AssetFileName"

$targetPath = Join-Path $RepoRoot $TargetRelativePath

# Temp folder for download & installation
$tempRoot = Join-Path ([System.IO.Path]::GetTempPath()) "cpt-update-clang-format-$($LlvmVersion.Replace('.','-'))"
$null = New-Item -ItemType Directory -Path $tempRoot -Force

$downloadPath = Join-Path $tempRoot $AssetFileName
$installDir   = Join-Path $tempRoot "install"

Write-Host "LLVM version      : $LlvmVersion"
Write-Host "GitHub tag        : $tag"
Write-Host "Download URL      : $downloadUrl"
Write-Host "Repository root   : $RepoRoot"
Write-Host "Target exe path   : $targetPath"
Write-Host ""

try {
    # -------- Download installer --------
    Write-Host "Downloading LLVM installer..."
    Invoke-WebRequest -Uri $downloadUrl -OutFile $downloadPath -UseBasicParsing

    if (-not (Test-Path $downloadPath)) {
        throw "Download failed: file not found at $downloadPath"
    }

    # -------- Run installer silently into temp folder --------
    Write-Host "Running installer silently into: $installDir"
    $null = New-Item -ItemType Directory -Path $installDir -Force

    # LLVM Windows installers are NSIS-based, which typically support:
    #   /S              = silent
    #   /D=<path>       = install directory (no quotes, path must be last arg)
    #
    # We pass arguments as a single string where /D= is last.
    $installArgs = "/S /D=$installDir"

    $process = Start-Process -FilePath $downloadPath `
                             -ArgumentList $installArgs `
                             -Wait `
                             -PassThru

    if ($process.ExitCode -ne 0) {
        throw "Installer exited with code $($process.ExitCode)"
    }

    # -------- Locate clang-format.exe --------
    Write-Host "Searching for clang-format.exe in installed files..."
    $clangFormat = Get-ChildItem -Path $installDir -Recurse -Filter "clang-format.exe" |
                   Select-Object -First 1

    if (-not $clangFormat) {
        throw "clang-format.exe not found under $installDir"
    }

    Write-Host "Found clang-format.exe at: $($clangFormat.FullName)"

    # -------- Replace target file --------
    $targetDir = Split-Path $targetPath -Parent
    if (-not (Test-Path $targetDir)) {
        Write-Host "Creating target directory: $targetDir"
        $null = New-Item -ItemType Directory -Path $targetDir -Force
    }

    Write-Host "Copying new clang-format.exe to target..."
    Copy-Item -Path $clangFormat.FullName -Destination $targetPath -Force

    Write-Host ""
    Write-Host " clang-format.exe updated successfully."
    Write-Host "   Version: $LlvmVersion"
    Write-Host "   Location: $targetPath"
}
catch {
    Write-Error " Failed to update clang-format.exe: $_"
}
finally {
    if (Test-Path $tempRoot) {
        Write-Host "Cleaning up temp folder: $tempRoot"
        Remove-Item -Path $tempRoot -Recurse -Force -ErrorAction SilentlyContinue
    }
}


================================================
FILE: ClangPowerTools/CPTReleases/IncrementRevisionNumber.ps1
================================================
param([Parameter(Mandatory=$true, HelpMessage="Increments revision number in manifest file")][string] $loc)

#Get version from xml and increment revision value
$filepath = "$loc\..\ClangPowerTools\source.extension.vsixmanifest"
$filepathToAip = "$loc\..\ClangPowerTools.aip"
if((Test-Path $filepath) -and (Test-Path $filepathToAip))
{
    #Get xml data from manifest file
    [xml] $data = Get-Content $filepath
    $currentVersion = [Version]::new($data.PackageManifest.Metadata.Identity.Version.ToString())
    
    #Get xml data from aip file
    [xml] $aipData = Get-Content $filepathToAip
		
    #Replace old version with new one in manifest
    $data.PackageManifest.Metadata.Identity.Version = $currentVersion.ToString()
    $data.Save("$filepath")

    #Replace old version with new one in aip file
    $aipData.DOCUMENT.COMPONENT[0].ROW[7].Value = $currentVersion.ToString()
    $aipData.Save("$filepathToAip")
    $resultData = Get-Content $filepathToAip -Encoding utf8
    $result = $resultData -replace " />", "/>"
    # $result > $filepathToAip
    $Utf8NoBomEncoding = New-Object System.Text.UTF8Encoding($False)
    [System.IO.File]::WriteAllLines($filepathToAip, $result, $Utf8NoBomEncoding)
}
else 
{
    Write-Error "Invalid manifest file path"    
}




================================================
FILE: ClangPowerTools/ClangPowerTools/ClangPowerTools.csproj
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="17.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
  <PropertyGroup>
    <RuntimeIdentifiers>win</RuntimeIdentifiers>
  </PropertyGroup>
  <PropertyGroup>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>
  <PropertyGroup>
    <SignAssembly>true</SignAssembly>
  </PropertyGroup>
  <PropertyGroup>
    <AssemblyOriginatorKeyFile>Key.snk</AssemblyOriginatorKeyFile>
  </PropertyGroup>
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectTypeGuids>{82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <ProjectGuid>{51237463-9F4D-44DE-8BC0-587384B9E8B8}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>ClangPowerTools</RootNamespace>
    <AssemblyName>ClangPowerTools</AssemblyName>
    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
    <GeneratePkgDefFile>true</GeneratePkgDefFile>
    <UseCodebase>true</UseCodebase>
    <IncludeAssemblyInVSIXContainer>true</IncludeAssemblyInVSIXContainer>
    <IncludeDebugSymbolsInVSIXContainer>false</IncludeDebugSymbolsInVSIXContainer>
    <IncludeDebugSymbolsInLocalVSIXDeployment>false</IncludeDebugSymbolsInLocalVSIXDeployment>
    <CopyBuildOutputToOutputDirectory>true</CopyBuildOutputToOutputDirectory>
    <CopyOutputSymbolsToOutputDirectory>true</CopyOutputSymbolsToOutputDirectory>
    <StartAction>Program</StartAction>
    <StartProgram Condition="'$(DevEnvDir)' != ''">$(DevEnvDir)devenv.exe</StartProgram>
    <StartArguments>/rootsuffix Exp</StartArguments>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="..\ClangPowerToolsShared\MVVM\Views\ToolWindows\TidyToolWindow.cs">
      <Link>MVVM\Views\TidyToolWindow.cs</Link>
    </Compile>
    <Compile Include="..\ClangPowerToolsShared\MVVM\Views\ToolWindows\FindToolWindow.cs">
      <Link>MVVM\Views\FindToolWindow.cs</Link>
    </Compile>
    <Compile Include="ClangPowerToolsPackage.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Properties\Resource.Designer.cs">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resource.resx</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <Resource Include="..\ClangPowerToolsShared\Resources\[CPT]OptimizeIncludes.png">
      <Link>Resources\[CPT]OptimizeIncludes.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Pinned.png">
      <Link>Resources\TidyToolWindow\[CPT]Pinned.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]UnPinned.png">
      <Link>Resources\TidyToolWindow\[CPT]UnPinned.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CTP]Pinned_dark.png">
      <Link>Resources\TidyToolWindow\[CTP]Pinned_dark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CTP]UnPinned_dark.png">
      <Link>Resources\TidyToolWindow\[CTP]UnPinned_dark.png</Link>
    </Resource>
    <Content Include="Resources\[CPT]Find.png" />
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Diff2.png">
      <Link>Resources\TidyToolWindow\[CPT]Diff2.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Diff_dark.png">
      <Link>Resources\TidyToolWindow\[CPT]Diff_dark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Diff_disabled.png">
      <Link>Resources\TidyToolWindow\[CPT]Diff_disabled.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Fix.png">
      <Link>Resources\TidyToolWindow\[CPT]Fix.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Fix_dark.png">
      <Link>Resources\TidyToolWindow\[CPT]Fix_dark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Fix_disabled.png">
      <Link>Resources\TidyToolWindow\[CPT]Fix_disabled.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Refresh-Tidy.png">
      <Link>Resources\TidyToolWindow\[CPT]Refresh-Tidy.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Refresh_dark.png">
      <Link>Resources\TidyToolWindow\[CPT]Refresh_dark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Refresh_disabled.png">
      <Link>Resources\TidyToolWindow\[CPT]Refresh_disabled.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Remove.png">
      <Link>Resources\TidyToolWindow\[CPT]Remove.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]RemoveFix.png">
      <Link>Resources\TidyToolWindow\[CPT]RemoveFix.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]RemoveFix_dark.png">
      <Link>Resources\TidyToolWindow\[CPT]RemoveFix_dark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]RemoveFix_disabled.png">
      <Link>Resources\TidyToolWindow\[CPT]RemoveFix_disabled.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Remove_dark.png">
      <Link>Resources\TidyToolWindow\[CPT]Remove_dark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Remove_disabled.png">
      <Link>Resources\TidyToolWindow\[CPT]Remove_disabled.png</Link>
    </Resource>
    <Content Include="ClangPowerToolsLib16.dll">
      <IncludeInVSIX>true</IncludeInVSIX>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="ClangPowerToolsLib17.dll">
      <IncludeInVSIX>true</IncludeInVSIX>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Resource Include="..\ClangPowerToolsShared\Resources\SettingsBackground.png">
      <Link>Resources\SettingsBackground.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\AccountAvatarIcon.png">
      <Link>Resources\AccountAvatarIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\AccountIcon.png">
      <Link>Resources\AccountIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\AddInput.png">
      <Link>Resources\AddInput.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\BannerInfo.png">
      <Link>Resources\BannerInfo.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\BannersError.png">
      <Link>Resources\BannersError.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\bannerWarning.png">
      <Link>Resources\bannerWarning.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\Browse.png">
      <Link>Resources\Browse.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ClangFormatIcon.png">
      <Link>Resources\ClangFormatIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ClangPowerToolsIco.ico">
      <Link>Resources\ClangPowerToolsIco.ico</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ClangSplitBackground.png">
      <Link>Resources\ClangSplitBackground.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\CleanSearchIcon.PNG">
      <Link>Resources\CleanSearchIcon.PNG</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\CloudIcon.png">
      <Link>Resources\CloudIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\CodeInputIcon.png">
      <Link>Resources\CodeInputIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\CompileIcon.png">
      <Link>Resources\CompileIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\CPTLogo.png">
      <Link>Resources\CPTLogo.png</Link>
    </Resource>
    <Content Include="..\ClangPowerToolsShared\Executables\clang-format.exe">
      <Link>Executables\clang-format.exe</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
      <VSIXSubPath>.</VSIXSubPath>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Executables\Clang Format Editor.msi">
      <Link>Executables\Clang Format Editor.msi</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
      <VSIXSubPath>.</VSIXSubPath>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Resources\CPTLogoManageExtensionVS.png">
      <Link>Resources\CPTLogoManageExtensionVS.png</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Resource Include="..\ClangPowerToolsShared\Resources\DetectOnFileIcon.png">
      <Link>Resources\DetectOnFileIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\EmptyIcon.png">
      <Link>Resources\EmptyIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ErrorIcon.png">
      <Link>Resources\ErrorIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\FeedbackIcon.png">
      <Link>Resources\FeedbackIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\FileIcon.png">
      <Link>Resources\FileIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\GenerateClangFormatFile.png">
      <Link>Resources\GenerateClangFormatFile.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\GitHubMark.png">
      <Link>Resources\GitHubMark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\iconCommercial.png">
      <Link>Resources\iconCommercial.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\iconFreeTrial.png">
      <Link>Resources\iconFreeTrial.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\iconPersonal.png">
      <Link>Resources\iconPersonal.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\IgnoreIcon.png">
      <Link>Resources\IgnoreIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\InfoIcon.png">
      <Link>Resources\InfoIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\JsonCompilationDatabase.png">
      <Link>Resources\JsonCompilationDatabase.png</Link>
    </Resource>
    <Content Include="..\ClangPowerToolsShared\Resources\LICENSE.txt">
      <Link>Resources\LICENSE.txt</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Resource Include="..\ClangPowerToolsShared\Resources\LoginBackground.png">
      <Link>Resources\LoginBackground.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\LogoutIcon.png">
      <Link>Resources\LogoutIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\PreviewWhiteIcon.png">
      <Link>Resources\PreviewWhiteIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ProjectFilesIcon.png">
      <Link>Resources\ProjectFilesIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ReleaseNotesBackground.png">
      <Link>Resources\ReleaseNotesBackground.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\RemoveInputHover.png">
      <Link>Resources\RemoveInputHover.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\RemoveInputIdle.png">
      <Link>Resources\RemoveInputIdle.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ResetIcon.png">
      <Link>Resources\ResetIcon.png</Link>
    </Resource>
    <Content Include="..\ClangPowerToolsShared\Resources\RunPowerShellCommandPackage.ico">
      <Link>Resources\RunPowerShellCommandPackage.ico</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Resource Include="..\ClangPowerToolsShared\Resources\SearchIcon.PNG">
      <Link>Resources\SearchIcon.PNG</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\SettingsIcon.png">
      <Link>Resources\SettingsIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\SettingsLLVM.png">
      <Link>Resources\SettingsLLVM.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\StopCommandIcon.png">
      <Link>Resources\StopCommandIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\StorageIcon.png">
      <Link>Resources\StorageIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyIcon.png">
      <Link>Resources\TidyIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\WarningIcon.png">
      <Link>Resources\WarningIcon.png</Link>
    </Resource>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\clang-build.ps1">
      <Link>Tooling\v1\clang-build.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\get-llvm-helper.ps1">
      <Link>Tooling\v1\psClang\get-llvm-helper.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\get-llvm.ps1">
      <Link>Tooling\v1\psClang\get-llvm.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\get-header-references.ps1">
      <Link>Tooling\v1\psClang\get-header-references.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\io.ps1">
      <Link>Tooling\v1\psClang\io.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\itemdefinition-context.ps1">
      <Link>Tooling\v1\psClang\itemdefinition-context.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\jsondb-export.ps1">
      <Link>Tooling\v1\psClang\jsondb-export.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\msbuild-expression-eval.ps1">
      <Link>Tooling\v1\psClang\msbuild-expression-eval.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\msbuild-project-data.ps1">
      <Link>Tooling\v1\psClang\msbuild-project-data.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\msbuild-project-load.ps1">
      <Link>Tooling\v1\psClang\msbuild-project-load.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\visualstudio-detection.ps1">
      <Link>Tooling\v1\psClang\visualstudio-detection.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psclang\msbuild-project-cache-repository.ps1">
      <Link>Tooling\v1\psClang\msbuild-project-cache-repository.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <None Include="Key.snk" />
    <None Include="source.extension.vsixmanifest">
      <SubType>Designer</SubType>
    </None>
  </ItemGroup>
  <ItemGroup>
    <Reference Include="PresentationCore" />
    <Reference Include="PresentationFramework" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Design" />
    <Reference Include="System.Runtime.Serialization" />
    <Reference Include="System.Windows" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xaml" />
    <Reference Include="System.Xml" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="WindowsBase" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.VisualStudio.SDK" Version="15.0.1" />
    <PackageReference Include="Microsoft.VisualStudio.Shell.Framework" Version="15.9.28307" />
    <PackageReference Include="Microsoft.VSSDK.BuildTools" Version="17.3.2094">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="System.ComponentModel.Annotations">
      <Version>5.0.0</Version>
    </PackageReference>
    <PackageReference Include="System.Management">
      <Version>5.0.0</Version>
    </PackageReference>
  </ItemGroup>
  <ItemGroup>
    <VSCTCompile Include="ClangPowerTools.vsct">
      <ResourceName>Menus.ctmenu</ResourceName>
      <SubType>Designer</SubType>
    </VSCTCompile>
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Include="Properties\Resource.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>Resource.Designer.cs</LastGenOutput>
      <SubType>Designer</SubType>
    </EmbeddedResource>
    <EmbeddedResource Include="VSPackage.resx">
      <SubType>Designer</SubType>
    </EmbeddedResource>
  </ItemGroup>
  <ItemGroup>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\AppResources.xaml">
      <Link>MVVM\Views\Styles\AppResources.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\HyperlinkStyle.xaml">
      <Link>MVVM\Views\Styles\HyperlinkStyle.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\ImageResources.xaml">
      <Link>MVVM\Views\Styles\ImageResources.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\SettingsButtonStyle.xaml">
      <Link>MVVM\Views\Styles\SettingsButtonStyle.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\SettingsComboBoxStyle.xaml">
      <Link>MVVM\Views\Styles\SettingsComboBoxStyle.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\ToggleStyle.xaml">
      <Link>MVVM\Views\Styles\ToggleStyle.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\YellowButtonStyle.xaml">
      <Link>MVVM\Views\Styles\YellowButtonStyle.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" Condition="'$(VSToolsPath)' != ''" />
  <PropertyGroup>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
  <PropertyGroup>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
  <PropertyGroup>
    <PreBuildEvent>powershell.exe -executionPolicy Bypass -WindowStyle Hidden -file "$(SolutionDir)CPTReleases\IncrementRevisionNumber.ps1" -loc "$(SolutionDir)CPTReleases"</PreBuildEvent>
  </PropertyGroup>
</Project>

================================================
FILE: ClangPowerTools/ClangPowerTools/ClangPowerTools.csproj.bak
================================================
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="17.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <MinimumVisualStudioVersion>17.0</MinimumVisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
  <PropertyGroup>
    <RuntimeIdentifiers>win</RuntimeIdentifiers>
  </PropertyGroup>
  <PropertyGroup>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>
  <PropertyGroup>
    <SignAssembly>true</SignAssembly>
  </PropertyGroup>
  <PropertyGroup>
    <AssemblyOriginatorKeyFile>Key.snk</AssemblyOriginatorKeyFile>
  </PropertyGroup>
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
  <PropertyGroup>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
    <SchemaVersion>2.0</SchemaVersion>
    <ProjectTypeGuids>{82b43b9b-a64c-4715-b499-d71e9ca2bd60};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    <ProjectGuid>{51237463-9F4D-44DE-8BC0-587384B9E8B8}</ProjectGuid>
    <OutputType>Library</OutputType>
    <AppDesignerFolder>Properties</AppDesignerFolder>
    <RootNamespace>ClangPowerTools</RootNamespace>
    <AssemblyName>ClangPowerTools</AssemblyName>
    <TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
    <GeneratePkgDefFile>true</GeneratePkgDefFile>
    <UseCodebase>true</UseCodebase>
    <IncludeAssemblyInVSIXContainer>true</IncludeAssemblyInVSIXContainer>
    <IncludeDebugSymbolsInVSIXContainer>false</IncludeDebugSymbolsInVSIXContainer>
    <IncludeDebugSymbolsInLocalVSIXDeployment>false</IncludeDebugSymbolsInLocalVSIXDeployment>
    <CopyBuildOutputToOutputDirectory>true</CopyBuildOutputToOutputDirectory>
    <CopyOutputSymbolsToOutputDirectory>true</CopyOutputSymbolsToOutputDirectory>
    <StartAction>Program</StartAction>
    <StartProgram Condition="'$(DevEnvDir)' != ''">$(DevEnvDir)devenv.exe</StartProgram>
    <StartArguments>/rootsuffix Exp</StartArguments>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\Debug\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\Release\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <ItemGroup>
    <Compile Include="..\ClangPowerToolsShared\MVVM\Views\ToolWindows\TidyToolWindow.cs">
      <Link>MVVM\Views\TidyToolWindow.cs</Link>
    </Compile>
    <Compile Include="ClangPowerToolsPackage.cs" />
    <Compile Include="Properties\AssemblyInfo.cs" />
    <Compile Include="Properties\Resource.Designer.cs">
      <AutoGen>True</AutoGen>
      <DesignTime>True</DesignTime>
      <DependentUpon>Resource.resx</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <Content Include="Resources\[CPT]GenerateDocumentation.png" />
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Diff2.png">
      <Link>Resources\TidyToolWindow\[CPT]Diff2.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Diff_dark.png">
      <Link>Resources\TidyToolWindow\[CPT]Diff_dark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Diff_disabled.png">
      <Link>Resources\TidyToolWindow\[CPT]Diff_disabled.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Fix.png">
      <Link>Resources\TidyToolWindow\[CPT]Fix.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Fix_dark.png">
      <Link>Resources\TidyToolWindow\[CPT]Fix_dark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Fix_disabled.png">
      <Link>Resources\TidyToolWindow\[CPT]Fix_disabled.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Refresh-Tidy.png">
      <Link>Resources\TidyToolWindow\[CPT]Refresh-Tidy.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Refresh_dark.png">
      <Link>Resources\TidyToolWindow\[CPT]Refresh_dark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Refresh_disabled.png">
      <Link>Resources\TidyToolWindow\[CPT]Refresh_disabled.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Remove.png">
      <Link>Resources\TidyToolWindow\[CPT]Remove.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]RemoveFix.png">
      <Link>Resources\TidyToolWindow\[CPT]RemoveFix.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]RemoveFix_dark.png">
      <Link>Resources\TidyToolWindow\[CPT]RemoveFix_dark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]RemoveFix_disabled.png">
      <Link>Resources\TidyToolWindow\[CPT]RemoveFix_disabled.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Remove_dark.png">
      <Link>Resources\TidyToolWindow\[CPT]Remove_dark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyToolWindow\[CPT]Remove_disabled.png">
      <Link>Resources\TidyToolWindow\[CPT]Remove_disabled.png</Link>
    </Resource>
    <Content Include="ClangPowerToolsLib16.dll">
      <IncludeInVSIX>true</IncludeInVSIX>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Content Include="ClangPowerToolsLib17.dll">
      <IncludeInVSIX>true</IncludeInVSIX>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
    <Resource Include="..\ClangPowerToolsShared\Resources\SettingsBackground.png">
      <Link>Resources\SettingsBackground.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\AccountAvatarIcon.png">
      <Link>Resources\AccountAvatarIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\AccountIcon.png">
      <Link>Resources\AccountIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\AddInput.png">
      <Link>Resources\AddInput.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\BannerInfo.png">
      <Link>Resources\BannerInfo.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\BannersError.png">
      <Link>Resources\BannersError.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\bannerWarning.png">
      <Link>Resources\bannerWarning.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\Browse.png">
      <Link>Resources\Browse.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ClangFormatIcon.png">
      <Link>Resources\ClangFormatIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ClangPowerToolsIco.ico">
      <Link>Resources\ClangPowerToolsIco.ico</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ClangSplitBackground.png">
      <Link>Resources\ClangSplitBackground.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\CleanSearchIcon.PNG">
      <Link>Resources\CleanSearchIcon.PNG</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\CloudIcon.png">
      <Link>Resources\CloudIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\CodeInputIcon.png">
      <Link>Resources\CodeInputIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\CompileIcon.png">
      <Link>Resources\CompileIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\CPTLogo.png">
      <Link>Resources\CPTLogo.png</Link>
    </Resource>
    <Content Include="..\ClangPowerToolsShared\Executables\clang-format.exe">
      <Link>Executables\clang-format.exe</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
      <VSIXSubPath>.</VSIXSubPath>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Executables\ClangFormatEditor.exe">
      <Link>Executables\ClangFormatEditor.exe</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
      <VSIXSubPath>.</VSIXSubPath>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Resources\CPTLogoManageExtensionVS.png">
      <Link>Resources\CPTLogoManageExtensionVS.png</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Resource Include="..\ClangPowerToolsShared\Resources\DetectOnFileIcon.png">
      <Link>Resources\DetectOnFileIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\EmptyIcon.png">
      <Link>Resources\EmptyIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ErrorIcon.png">
      <Link>Resources\ErrorIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\FeedbackIcon.png">
      <Link>Resources\FeedbackIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\FileIcon.png">
      <Link>Resources\FileIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\GenerateClangFormatFile.png">
      <Link>Resources\GenerateClangFormatFile.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\GitHubMark.png">
      <Link>Resources\GitHubMark.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\iconCommercial.png">
      <Link>Resources\iconCommercial.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\iconFreeTrial.png">
      <Link>Resources\iconFreeTrial.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\iconPersonal.png">
      <Link>Resources\iconPersonal.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\IgnoreIcon.png">
      <Link>Resources\IgnoreIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\InfoIcon.png">
      <Link>Resources\InfoIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\JsonCompilationDatabase.png">
      <Link>Resources\JsonCompilationDatabase.png</Link>
    </Resource>
    <Content Include="..\ClangPowerToolsShared\Resources\LICENSE.txt">
      <Link>Resources\LICENSE.txt</Link>
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Resource Include="..\ClangPowerToolsShared\Resources\LoginBackground.png">
      <Link>Resources\LoginBackground.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\LogoutIcon.png">
      <Link>Resources\LogoutIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\PreviewWhiteIcon.png">
      <Link>Resources\PreviewWhiteIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ProjectFilesIcon.png">
      <Link>Resources\ProjectFilesIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ReleaseNotesBackground.png">
      <Link>Resources\ReleaseNotesBackground.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\RemoveInputHover.png">
      <Link>Resources\RemoveInputHover.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\RemoveInputIdle.png">
      <Link>Resources\RemoveInputIdle.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\ResetIcon.png">
      <Link>Resources\ResetIcon.png</Link>
    </Resource>
    <Content Include="..\ClangPowerToolsShared\Resources\RunPowerShellCommandPackage.ico">
      <Link>Resources\RunPowerShellCommandPackage.ico</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Resource Include="..\ClangPowerToolsShared\Resources\SearchIcon.PNG">
      <Link>Resources\SearchIcon.PNG</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\SettingsIcon.png">
      <Link>Resources\SettingsIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\SettingsLLVM.png">
      <Link>Resources\SettingsLLVM.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\StopCommandIcon.png">
      <Link>Resources\StopCommandIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\StorageIcon.png">
      <Link>Resources\StorageIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TeamIcon.png">
      <Link>Resources\TeamIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\TidyIcon.png">
      <Link>Resources\TidyIcon.png</Link>
    </Resource>
    <Resource Include="..\ClangPowerToolsShared\Resources\WarningIcon.png">
      <Link>Resources\WarningIcon.png</Link>
    </Resource>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\clang-build.ps1">
      <Link>Tooling\v1\clang-build.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\get-llvm-helper.ps1">
      <Link>Tooling\v1\psClang\get-llvm-helper.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\get-llvm.ps1">
      <Link>Tooling\v1\psClang\get-llvm.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\get-header-references.ps1">
      <Link>Tooling\v1\psClang\get-header-references.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\io.ps1">
      <Link>Tooling\v1\psClang\io.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\itemdefinition-context.ps1">
      <Link>Tooling\v1\psClang\itemdefinition-context.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\jsondb-export.ps1">
      <Link>Tooling\v1\psClang\jsondb-export.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\msbuild-expression-eval.ps1">
      <Link>Tooling\v1\psClang\msbuild-expression-eval.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\msbuild-project-data.ps1">
      <Link>Tooling\v1\psClang\msbuild-project-data.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\msbuild-project-load.ps1">
      <Link>Tooling\v1\psClang\msbuild-project-load.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psClang\visualstudio-detection.ps1">
      <Link>Tooling\v1\psClang\visualstudio-detection.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <Content Include="..\ClangPowerToolsShared\Tooling\v1\psclang\msbuild-project-cache-repository.ps1">
      <Link>Tooling\v1\psClang\msbuild-project-cache-repository.ps1</Link>
      <IncludeInVSIX>true</IncludeInVSIX>
    </Content>
    <None Include="Key.snk" />
    <None Include="source.extension.vsixmanifest">
      <SubType>Designer</SubType>
    </None>
  </ItemGroup>
  <ItemGroup>
    <Reference Include="PresentationCore" />
    <Reference Include="PresentationFramework" />
    <Reference Include="System" />
    <Reference Include="System.Data" />
    <Reference Include="System.Design" />
    <Reference Include="System.Runtime.Serialization" />
    <Reference Include="System.Windows" />
    <Reference Include="System.Windows.Forms" />
    <Reference Include="System.Xaml" />
    <Reference Include="System.Xml" />
    <Reference Include="System.Xml.Linq" />
    <Reference Include="WindowsBase" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.VisualStudio.SDK" Version="15.0.1" />
    <PackageReference Include="Microsoft.VisualStudio.Shell.Framework" Version="15.9.28307" />
    <PackageReference Include="Microsoft.VSSDK.BuildTools" Version="17.0.3155-preview3">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="System.ComponentModel.Annotations">
      <Version>5.0.0</Version>
    </PackageReference>
    <PackageReference Include="System.Management">
      <Version>5.0.0</Version>
    </PackageReference>
  </ItemGroup>
  <ItemGroup>
    <VSCTCompile Include="ClangPowerTools.vsct">
      <ResourceName>Menus.ctmenu</ResourceName>
      <SubType>Designer</SubType>
    </VSCTCompile>
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Include="Properties\Resource.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>Resource.Designer.cs</LastGenOutput>
    </EmbeddedResource>
    <EmbeddedResource Include="VSPackage.resx">
      <SubType>Designer</SubType>
    </EmbeddedResource>
  </ItemGroup>
  <ItemGroup>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\AppResources.xaml">
      <Link>MVVM\Views\Styles\AppResources.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\HyperlinkStyle.xaml">
      <Link>MVVM\Views\Styles\HyperlinkStyle.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\ImageResources.xaml">
      <Link>MVVM\Views\Styles\ImageResources.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\SettingsButtonStyle.xaml">
      <Link>MVVM\Views\Styles\SettingsButtonStyle.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\SettingsComboBoxStyle.xaml">
      <Link>MVVM\Views\Styles\SettingsComboBoxStyle.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\ToggleStyle.xaml">
      <Link>MVVM\Views\Styles\ToggleStyle.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
    <Page Include="..\ClangPowerToolsShared\MVVM\Views\Styles\YellowButtonStyle.xaml">
      <Link>MVVM\Views\Styles\YellowButtonStyle.xaml</Link>
      <Generator>MSBuild:Compile</Generator>
      <SubType>Designer</SubType>
    </Page>
  </ItemGroup>
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  <Import Project="$(VSToolsPath)\VSSDK\Microsoft.VsSDK.targets" Condition="'$(VSToolsPath)' != ''" />
  <PropertyGroup>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
  <PropertyGroup>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
  <PropertyGroup>
    <PreBuildEvent>powershell.exe -executionPolicy Bypass -WindowStyle Hidden -file "$(SolutionDir)CPTReleases\IncrementRevisionNumber.ps1" -loc "$(SolutionDir)CPTReleases"</PreBuildEvent>
  </PropertyGroup>
</Project>

================================================
FILE: ClangPowerTools/ClangPowerTools/ClangPowerTools.vsct
================================================
<?xml version="1.0" encoding="utf-8"?>
<CommandTable xmlns="http://schemas.microsoft.com/VisualStudio/2005-10-18/CommandTable" xmlns:xs="http://www.w3.org/2001/XMLSchema">

	<Extern href="stdidcmd.h" />
	<Extern href="vsshlids.h" />
	<Commands package="guidClangPowerToolsPackage">

		<Menus>
			<!--Context menu-->
			<Menu guid="guidClangPowerToolsPackageCmdSet" id="Submenu" priority="0x0000" type="Menu">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForSubmenu" />
				<Strings>
					<ButtonText>Clang Power Tools</ButtonText>
				</Strings>
			</Menu>

			<!--Toolbar menu-->
			<Menu guid="guidClangPowerToolsPackageCmdSet" id="Toolbar" type="Toolbar">
				<CommandFlag>DefaultDocked</CommandFlag>
				<Strings>
					<ButtonText>Clang Power Tools</ButtonText>
					<CommandName>Clang Power Tools</CommandName>
				</Strings>
			</Menu>

			<!--Tidy Drop-Down Menu-->
			<Menu guid="guidClangPowerToolsPackageCmdSet" id="DromDownMenu" type="MenuController" priority="0x0001">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="ToolbarGroup" />
				<CommandFlag>TextChanges</CommandFlag>
				<Strings>
					<ButtonText>Clang Tidy</ButtonText>
					<CommandName>Clang Power Tools</CommandName>
				</Strings>
			</Menu>

      <!--Documentation Drop-Down Menu-->
      <Menu guid="guidClangPowerToolsPackageCmdSet" id="DromDownDocumentationMenu" type="MenuController" priority="0x0102">
        <Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForJsonDatabase" />
        <CommandFlag>DefaultDocked</CommandFlag>
        <Strings>
          <ButtonText>Generate Documentation</ButtonText>
          <CommandName>Generate Documentation</CommandName>
        </Strings>
      </Menu>
		</Menus>


		<!-- Goups declarations -->
		<!-- All the command buttons must be placed inside of a group -->
		<Groups>

			<!-- Submenus groups -->

			<Group guid="guidClangPowerToolsPackageCmdSet" id="GroupForSubmenu" priority="0x0000" />

      <Group guid="guidClangPowerToolsPackageCmdSet" id="FindToolWindowGroup" priority="0x0600">
        <Parent guid="guidSHLMainMenu" id="IDM_VS_MENU_VIEW" />
      </Group>

			<Group guid="guidClangPowerToolsPackageCmdSet" id="ToolbarGroup" priority="0x0000">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="Toolbar" />
			</Group>
      
      <Group guid="guidClangPowerToolsPackageCmdSet" id="DromDownDocumentationMenuGroup" priority="0x0000">
        <Parent guid="guidClangPowerToolsPackageCmdSet" id="DromDownDocumentationMenu" />
      </Group>

			<!-- Context Menu groups-->
			<Group guid="guidClangPowerToolsPackageCmdSet" id="GroupForCommands" priority="0x0000" />
			<Group guid="guidClangPowerToolsPackageCmdSet" id="GroupForIgnore" priority="0x0002" />
			<Group guid="guidClangPowerToolsPackageCmdSet" id="GroupForJsonDatabase" priority="0x0003" />
			<Group guid="guidClangPowerToolsPackageCmdSet" id="GroupForSettings" priority="0x0004" />

		</Groups>


		<!-- Commands declaration -->
		<!-- Each button coresponds to a specific custom command from VS Extension -->
		<Buttons>

			<!-- Context Menu buttons -->


			<!-- Clang Compile Context Menu button -->
			<Button guid="guidClangPowerToolsPackageCmdSet" id="CompileId" priority="0x0000" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForCommands" />
				<Icon guid="guidImageCompile" id="Compile" />
				<CommandFlag>DefaultDisabled</CommandFlag>
				<Strings>
					<ButtonText>Compile</ButtonText>
				</Strings>
			</Button>

			<!--Clang Tidy button -->
			<Button guid="guidClangPowerToolsPackageCmdSet" id="TidyId" priority="0x0001" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForCommands" />
				<Icon guid="guidImageTidy" id="Tidy" />
				<CommandFlag>DefaultDisabled</CommandFlag>
				<CommandFlag>TextChanges</CommandFlag>
				<Strings>
					<ButtonText>Tidy</ButtonText>
				</Strings>
			</Button>

			<!-- Clang Tidy-Fix context menu button  -->
			<!--
      <Button guid="guidClangPowerToolsPackageCmdSet" id="TidyFixId" priority="0x0003" type="Button">
        <Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForCommands" />
        <Icon guid="guidImageEmpty" id="Empty" />
        <CommandFlag>DefaultDisabled</CommandFlag>
        <Strings>
          <ButtonText>Tidy-Fix</ButtonText>
        </Strings>
      </Button>-->

			<!-- Clang Format Context Menu button -->
			<Button guid="guidClangPowerToolsPackageCmdSet" id="ClangFormatId" priority="0x0004" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForCommands" />
				<Icon guid="guidImageFormat" id="Format" />
				<CommandFlag>DefaultDisabled</CommandFlag>
				<Strings>
					<ButtonText>Format</ButtonText>
				</Strings>
			</Button>

      <!-- Clang Find Context Menu button -->
      <Button guid="guidClangPowerToolsPackageCmdSet" id="FindId" priority="0x0004" type="Button">
        <Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForCommands" />
        <Icon guid="guidImageFind" id="Find" />
        <CommandFlag>DefaultDisabled</CommandFlag>
        <Strings>
          <ButtonText>Find</ButtonText>
        </Strings>
      </Button>

      <!-- Clang Optimize Includes Context Menu button -->
      <Button guid="guidClangPowerToolsPackageCmdSet" id="OptimizeIncludesId" priority="0x0005" type="Button">
        <Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForCommands" />
        <Icon guid="guidImageOptimizeIncludes" id="OptimizeIncludes" />
        <CommandFlag>DefaultDisabled</CommandFlag>
        <Strings>
          <ButtonText>Optimize Includes (BETA)</ButtonText>
        </Strings>
      </Button>

			<!-- Stop Clang execution Context Menu button -->
			<Button guid="guidClangPowerToolsPackageCmdSet" id="StopClangId" priority="0x0006" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForCommands" />
				<Icon guid="guidImageStopClang" id="StopClang" />
				<CommandFlag>DefaultDisabled</CommandFlag>
				<Strings>
					<ButtonText>Stop</ButtonText>
				</Strings>
			</Button>

			<!-- Ignore file for clang compile Context Menu button -->
			<Button guid="guidClangPowerToolsPackageCmdSet" id="IgnoreCompileId" priority="0x0007" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForIgnore" />
				<Icon guid="guidImageIgnoreFormat" id="IgnoreFormat" />
				<CommandFlag>DefaultDisabled</CommandFlag>
				<Strings>
					<ButtonText>Ignore at Compile</ButtonText>
				</Strings>
			</Button>

			<!-- Ignore file for clang format Context Menu button -->
			<Button guid="guidClangPowerToolsPackageCmdSet" id="IgnoreFormatId" priority="0x0008" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForIgnore" />
				<Icon guid="guidImageEmpty" id="Empty" />
				<CommandFlag>DefaultDisabled</CommandFlag>
				<Strings>
					<ButtonText>Ignore at Format</ButtonText>
				</Strings>
			</Button>
      
      <!-- Find Command from view menu -->
      <Button guid="guidClangPowerToolsPackageCmdSet" id="FindToolWindowId" priority="0x0100" type="Button">
        <Parent guid="guidClangPowerToolsPackageCmdSet" id="FindToolWindowGroup" />
        <Icon guid="guidImageFind" id="Find" />
        <CommandFlag>DynamicVisibility</CommandFlag>
        <Strings>
          <ButtonText>Find Tool Window - Clang Power Tools</ButtonText>
        </Strings>
      </Button>

			<!-- Export JSON Compilation Database Context Menu button -->
			<Button guid="guidClangPowerToolsPackageCmdSet" id="JsonCompilationDatabaseId" priority="0x0008" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForJsonDatabase" />
				<Icon guid="guidImageJsonCompilationDb" id="JsonCompilationDb" />
				<CommandFlag>DefaultDisabled</CommandFlag>
				<Strings>
					<ButtonText>Export Compilation Database</ButtonText>
				</Strings>
			</Button>

      <!-- Generate documentation yaml Context Menu button -->
      <Button guid="guidClangPowerToolsPackageCmdSet" id="DocumentationYamlId" priority="0x0000" type="Button">
        <Parent guid="guidClangPowerToolsPackageCmdSet" id="DromDownDocumentationMenuGroup" />
        <Icon guid="guidImageDocumentation" id="Documentation" />
        <CommandFlag>DefaultDisabled</CommandFlag>
        <Strings>
          <ButtonText>Yaml</ButtonText>
        </Strings>
      </Button>

      <!-- Generate documentation html Context Menu button -->
      <Button guid="guidClangPowerToolsPackageCmdSet" id="DocumentationHtmlId" priority="0x0001" type="Button">
        <Parent guid="guidClangPowerToolsPackageCmdSet" id="DromDownDocumentationMenuGroup" />
        <Icon guid="guidImageDocumentation" id="Documentation" />
        <CommandFlag>DefaultDisabled</CommandFlag>
        <Strings>
          <ButtonText>Html</ButtonText>
        </Strings>
      </Button>


      <!-- Generate documentation md Context Menu button -->
      <Button guid="guidClangPowerToolsPackageCmdSet" id="DocumentationMdId" priority="0x0002" type="Button">
        <Parent guid="guidClangPowerToolsPackageCmdSet" id="DromDownDocumentationMenuGroup" />
        <Icon guid="guidImageDocumentation" id="Documentation" />
        <CommandFlag>DefaultDisabled</CommandFlag>
        <Strings>
          <ButtonText>Markdown</ButtonText>
        </Strings>
      </Button>
      

			<!-- Clang Settings Context Menu button -->
			<Button guid="guidClangPowerToolsPackageCmdSet" id="SettingsId" priority="0x000A" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="GroupForSettings" />
				<Icon guid="guidImageSettings" id="Settings" />
				<CommandFlag>DefaultDisabled</CommandFlag>
				<Strings>
					<ButtonText>Settings</ButtonText>
				</Strings>
			</Button>


			<!-- Toolbar Buttons -->

			<!-- Clang Compile toolbar button -->
			<Button guid="guidClangPowerToolsPackageCmdSet" id="CompileToolbarId" priority="0x0000" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="ToolbarGroup" />
				<Icon guid="guidImageCompile" id="Compile" />
				<CommandFlag>DefaultDisabled</CommandFlag>
				<Strings>
					<ButtonText>Compile</ButtonText>
				</Strings>
			</Button>

			<!-- Clang Tidy & Clang Tidy Fix Drop Down submenu in toolbar-->

			<!-- Clang Tidy-Fix toolbar button  -->
			<!--
      <Button guid="guidClangPowerToolsPackageCmdSet" id="TidyFixToolbarId" priority="0x0003" type="Button">
        <Icon guid="guidImageTidy" id="Tidy" />
        <CommandFlag>DefaultDisabled</CommandFlag>
        <Strings>
          <ButtonText>Tidy-Fix</ButtonText>
        </Strings>
      </Button>-->

			<Button guid="guidClangPowerToolsPackageCmdSet" id="TidyToolbarId" priority="0x0001" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="ToolbarGroup" />
				<Icon guid="guidImageTidy" id="Tidy" />
				<CommandFlag>DefaultDisabled</CommandFlag>
				<CommandFlag>TextChanges</CommandFlag>
				<Strings>
					<ButtonText>Tidy</ButtonText>
				</Strings>
			</Button>

			<!--<Button guid="guidClangPowerToolsPackageCmdSet" id="TidyFixToolbarId" priority="0x0003" type="Button">
        <Parent guid="guidClangPowerToolsPackageCmdSet" id="DropDownToolbarMenuGroup" />
        <Strings>
          <ButtonText>Tidy-Fix</ButtonText>
        </Strings>
      </Button>-->

			<Button guid="guidClangPowerToolsPackageCmdSet" id="ClangFormatToolbarId" priority="0x0003" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="ToolbarGroup" />
				<Icon guid="guidImageFormat" id="Format" />
				<CommandFlag>DefaultDisabled</CommandFlag>
				<Strings>
					<ButtonText>Format</ButtonText>
				</Strings>
			</Button>

			<Button guid="guidClangPowerToolsPackageCmdSet" id="StopClangId" priority="0x0004" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="ToolbarGroup" />
				<Strings>
					<ButtonText>Stop</ButtonText>
				</Strings>
			</Button>

			<Button guid="guidClangPowerToolsPackageCmdSet" id="SettingsId" priority="0x0006" type="Button">
				<Parent guid="guidClangPowerToolsPackageCmdSet" id="ToolbarGroup" />
				<CommandFlag>DefaultDisabled</CommandFlag>
				<Strings>
					<ButtonText>Settings</ButtonText>
				</Strings>
			</Button>

		</Buttons>

		<!--Declare all the image resources -->
		<Bitmaps>
			<Bitmap guid="guidImages" href="..\ClangPowerToolsShared\Resources\CPTLogo.png" usedList="bmpPic1" />
			<Bitmap guid="guidImageTidy" href="..\ClangPowerToolsShared\Resources\TidyIcon.png" usedList="Tidy" />
			<Bitmap guid="guidImageCompile" href="..\ClangPowerToolsShared\Resources\CompileIcon.png" usedList="Compile" />
			<Bitmap guid="guidImageFormat" href="..\ClangPowerToolsShared\Resources\ClangFormatIcon.png" usedList="Format" />
			<Bitmap guid="guidImageFind" href="..\ClangPowerToolsShared\Resources\[CPT]Find.png" usedList="Find" />
			<Bitmap guid="guidImageOptimizeIncludes" href="..\ClangPowerToolsShared\Resources\[CPT]OptimizeIncludes.png" usedList="OptimizeIncludes" />
			<Bitmap guid="guidImageStopClang" href="..\ClangPowerToolsShared\Resources\StopCommandIcon.png" usedList="StopClang" />
			<Bitmap guid="guidImageSettings" href="..\ClangPowerToolsShared\Resources\SettingsIcon.png" usedList="Settings" />
			<Bitmap guid="guidImageIgnoreFormat" href="..\ClangPowerToolsShared\Resources\IgnoreIcon.png" usedList="IgnoreFormat" />
			<Bitmap guid="guidImageEmpty" href="..\ClangPowerToolsShared\Resources\EmptyIcon.png" usedList="Empty" />
			<Bitmap guid="guidImageJsonCompilationDb" href="..\ClangPowerToolsShared\Resources\JsonCompilationDatabase.png" usedList="JsonCompilationDb" />
			<Bitmap guid="guidImageDocumentation" href="..\ClangPowerToolsShared\Resources\[CPT]GenerateDocumentation.png" usedList="Documentation" />
		</Bitmaps>

	</Commands>

	<!-- Shortcuts for commands-->
	<KeyBindings>
		<KeyBinding guid="guidClangPowerToolsPackageCmdSet" id="CompileToolbarId" editor="guidVSStd97"
                key1="U" mod1="ALT" />

		<KeyBinding guid="guidClangPowerToolsPackageCmdSet" id="TidyToolbarId" editor="guidVSStd97"
                    key1="Y" mod1="ALT" />

		<!--<KeyBinding guid="guidClangPowerToolsPackageCmdSet" id="TidyFixToolbarId" editor="guidVSStd97"
                key1="X" mod1="ALT" />-->

		<KeyBinding guid="guidClangPowerToolsPackageCmdSet" id="ClangFormatToolbarId" editor="guidVSStd97"
                key1="M" mod1="ALT" />

		<KeyBinding guid="guidClangPowerToolsPackageCmdSet" id="StopClangId" editor="guidVSStd97"
                key1="O" mod1="ALT" />
	</KeyBindings>

	<!-- Placement for commands. The parent of a command is always a group, never a menu, context menu or toolbar.-->

	<CommandPlacements>

		<!-- Add the Clang Power Tools submenu(the subpenu contains all the commands) 
      in context menu of solution, project, folder, file and tab editor -->

		<CommandPlacement guid="guidClangPowerToolsPackageCmdSet" id="GroupForSubmenu" priority="0x08FF">
			<!-- The parent of the group will be the solution context menu -->
			<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_SOLNNODE" />
		</CommandPlacement>

		<CommandPlacement guid="guidClangPowerToolsPackageCmdSet" id="GroupForSubmenu" priority="0x07FF">
			<!-- The parent of the group will be the project context menu -->
			<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_PROJNODE" />
		</CommandPlacement>

		<CommandPlacement guid="guidClangPowerToolsPackageCmdSet" id="GroupForSubmenu" priority="0x0500">
			<!-- The parent of the group will be the folder context menu -->
			<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_FOLDERNODE" />
		</CommandPlacement>

		<CommandPlacement guid="guidClangPowerToolsPackageCmdSet" id="GroupForSubmenu" priority="0x0600">
			<!-- The parent of the group will be the file context menu -->
			<Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_ITEMNODE" />
		</CommandPlacement>

		<!--The parent of the group will be the tab file context menu -->
		<!--<CommandPlacement guid="guidClangPowerToolsPackageCmdSet" id="GroupForSubmenu" priority="0xFFFF">
     <Parent guid="guidSHLMainMenu" id="IDM_VS_CTXT_EZDOCWINTAB" /> 
    </CommandPlacement> -->

		<!-- Define which groups will be placed in the Clang Power Tools submenu  -->
		<!-- By placing a group automatically each section it will be delimited by a separator -->
		<CommandPlacement guid="guidClangPowerToolsPackageCmdSet" id="GroupForCommands" priority="0x0001">
			<Parent guid="guidClangPowerToolsPackageCmdSet" id="Submenu" />
		</CommandPlacement>

		<CommandPlacement guid="guidClangPowerToolsPackageCmdSet" id="GroupForIgnore" priority="0x0002">
			<Parent guid="guidClangPowerToolsPackageCmdSet" id="Submenu" />
		</CommandPlacement>

		<CommandPlacement guid="guidClangPowerToolsPackageCmdSet" id="GroupForJsonDatabase" priority="0x0003">
			<Parent guid="guidClangPowerToolsPackageCmdSet" id="Submenu" />
		</CommandPlacement>

		<CommandPlacement guid="guidClangPowerToolsPackageCmdSet" id="GroupForSettings" priority="0x0004">
			<Parent guid="guidClangPowerToolsPackageCmdSet" id="Submenu" />
		</CommandPlacement>

	</CommandPlacements>


	<!--Contains all the unique identifires and symbols declaration-->
	<Symbols>
		<GuidSymbol name="guidClangPowerToolsPackage" value="{f564f9d3-01ae-493e-883b-18deebdb975e}" />


		<!-- Define the unique identifires for commands, groups, menu and toolbar -->
		<GuidSymbol name="guidClangPowerToolsPackageCmdSet" value="{498fdff5-5217-4da9-88d2-edad44ba3874}">

			<!-- Define the unique identifires for groups -->
			<IDSymbol name="GroupForSubmenu" value="0x1020" />
			<IDSymbol name="GroupForCommands" value="0x1021" />
			<IDSymbol name="GroupForSettings" value="0x1022" />
			<IDSymbol name="GroupForIgnore" value="0x1023" />
			<IDSymbol name="GroupForJsonDatabase" value="0x1024" />
			<IDSymbol name="ToolbarGroup" value="0x1050" />
			<IDSymbol name="GroupForToolbarMenu" value="0x1030" />
			<!--<IDSymbol name ="DropDownToolbarMenuGroup" value="0x0110"/>-->
      
      <!-- Find Command from view menu -->
      <IDSymbol name="FindToolWindowGroup" value="0x000D" />
      <IDSymbol name="FindToolWindowId" value="0x1A20" />


			<!-- Define the unique identifires for menus -->
			<IDSymbol name="Submenu" value="0x0100" />
			<IDSymbol name="DromDownMenu" value="0x0200" />
			<IDSymbol name="DromDownDocumentationMenu" value="0x020A" />
			<IDSymbol name="DromDownDocumentationMenuGroup" value="0x010A" />

			<!-- Define the unique identifires for commands -->
			<IDSymbol name="CompileId" value="0x0102" />
			<IDSymbol name="CompileToolbarId" value="0x1100" />

			<IDSymbol name="TidyId" value="0x0101" />
			<!--<IDSymbol name="TidyFixId" value="0x0109" />-->

			<IDSymbol name="TidyToolbarId" value="0x1101" />
			<!--<IDSymbol name="TidyFixToolbarId" value="0x1102" />-->

			<IDSymbol name="ClangFormatId" value="0x0105" />
			<IDSymbol name="ClangFormatToolbarId" value="0x1103" />
			<IDSymbol name="FindId" value="0x0115" />
      <IDSymbol name="OptimizeIncludesId" value="0x01A7" />

			<IDSymbol name="StopClangId" value="0x0104" />
			<IDSymbol name="IgnoreFormatId" value="0x0107" />
			<IDSymbol name="IgnoreCompileId" value="0x0108" />

			<IDSymbol name="JsonCompilationDatabaseId" value="0x0106" />
			<IDSymbol name="DocumentationYamlId" value="0x0216" />
			<IDSymbol name="DocumentationHtmlId" value="0x0116" />
			<IDSymbol name="DocumentationMdId" value="0x0126" />

			<IDSymbol name="SettingsId" value="0x0103" />
			<IDSymbol name="TidyExportConfigId" value="0x1032" />
			<IDSymbol name="LogoutId" value="0x1033" />

			<!-- Define the unique identifires for toolbar -->
			<IDSymbol name="Toolbar" value="0x1000" />
		</GuidSymbol>

		<!--Icon for preview image and main icon-->
		<GuidSymbol name="guidImages" value="{6ef146ba-e044-43ab-989d-c4a1d6d5c70a}">
			<IDSymbol name="bmpPic1" value="1" />
		</GuidSymbol>

		<!-- Define the image for each command -->

		<!-- Define clang tidy image -->
		<GuidSymbol name="guidImageTidy" value="{6ef146ba-e044-43ab-989d-c4a1d6d5c70d}">
			<IDSymbol name="Tidy" value="1" />
		</GuidSymbol>

		<!-- Define clang compile image -->
		<GuidSymbol name="guidImageCompile" value="{6ef146ba-e044-43ab-989d-c4a1d6d5c70e}">
			<IDSymbol name="Compile" value="1" />
		</GuidSymbol>

		<!-- Define clang stop image -->
		<GuidSymbol name="guidImageStopClang" value="{6ef146ba-e044-43ab-989d-c4a1d6d5c700}">
			<IDSymbol name="StopClang" value="1" />
		</GuidSymbol>

		<!-- Define clang  ignore format image -->
		<GuidSymbol name="guidImageIgnoreFormat" value="{6ef146ba-e044-43ab-989d-c4a1d6d5c708}">
			<IDSymbol name="IgnoreFormat" value="1" />
		</GuidSymbol>

		<!-- Define empty image -->
		<GuidSymbol name="guidImageEmpty" value="{6ef146ba-e044-43ab-989d-c4a1d6d5c705}">
			<IDSymbol name="Empty" value="1" />
		</GuidSymbol>

		<!-- Define clang settigns image -->
		<GuidSymbol name="guidImageSettings" value="{6ef146ba-e044-43ab-989d-c4a1d6d5c70f}">
			<IDSymbol name="Settings" value="1" />
		</GuidSymbol>

		<!-- Define clang format image -->
		<GuidSymbol name="guidImageFormat" value="{6ef146ba-e044-43ab-989d-c4a1d6d5c71a}">
			<IDSymbol name="Format" value="1" />
		</GuidSymbol>

    <!-- Define clang find image -->
    <GuidSymbol name="guidImageFind" value="{d46b5b3e-8c5a-4a6d-972f-37146878a106}">
      <IDSymbol name="Find" value="1" />
    </GuidSymbol>

    <!-- Define clang optimize includes image -->
    <GuidSymbol name="guidImageOptimizeIncludes" value="{6a7c3b9d-5f2e-4a8c-9d1b-e79f2d4c1a35}">
      <IDSymbol name="OptimizeIncludes" value="1" />
    </GuidSymbol>

		<!-- Define Logout image -->
		<GuidSymbol name="guidImageLogout" value="{6ef146ba-e044-43ab-989d-c4a1d6d5c72a}">
			<IDSymbol name="Logout" value="1" />
		</GuidSymbol>

		<GuidSymbol name="guidImageJsonCompilationDb" value="{6ef146ba-e044-43ab-989d-c4a1d6d5c73a}">
			<IDSymbol name="JsonCompilationDb" value="1" />
		</GuidSymbol>
    
    <!-- Define Documentation image -->
    <GuidSymbol name="guidImageDocumentation" value="{6ef146ba-e044-43ab-989d-c4a1d6d5c74a}">
      <IDSymbol name="Documentation" value="1" />
    </GuidSymbol>

	</Symbols>

</CommandTable>


================================================
FILE: ClangPowerTools/ClangPowerTools/ClangPowerToolsPackage.cs
================================================
using ClangPowerToolsShared.MVVM.Views.ToolWindows;
using Microsoft.VisualStudio;
using Microsoft.VisualStudio.Shell;
using Microsoft.VisualStudio.Shell.Interop;
using System;
using System.IO;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Threading;
using Task = System.Threading.Tasks.Task;

namespace ClangPowerTools
{
  /// <summary>
  /// This is the class that implements the package exposed by this assembly.
  /// </summary>
  /// <remarks>
  /// <para>
  /// The minimum requirement for a class to be considered a valid package for Visual Studio
  /// is to implement the IVsPackage interface and register itself with the shell.
  /// This package uses the helper classes defined inside the Managed Package Framework (MPF)
  /// to do it: it derives from the Package class that provides the implementation of the
  /// IVsPackage interface and uses the registration attributes defined in the framework to
  /// register itself and its components with the shell. These attributes tell the pkgdef creation
  /// utility what data to put into .pkgdef file.
  /// </para>
  /// <para>
  /// To get loaded into VS, the package must be referred by &lt;Asset Type="Microsoft.VisualStudio.VsPackage" ...&gt; in .vsixmanifest file.
  /// </para>
  /// </remarks>
  [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)]
  [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] // Info on this package for Help/About
  [ProvideMenuResource("Menus.ctmenu", 1)]
  [ProvideAutoLoad(VSConstants.UICONTEXT.SolutionExistsAndFullyLoaded_string, PackageAutoLoadFlags.BackgroundLoad)]
  [ProvideAutoLoad(VSConstants.UICONTEXT.NoSolution_string, PackageAutoLoadFlags.BackgroundLoad)]
  [ProvideMenuResource("Menus.ctmenu", 1)]
  [ProvideToolWindow(typeof(TidyToolWindow), Style = VsDockStyle.Tabbed, DockedWidth = 300, Window = "DocumentWell", Orientation = ToolWindowOrientation.Left, Transient = true)]
  [ProvideToolWindow(typeof(FindToolWindow), Style = VsDockStyle.Tabbed, DockedWidth = 300, Window = "DocumentWell", Orientation = ToolWindowOrientation.Left, Transient = true)]
  [Guid(PackageGuidString)]
  public sealed class RunClangPowerToolsPackage2 : AsyncPackage
  {
    #region Members

    Object mClangPackageImpl;

    /// <summary>
    /// RunPowerShellCommandPackage GUID string.
    /// </summary>
    public const string PackageGuidString = "f564f9d3-01ae-493e-883b-18deebdb975e";
    private const string cptLib16 = "ClangPowerToolsLib16.dll";
    private const string cptLib17 = "ClangPowerToolsLib17.dll";
    private const string WPFTextBoxAutoComplete = "WPFTextBoxAutoComplete.dll";
    private const string cptNamespace = "ClangPowerTools.ClangPowerToolsPackageImpl";
    private const string initializeAsync = "InitializeAsync";

    #endregion


    #region Constructor


    /// <summary>
    /// Initializes a new instance of the <see cref="TidyCommand"/> class.
    /// </summary>
    public RunClangPowerToolsPackage2()
    {

    }

    #endregion


    #region Initialize Package


    /// <summary>
    /// Initialization of the package; this method is called right after the package is sited, so this is the place
    /// where you can put all the initialization code that rely on services provided by VisualStudio.
    /// </summary>
    protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress<ServiceProgressData> progress)
    {
      // Switches to the UI thread in order to consume some services used in command initialization
      await JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken);

      var shellService = (IVsShell)await GetServiceAsync(typeof(SVsShell));
      object releaseVersionObj = "";
      shellService.GetProperty(-9068, out releaseVersionObj);
      string releaseVersion = (string)releaseVersionObj;
      releaseVersion = releaseVersion.Substring(0, releaseVersion.IndexOf('.')) + ".0";
      string assemblyName = new Version(releaseVersion) < new Version("17.0")
          ? cptLib16
          : cptLib17;

      string currentDir = Path.GetDirectoryName(GetType().Assembly.Location);
      Assembly assembly = Assembly.LoadFile(Path.Combine(currentDir, assemblyName));

      Type type = assembly.GetType(cptNamespace);
      mClangPackageImpl = Activator.CreateInstance(type, this);
      MethodInfo method = type.GetMethod(initializeAsync);

      await (Task)method.Invoke(mClangPackageImpl, null);



      await base.InitializeAsync(cancellationToken, progress);
    }

    #endregion

  }
}


================================================
FILE: ClangPowerTools/ClangPowerTools/Properties/AssemblyInfo.cs
================================================
using System.Reflection;
using System.Runtime.InteropServices;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("ClangPowerTools")]
[assembly: AssemblyDescription("A tool bringing clang-tidy magic to Visual Studio C++ developers.")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Caphyon")]
[assembly: AssemblyProduct("ClangPowerTools")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]


================================================
FILE: ClangPowerTools/ClangPowerTools/Properties/Resource.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace ClangPowerTools.Properties {
    using System;
    
    
    /// <summary>
    ///   A strongly-typed resource class, for looking up localized strings, etc.
    /// </summary>
    // This class was auto-generated by the StronglyTypedResourceBuilder
    // class via a tool like ResGen or Visual Studio.
    // To add or remove a member, edit your .ResX file then rerun ResGen
    // with the /str option, or rebuild your VS project.
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Resource {
        
        private static global::System.Resources.ResourceManager resourceMan;
        
        private static global::System.Globalization.CultureInfo resourceCulture;
        
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resource() {
        }
        
        /// <summary>
        ///   Returns the cached ResourceManager instance used by this class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ClangPowerTools.Properties.Resource", typeof(Resource).Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        
        /// <summary>
        ///   Overrides the current thread's CurrentUICulture property for all
        ///   resource lookups using this strongly typed resource class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Deselect all.
        /// </summary>
        internal static string DeselectAllTooltipText {
            get {
                return ResourceManager.GetString("DeselectAllTooltipText", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Encoding Converter.
        /// </summary>
        internal static string EncodingConverterWindowTitle {
            get {
                return ResourceManager.GetString("EncodingConverterWindowTitle", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to encoding is not supported.
        /// </summary>
        internal static string EncodingError {
            get {
                return ResourceManager.GetString("EncodingError", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to The following files are not encoded in UTF-8. Do you want to change their encoding?.
        /// </summary>
        internal static string EncodingErrorText {
            get {
                return ResourceManager.GetString("EncodingErrorText", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Select all.
        /// </summary>
        internal static string SelectAllTooltipText {
            get {
                return ResourceManager.GetString("SelectAllTooltipText", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Unicode (UTF-8).
        /// </summary>
        internal static string UTF8Encoding {
            get {
                return ResourceManager.GetString("UTF8Encoding", resourceCulture);
            }
        }
    }
}


================================================
FILE: ClangPowerTools/ClangPowerTools/Properties/Resource.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <data name="DeselectAllTooltipText" xml:space="preserve">
    <value>Deselect all</value>
  </data>
  <data name="EncodingConverterWindowTitle" xml:space="preserve">
    <value>Encoding Converter</value>
  </data>
  <data name="EncodingError" xml:space="preserve">
    <value>encoding is not supported</value>
  </data>
  <data name="EncodingErrorText" xml:space="preserve">
    <value>The following files are not encoded in UTF-8. Do you want to change their encoding?</value>
  </data>
  <data name="SelectAllTooltipText" xml:space="preserve">
    <value>Select all</value>
  </data>
  <data name="UTF8Encoding" xml:space="preserve">
    <value>Unicode (UTF-8)</value>
  </data>
</root>

================================================
FILE: ClangPowerTools/ClangPowerTools/Tooling/v1/clang-build.ps1
================================================
<#
.SYNOPSIS
    Compiles or tidies up code from Visual Studio .vcxproj project files.

.DESCRIPTION
    This PowerShell script scans for all .vcxproj Visual Studio projects inside a source directory.
    One or more of these projects will be compiled or tidied up (modernized), using Clang.

.PARAMETER aSolutionsPath
    Alias 'dir'. Source directory to find sln files.
                 Projects will be extracted from each sln.

    Important: You can pass an absolute path to a sln. This way, no file searching will be done, and
               only the projects from this solution file will be taken into account.

.PARAMETER aVcxprojToCompile
    Alias 'proj'. Array of project(s) to compile. If empty, all projects found in solutions are compiled.
    Regex matching is supported, using the [regex] prefix (e.g. [regex]'.*components').

    Absolute disk paths to vcxproj files are accepted.

    Can be passed as comma separated values.

.PARAMETER aVcxprojToIgnore
    Alias 'proj-ignore'. Array of project(s) to ignore, from the matched ones.
    If empty, all already matched projects are compiled.
    Regex matching is supported, using the [regex] prefix (e.g. [regex]'.*components').

    Can be passed as comma separated values.

.PARAMETER aVcxprojConfigPlatform
    Alias 'active-config'. Array of configuration-platform pairs, each pair being separated by |,
    to be used when processing project files.

    E.g. "Debug|Win32", "Debug|x64".
    If not specified, the first configuration-platform found in the current project is used.
    Projects will be processed for each configuration-platform specified, the ones that are missing will be skipped.

.PARAMETER aCppToCompile
    Alias 'file'. What cpp(s) to compile from the found project(s). If empty, all CPPs are compiled.
    Regex matching is supported, using the [regex] prefix (e.g. [regex]'.*table').

    Note: If any headers are given then all translation units that include them will be processed.

.PARAMETER aCppToIgnore
    Alias 'file-ignore'. Array of file(s) to ignore, from the matched ones.
    Regex matching is supported, using the [regex] prefix (e.g. [regex]'.*table').

    Can be passed as comma separated values.

.PARAMETER aUseParallelCompile
    Alias 'parallel'. Switch to run in parallel mode, on all logical CPU cores.

.PARAMETER aContinueOnError
     Alias 'continue'. Switch to continue project compilation even when errors occur.

.PARAMETER aTreatAdditionalIncludesAsSystemIncludes
     Alias 'treat-sai'. Switch to treat project additional include directories as system includes.

.PARAMETER aClangCompileFlags
     Alias 'clang-flags'. Flags given to clang++ when compiling project,
     alongside project-specific defines.

.PARAMETER aTidyFlags
      Alias 'tidy'. If not empty clang-tidy will be called with given flags, instead of clang++.
      The tidy operation is applied to whole translation units, meaning all directory headers
      included in the CPP will be tidied up too. Changes will not be applied, only simulated.

      If aTidyFixFlags is present, it takes precedence over this parameter.

      If '.clang-tidy' value is given, configuration will be read from .clang-tidy file
      in the closest parent directory.

.PARAMETER aTidyFixFlags
      Alias 'tidy-fix'. If not empty clang-tidy will be called with given flags, instead of clang++.
      The tidy operation is applied to whole translation units, meaning all directory headers
      included in the CPP will be tidied up too. Changes will be applied to the file(s).

      If present, this parameter takes precedence over aTidyFlags.

      If '.clang-tidy' value is given, configuration will be read from .clang-tidy file
      in the closest parent directory.

.PARAMETER aAfterTidyFixFormatStyle
      Alias 'format-style'. Used in combination with 'tidy-fix'. If present, clang-tidy will
      also format the fixed file(s), using the specified style.
      Possible values: - not present, no formatting will be done
                       - 'file'
                           Literally 'file', not a placeholder.
                           Uses .clang-format file in the closest parent directory.
                       - 'llvm'
                       - 'google'
                       - 'webkit'
                       - 'mozilla'

.PARAMETER aVisualStudioVersion
      Alias 'vs-ver'. Version of Visual Studio (VC++) installed and that'll be used for
      standard library include directories. E.g. 2017.

      Optional. If not given, it will be inferred based on the project toolset version.

.PARAMETER aVisualStudioSku
      Alias 'vs-sku'. Sku of Visual Studio (VC++) installed and that'll be used for
      standard library include directories. E.g. Professional.

      If not given, the first detected Visual Studio SKU will be used.

.NOTES
    Author: Gabriel Diaconita
#>
#Requires -Version 5
param( [alias("proj")]
       [Parameter(Mandatory=$false, HelpMessage="Filter project(s) to compile/tidy")]
       [System.Object[]] $aVcxprojToCompile = @()

     , [alias("dir")]
       [Parameter(Mandatory=$false, HelpMessage="Source directory for finding solutions; projects will be found from each sln")]
       [string] $aSolutionsPath

     , [alias("proj-ignore")]
       [Parameter(Mandatory=$false, HelpMessage="Specify projects to ignore")]
       [System.Object[]] $aVcxprojToIgnore = @()

     , [alias("active-config")]
       [Parameter(Mandatory=$false, HelpMessage="Config/platform to be used, e.g. Debug|Win32")]
       [string[]] $aVcxprojConfigPlatform = @()

     , [alias("file")]
       [Parameter(Mandatory=$false, HelpMessage="Filter file(s) to compile/tidy")]
       [System.Object[]] $aCppToCompile = @()

     , [alias("file-ignore")]
       [Parameter(Mandatory=$false, HelpMessage="Specify file(s) to ignore")]
       [System.Object[]] $aCppToIgnore = @()

     , [alias("parallel")]
       [Parameter(Mandatory=$false, HelpMessage="Compile/tidy/tidy-fix projects in parallel")]
       [switch]   $aUseParallelCompile

     , [alias("continue")]
       [Parameter(Mandatory=$false, HelpMessage="Allow CPT to continue immediately after encountering an error")]
       [switch]   $aContinueOnError

     , [alias("resume")]
       [Parameter(Mandatory=$false, HelpMessage="Allow CPT to resume the last session (start from last active project / file number).")]
       [switch]   $aResumeAfterError

     , [alias("treat-sai")]
       [Parameter(Mandatory=$false, HelpMessage="Treat project additional include directories as system includes")]
       [switch]   $aTreatAdditionalIncludesAsSystemIncludes

     , [alias("clang-flags")]
       [Parameter(Mandatory=$false, HelpMessage="Specify compilation flags to CLANG")]
       [string[]] $aClangCompileFlags = @()

     , [alias("tidy")]
       [Parameter(Mandatory=$false, HelpMessage="Specify flags to CLANG TIDY")]
       [string]   $aTidyFlags

     , [alias("tidy-fix")]
       [Parameter(Mandatory=$false, HelpMessage="Specify flags to CLANG TIDY & FIX")]
       [string]   $aTidyFixFlags

     , [alias("header-filter")]
       [Parameter(Mandatory=$false, HelpMessage="Enable Clang-Tidy to run on header files")]
       [string]   $aTidyHeaderFilter

     , [alias("format-style")]
       [Parameter(Mandatory=$false, HelpMessage="Used with 'tidy-fix'; tells CLANG TIDY-FIX to also format the fixed file(s)")]
       [string]   $aAfterTidyFixFormatStyle

     , [alias("vs-ver")]
       [Parameter(Mandatory=$false, HelpMessage="Version of Visual Studio toolset to use for loading project")]
       [string]   $aVisualStudioVersion

     , [alias("vs-sku")]
       [Parameter(Mandatory=$false, HelpMessage="Edition of Visual Studio toolset to use for loading project")]
       [string]   $aVisualStudioSku
       
     , [alias("export-jsondb")]
       [Parameter(Mandatory=$false, HelpMessage="Switch to generate a JSON compilation database file, in the current working directory")]
       [switch]   $aExportJsonDB
      
     , [alias("export-doc")]
       [Parameter(Mandatory=$false, HelpMessage="If present, specifies the type of documentation to generate, in the current working direcotory")]
       [ValidateSet("yaml", "md", "html")]
       [string]   $aDocumentationExportFormat
     )

Set-StrictMode -version latest
$ErrorActionPreference = 'Continue'

# System Architecture Constants
# ------------------------------------------------------------------------------------------------

Set-Variable -name kCptGithubRepoBase -value `
"https://raw.githubusercontent.com/Caphyon/clang-power-tools/master/ClangPowerTools/ClangPowerToolsShared/Tooling/v1/" `
                                      -option Constant
Set-Variable -name kPsMajorVersion    -value (Get-Host).Version.Major   -Option Constant 
# ------------------------------------------------------------------------------------------------
# Return Value Constants

Set-Variable -name kScriptFailsExitCode      -value  47                 -option Constant

# ------------------------------------------------------------------------------------------------
# File System Constants

Set-Variable -name kExtensionVcxproj         -value ".vcxproj"          -option Constant
Set-Variable -name kExtensionSolution        -value ".sln"              -option Constant
Set-Variable -name kExtensionYaml            -value ".yaml"             -option Constant
Set-Variable -name kExtensionClangPch        -value ".clang.pch"        -option Constant
Set-Variable -name kExtensionC               -value ".c"                -option Constant


# ------------------------------------------------------------------------------------------------
# Envinroment Variables for controlling logic

Set-Variable -name kVarEnvClangTidyPath     -value "CLANG_TIDY_PATH"-option Constant

# ------------------------------------------------------------------------------------------------
# Clang-Related Constants

Set-Variable -name kClangFlagSupressLINK    -value @("-fsyntax-only")   -option Constant
Set-Variable -name kClangFlagIncludePch     -value "-include-pch"       -option Constant
Set-Variable -name kClangFlagFasterPch      -value "-fpch-instantiate-templates" -option Constant
Set-Variable -name kClangFlagMinusO         -value "-o"                 -option Constant

Set-Variable -name kClangDefinePrefix       -value "-D"                 -option Constant
Set-Variable -name kClangFlagNoUnusedArg    -value "-Wno-unused-command-line-argument" `
                                                                        -option Constant
Set-Variable -name kClangFlagNoMsInclude    -value "-Wno-microsoft-include" `
                                                                        -Option Constant
Set-Variable -name kClangFlagFileIsCPP      -value "-x c++"             -option Constant
Set-Variable -name kClangFlagFileIsC        -value "-x c"               -option Constant
Set-Variable -name kClangFlagForceInclude   -value "-include"           -option Constant
Set-Variable -name kClangTidyFixExportFixes -value "--export-fixes="    -option Constant


Set-Variable -name kClangCompiler           -value "clang++.exe"        -option Constant

Set-Variable -name kClangTidyFlags            -value @("-quiet"
                                                      ,"--")            -option Constant
Set-Variable -name kClangTidyFlagHeaderFilter -value "-header-filter="  -option Constant
Set-Variable -name kClangTidyFlagChecks       -value "-checks="         -option Constant
Set-Variable -name kClangTidyUseFile          -value ".clang-tidy"      -option Constant
Set-Variable -name kClangTidyFormatStyle      -value "-format-style="   -option Constant

Set-Variable -name kClangTidyFlagTempFile     -value ""

Set-Variable -name kCptRegHiveSettings         -value "HKCU:SOFTWARE\Caphyon\Clang Power Tools"             -option Constant
Set-Variable -name kCptVsixSettings            -value "${env:APPDATA}\ClangPowerTools\settings.json"        -option Constant
Set-Variable -name kCptTidyFixReplacementsDir  -value "${env:APPDATA}\ClangPowerTools\TidyFixReplacements" -option Constant

# ------------------------------------------------------------------------------------------------

Function cpt:getSetting([string] $name)
{
  if ((Test-Path $kCptVsixSettings))
  {
    $settingsJson = ( (Get-Content -Raw -Path $kCptVsixSettings) | ConvertFrom-Json)
    $settingField = $settingsJson.Where{ $_ | Get-Member $name }
    if (!$settingField)
    {
      return $null
    }
    
    return $settingField.$name
  }
  return $null
}

# We define this separately from the implementation in io.ps1 because that may not yet be present and 
# in order to download it we need the connection-status greenlight.
Function cpt:testInternetConnectivity
{  
  $resp = Get-WmiObject -Class Win32_PingStatus -Filter 'Address="github.com" and Timeout=100' | Select-Object ResponseTime
  [bool] $hasInternetConnectivity = ($resp.ResponseTime -and $resp.ResponseTime -gt 0)
  return $hasInternetConnectivity
}

# Include required scripts, or download them from Github, if necessary

Function cpt:ensureScriptExists( [Parameter(Mandatory=$true)] [string] $scriptName
                               , [Parameter(Mandatory=$false)][bool]   $forceRedownload
                               )
{
  [string] $scriptFilePath = "$PSScriptRoot/psClang/$scriptName"
  if ( $forceRedownload -or (! (Test-Path $scriptFilePath)) )
  {
    Write-Verbose "Download required script $scriptName ..."
    [string] $request = "$kCptGithubRepoBase/psClang/$scriptName"

    if ( ! (Test-Path "$PSScriptRoot/psClang"))
    {
      New-Item "$PSScriptRoot/psClang" -ItemType Directory > $null
    }

    # Invoke-WebRequest has an issue when displaying progress on PowerShell 7, it won't go away
    # and will keep nagging the user, and on PS5 it causes slow transfers  => we supress it.
    
    $prevPreference = $progressPreference
    $ProgressPreference = "SilentlyContinue"
    
    Invoke-WebRequest -Uri $request -OutFile $scriptFilePath
    (Get-Content $scriptFilePath -Raw).Replace("`n","`r`n") | Set-Content $scriptFilePath -Force -NoNewline

    $ProgressPreference = $prevPreference
    
    if (! (Test-Path $scriptFilePath))
    {
      Write-Error "Could not download required script file ($scriptName). Aborting..."
      exit 1
    }
  }

  return $scriptFilePath
}

[bool] $shouldRedownloadForcefully = $false
[Version] $cptVsixVersion = cpt:getSetting "Version"
Write-Verbose "Current Clang Power Tools VSIX version: $cptVsixVersion"

$kLogicalCoreCount = 4;
if($Env:NUMBER_OF_PROCESSORS -match "^\d+$")
{
  $kLogicalCoreCount = $Env:NUMBER_OF_PROCESSORS
  if($Env:CPT_CPULIMIT -match "^\d+$")
  {
    $kLogicalCoreCount = $Env:CPT_CPULIMIT
  }
  #Set-Variable -name kLogicalCoreCount -value $Env:CPT_CPULIMIT   -option Constant
}

# If the main script has been updated meanwhile, we invalidate all other scripts, and force
# them to update from github. We need to watch for this because older CPT VS Extensions (before v7.9)
# did not updated all helper scripts, but a list of predefined ones; we need to update the new ones as well.
if ( ( ![string]::IsNullOrWhiteSpace($cptVsixVersion) -and 
        [Version]::new($cptVsixVersion) -lt [Version]::new(7, 9, 0) ) -and
     (Test-Path $kCptRegHiveSettings) )
{
  Write-Verbose "Checking to see if we should redownload script helpers..."
  $regHive = Get-Item -LiteralPath $kCptRegHiveSettings
  $currentHash = (Get-FileHash $PSCommandPath -Algorithm "SHA1").Hash
  $savedHash = $regHive.GetValue('ScriptContentHash');

  # we used to rely on timestamps but it's unreliable so make sure to clean up the reg value
  if ($regHive.GetValue('ScriptTimestamp'))
  {
    Remove-ItemProperty -path $kCptRegHiveSettings -name 'ScriptTimestamp'
  }

  if (! (cpt:testInternetConnectivity) )
  {
    Write-Verbose "No internet connectivity. Postponing helper scripts update from github..."
  }
  
  [string] $featureDisableValue = '42'
  if ( (cpt:testInternetConnectivity) -and 
      ($savedHash -ne $currentHash) -and
      ($savedHash -ne $featureDisableValue) )
  {
    Write-Verbose "Detected changes in main script. Will redownload helper scripts from Github..."
    Write-Verbose "Current main script SHA1: $currentHash. Saved SHA1: $savedHash"
    Set-ItemProperty -path $kCptRegHiveSettings -name 'ScriptContentHash' -value $currentHash
    $shouldRedownloadForcefully = $true
  }
}

@( "io.ps1"
 , "visualstudio-detection.ps1"
 , "msbuild-expression-eval.ps1"
 , "msbuild-project-data.ps1"
 , "msbuild-project-load.ps1"
 , "msbuild-project-cache-repository.ps1"
 , "get-header-references.ps1"
 , "itemdefinition-context.ps1"
 , "jsondb-export.ps1"
 , "get-llvm-helper.ps1"
)                                                                        |
ForEach-Object { cpt:ensureScriptExists $_ $shouldRedownloadForcefully } |
ForEach-Object { . $_ }

Write-InformationTimed "Imported scripts"

#-------------------------------------------------------------------------------------------------
# do not include in list above because it is an invokable script, dot-sourcing does not work.

cpt:ensureScriptExists "get-llvm.ps1" $shouldRedownloadForcefully | Out-Null

#-------------------------------------------------------------------------------------------------
# we may have a custom path for Clang-Tidy. Use it if that's the case.

[string] $customTidyPath = (Get-QuotedPath -path ([Environment]::GetEnvironmentVariable($kVarEnvClangTidyPath)))
if (![string]::IsNullOrWhiteSpace($customTidyPath))
{
  Set-Variable -name kClangTidy                         -value $customTidyPath                    -option Constant
}
else
{
  Set-Variable -name kClangTidy                         -value "clang-tidy.exe"                   -option Constant
  Set-Variable -name kClangApplyReplacements            -value "clang-apply-replacements.exe"     -option Constant
}

Set-Variable -name kCacheRepositorySaveIsNeeded -value $false 

#-------------------------------------------------------------------------------------------------
# Custom Types


Write-InformationTimed "Before .NET enum types"

if ($kPsMajorVersion -lt 5)
{
Add-Type -TypeDefinition @"
  public enum WorkloadType
  {
    Compile,
    Tidy,
    TidyFix
  }
"@

Add-Type -TypeDefinition @"
  public enum StopReason
  {
    Unknown,
    ConfigurationNotFound
  }
"@
}
else 
{
  # this is much faster if PowerShell supports enums, we will save some time
  Invoke-Expression @"
  enum WorkloadType 
  {
    Compile
    Tidy
    TidyFix
  }

  enum StopReason 
  {
    Unknown
    ConfigurationNotFound
  }
"@
}

Write-InformationTimed "Created .NET enum types"
#-------------------------------------------------------------------------------------------------
# Global variables

# temporary files created during project processing (e.g. PCH files)
[System.Collections.ArrayList] $global:FilesToDeleteWhenScriptQuits = @()

# filePath-fileData for SLN files located in source directory
[System.Collections.Generic.Dictionary[String,String]] $global:slnFiles = @{}

# flag to signal when errors are encounteres during project processing
[Boolean]                      $global:FoundErrors                  = $false

# directory path where tidy fix replacement files will be stored
[string] $global:tidyFixReplacementDirPath = ""

# default ClangPowerTools version of visual studio to use
[string] $global:cptDefaultVisualStudioVersion = "2017"

[string[]] $global:cptIgnoredFilesPool = @()

# holds file items to process and their contextual properties (inherited + locally defined)
[System.Collections.Hashtable] $global:cptFilesToProcess = @{}

#-------------------------------------------------------------------------------------------------
# Global functions

Function Exit-Script([Parameter(Mandatory=$false)][int] $code = 0)
{
  Write-Verbose-Array -array $global:FilesToDeleteWhenScriptQuits `
                      -name "Cleaning up PCH temporaries"
  # Clean-up
  foreach ($file in $global:FilesToDeleteWhenScriptQuits)
  {
    Remove-Item -LiteralPath $file -ErrorAction SilentlyContinue > $null
  }

  if ($aTidyFixFlags)
  {
    Write-Verbose "Cleaning up temporaries tidy-fix replacements"
    Remove-Item -path $global:tidyFixReplacementDirPath -Recurse -ErrorAction SilentlyContinue > $null
  }
    
  # Restore working directory
  Pop-Location

  exit $code
}

Function Fail-Script([parameter(Mandatory=$false)][string] $msg = "Got errors.")
{
  if (![string]::IsNullOrEmpty($msg))
  {
    Write-Err $msg
  }
  Exit-Script($kScriptFailsExitCode)
}

Function Apply-TidyFixReplacements([Parameter(Mandatory=$true) ][WorkloadType] $workloadType)
{
  if ($workloadType -eq [WorkloadType]::TidyFix -and 
  (Test-Path -LiteralPath $global:tidyFixReplacementDirPath))
  {
    Write-Verbose "Apply tidy-fix replacements"
    [string] $pathToBinary =  (Join-Path -path $global:llvmLocation `
                                         -ChildPath $kClangApplyReplacements)
    & $pathToBinary $global:tidyFixReplacementDirPath
    Wait-AndProcessBuildJobs
  }
}

Function Get-SourceDirectory()
{
  [bool] $isDirectory = ($(Get-Item -LiteralPath $aSolutionsPath) -is [System.IO.DirectoryInfo])
  if ($isDirectory)
  {
    return $aSolutionsPath
  }
  else
  {
    return (Get-FileDirectory -filePath $aSolutionsPath)
  }
}

function Load-Solutions()
{
   Write-Verbose "Scanning for solution files"
   [string] $pathToCheck = $aSolutionsPath
   if ($kPsMajorVersion -lt 6)
   {
     # we need not bother with long path support in PowerShell 6+
     # only in Windows PowerShell
     $pathToCheck = "\\?\$aSolutionsPath"
   }

   $slns = Get-ChildItem -recurse -LiteralPath $pathToCheck -Filter "*$kExtensionSolution"
   foreach ($sln in $slns)
   {
     Write-Verbose "Caching solution file $sln"
     $slnPath = $sln.FullName

     # remove the UNC long path prefix
     $slnPath = $slnPath.Replace('\\?\', '')
     $global:slnFiles[$slnPath] = (Get-Content -LiteralPath $slnPath)
     
     Write-Verbose "Solution full path: $slnPath"
     Write-Verbose "Solution data length: $($global:slnFiles[$slnPath].Length)"
   }

   Write-Verbose-Array -array $global:slnFiles.Keys  -name "Solution file paths"
}

function Get-SolutionProjects([Parameter(Mandatory=$true)][string] $slnPath)
{
  Write-Verbose "Retrieving project list for solution $slnPath"
  [string] $slnDirectory = Get-FileDirectory -file $slnPath

  Write-Verbose "Solution directory: $slnDirectory"
  $matches = [regex]::Matches($global:slnFiles[$slnPath], 'Project\([{}\"A-Z0-9\-]+\) = \".*?\",\s\"(.*?)\"')

  Write-Verbose "Intermediate solution project matches count: $($matches.Count)"
  foreach ($match in $matches)
  {
    Write-Verbose $match.Groups[1].Value
  }

  [string[]] $projectAbsolutePaths = @()
  foreach ($projPathMatch in $matches)
  {
    [string] $matchValue = $projPathMatch.Groups[1].Value.Replace('"','')
    if ([string]::IsNullOrWhiteSpace($matchValue))
    {
      continue
    }

    $projExpandedPath = [Environment]::ExpandEnvironmentVariables($matchValue)
    if ( ! $projExpandedPath.EndsWith($kExtensionVcxproj))
    {
      continue
    }

    # canonize-path is smart enough to figure out if this is a relative path or not
    $projExpandedPath = Canonize-Path -base $slnDirectory -child $projExpandedPath -ignoreErrors
  
    $projectAbsolutePaths += @($projExpandedPath)
  }
  Write-Verbose-Array -array $projectAbsolutePaths -name "Resolved project paths for solution $slnPath"
  return $projectAbsolutePaths
}

function Get-ProjectSolution()
{
  foreach ($slnPath in $global:slnFiles.Keys)
  {
    [string[]] $solutionProjectPaths = @(Get-SolutionProjects $slnPath)
    if ($solutionProjectPaths -and $solutionProjectPaths -contains $global:vcxprojPath)
    {
      return $slnPath
    }
  }
  return ""
}

Function Get-Projects()
{
  [string[]] $projects = @()

  foreach ($slnPath in $global:slnFiles.Keys)
  {
    [string[]] $solutionProjects = @(Get-SolutionProjects -slnPath $slnPath)
    if ($solutionProjects -and $solutionProjects.Count -gt 0)
    {
      $projects += $solutionProjects
    }
  }

  return ($projects | Select -Unique);
}

Function Get-ClangIncludeDirectories( [Parameter(Mandatory=$false)][string[]] $includeDirectories
                                    , [Parameter(Mandatory=$false)][string[]] $additionalIncludeDirectories
                                    )
{
  [string[]] $returnDirs = @()

  foreach ($includeDir in $includeDirectories)
  {
    $returnDirs += ("-isystem" + (Get-QuotedPath $includeDir))
  }
  foreach ($includeDir in $additionalIncludeDirectories)
  {
    if ($aTreatAdditionalIncludesAsSystemIncludes)
    {
      $returnDirs += ("-isystem" + (Get-QuotedPath $includeDir))
    }
    else
    {
      $returnDirs += ("-I"+ (Get-QuotedPath $includeDir))
    }
  }

  return $returnDirs
}

Function Get-ProjectFileLanguageFlag([Parameter(Mandatory=$true)] [string]   $fileFullName)
{
  [bool] $isCpp = $true
  if ($fileFullName.EndsWith($kExtensionC))
  {
    $isCpp = $false
  }

  try
  {
    [string] $compileAsVal = (Get-ProjectFileSetting -fileFullName $fileFullName -propertyName "CompileAs")
    [bool] $isDefault = [string]::IsNullOrWhiteSpace($compileAsVal) -or $compileAsVal -ieq "Default"
    if ($isDefault)
    {
      $isCpp = ! $fileFullName.EndsWith($kExtensionC)
    }
    else 
    {
      $isCpp = $compileAsVal -ine $kCProjectCompile
    }
  }  
  catch {}

  [string] $languageFlag = If ($isCpp) { $kClangFlagFileIsCPP } else { $kClangFlagFileIsC }

  return $languageFlag
}

Function Generate-Pch( [Parameter(Mandatory=$true)] [string]   $stdafxDir
                     , [Parameter(Mandatory=$true)] [string]   $stdafxCpp
                     , [Parameter(Mandatory=$false)][string[]] $includeDirectories
                     , [Parameter(Mandatory=$false)][string[]] $additionalIncludeDirectories
                     , [Parameter(Mandatory=$true)] [string]   $stdafxHeaderName
                     , [Parameter(Mandatory=$false)][string[]] $preprocessorDefinitions)
{
  [string] $stdafxSource = (Canonize-Path -base $stdafxDir -child $stdafxHeaderName)
  [string] $stdafx = $stdafxSource + ".hpp"

  # Clients using Perforce will have their source checked-out as readonly files, so the 
  # PCH copy would be, by-default, readonly as well, which would present problems. Make sure to remove the RO attribute.
  Copy-Item -LiteralPath $stdafxSource -Destination $stdafx -PassThru | Set-ItemProperty -name isreadonly -Value $false

  $global:FilesToDeleteWhenScriptQuits.Add($stdafx) > $null

  [string] $vcxprojShortName = [System.IO.Path]::GetFileNameWithoutExtension($global:vcxprojPath);
  [string] $stdafxPch = (Join-Path -path (Get-SourceDirectory) `
                                   -ChildPath "$vcxprojShortName$kExtensionClangPch")
  Remove-Item -LiteralPath "$stdafxPch" -ErrorAction SilentlyContinue > $null

  $global:FilesToDeleteWhenScriptQuits.Add($stdafxPch) > $null

  [string] $languageFlag = (Get-ProjectFileLanguageFlag -fileFullName $stdafxCpp)

  [string[]] $compilationFlags = @((Get-QuotedPath $stdafx)
                                  ,$kClangFlagMinusO
                                  ,(Get-QuotedPath $stdafxPch)
                                  ,$languageFlag
                                  ,(Get-ClangCompileFlags -isCpp ($languageFlag -ieq $kClangFlagFileIsCPP))
                                  ,$kClangFlagNoUnusedArg
                                  ,$preprocessorDefinitions
                                  )
  if ($kLLVMVersion -ge 11)
  {
    # this flag gets around 15% faster PCH compilation times
    # https://www.phoronix.com/scan.php?page=news_item&px=LLVM-Clang-11-PCH-Instant-Temp
    $compilationFlags += $kClangFlagFasterPch
  }

  $compilationFlags += Get-ClangIncludeDirectories -includeDirectories           $includeDirectories `
                                                   -additionalIncludeDirectories $additionalIncludeDirectories

  # Remove empty arguments from the list because Start-Process will complain
  $compilationFlags = $compilationFlags | Where-Object { $_ } | Select -Unique

  [string] $exeToCallVerbosePath  = $kClangCompiler
  if (![string]::IsNullOrWhiteSpace($global:llvmLocation))
  {
    $exeToCallVerbosePath = "$($global:llvmLocation)\$exeToCallVerbosePath"
  }
  Write-Verbose "INVOKE: $exeToCallVerbosePath $compilationFlags"

  $kClangWorkingDir = "$(Get-SourceDirectory)" -replace '\[', '`[' -replace ']', '`]'
  # We could skip the WorkingDir parameter as all paths are absolute but 
  # Powershell 3-5 has a bug when calling Start-Process from a directory containing square brackets
  # in its path. This can be overcome by providing escaped brackets in the WorkingDirectory arg.
  # Powershell 7 does not have this limitation.
  [System.Diagnostics.Process] $processInfo = Start-Process -FilePath $kClangCompiler `
                                                            -ArgumentList $compilationFlags `
                                                            -WorkingDirectory $kClangWorkingDir `
                                                            -NoNewWindow `
                                                            -Wait `
                                                            -PassThru
  if (($processInfo.ExitCode -ne 0) -and (!$aContinueOnError))
  {
    Fail-Script "Errors encountered during PCH creation"
  }

  if (Test-Path -LiteralPath $stdafxPch)
  {
    return $stdafxPch
  }
  else
  {
    return ""
  }
}

Function Get-ExeToCall([Parameter(Mandatory=$true)][WorkloadType] $workloadType)
{
  switch ($workloadType)
  {
     "Compile"  { return $kClangCompiler }
     "Tidy"     { return $kClangTidy     }
     "TidyFix"  { return $kClangTidy     }
  }
}

Function Get-CompileCallArguments( [Parameter(Mandatory=$false)][string[]] $preprocessorDefinitions
                                 , [Parameter(Mandatory=$false)][string[]] $includeDirectories
                                 , [Parameter(Mandatory=$false)][string[]] $additionalIncludeDirectories
                                 , [Parameter(Mandatory=$false)][string[]] $forceIncludeFiles
                                 , [Parameter(Mandatory=$false)][string]   $pchFilePath
                                 , [Parameter(Mandatory=$true)][string]    $fileToCompile)
{
  [string[]] $projectCompileArgs = @()
  if (! [string]::IsNullOrEmpty($pchFilePath) -and ! $fileToCompile.EndsWith($kExtensionC))
  {
    $projectCompileArgs += @($kClangFlagIncludePch , (Get-QuotedPath $pchFilePath))
  }

  [string] $languageFlag = (Get-ProjectFileLanguageFlag -fileFullName $fileToCompile)

  $projectCompileArgs += @( $languageFlag
                          , (Get-QuotedPath $fileToCompile)
                          , @(Get-ClangCompileFlags -isCpp ($languageFlag -ieq $kClangFlagFileIsCPP))
                          , $kClangFlagSupressLINK
                          , $preprocessorDefinitions
                          )

  $projectCompileArgs += Get-ClangIncludeDirectories -includeDirectories           $includeDirectories `
                                                     -additionalIncludeDirectories $additionalIncludeDirectories

  if ($forceIncludeFiles)
  {
    $projectCompileArgs += $kClangFlagNoMsInclude;

    foreach ($file in $forceIncludeFiles)
    {
      $projectCompileArgs += "$kClangFlagForceInclude $(Get-QuotedPath $file)"
    }
  }

  return $projectCompileArgs
}

Function Get-TidyCallArguments( [Parameter(Mandatory=$false)][string[]] $preprocessorDefinitions
                              , [Parameter(Mandatory=$false)][string[]] $includeDirectories
                              , [Parameter(Mandatory=$false)][string[]] $additionalIncludeDirectories
                              , [Parameter(Mandatory=$false)][string[]] $forceIncludeFiles
                              , [Parameter(Mandatory=$true)][string]   $fileToTidy
                              , [Parameter(Mandatory=$false)][string]  $pchFilePath
                              , [Parameter(Mandatory=$false)][switch]  $fix)
{
  [string[]] $tidyArgs = @()
  if ($fix)
  {
    # Map tidy-fix replacements temprorary file path to original file path
    if(![string]::IsNullOrEmpty($fileToTidy))
    {
      [string] $tidyFixReplacementYamlPath = Join-Path  -Path ($global:tidyFixReplacementDirPath) `
                                                        -ChildPath ([guid]::NewGuid().ToString() + $kExtensionYaml)
      $tidyArgs += $kClangTidyFixExportFixes + @((Get-QuotedPath $tidyFixReplacementYamlPath))
    }
  }

  $tidyArgs += (Get-QuotedPath $fileToTidy)
  if (![string]::IsNullOrWhiteSpace($aTidyFlags) -and ($aTidyFlags -ne $kClangTidyUseFile) -and !(Test-Path $aTidyFlags))
  {
    $tidyArgs += "$kClangTidyFlagChecks`"$aTidyFlags`""
  }  
  if (![string]::IsNullOrWhiteSpace($aTidyFixFlags) -and ($aTidyFixFlags -ne $kClangTidyUseFile) -and !(Test-Path $aTidyFixFlags))
  {
    $tidyArgs += "$kClangTidyFlagChecks`"$aTidyFixFlags`""
  }

  # The header-filter flag enables clang-tidy to run on headers too.
  if (![string]::IsNullOrEmpty($aTidyHeaderFilter))
  {
    if ($aTidyHeaderFilter -eq '_')
    {
      [string] $fileNameMatch = """$(Get-FileName -path $fileToTidy -noext).*"""
      $tidyArgs += "$kClangTidyFlagHeaderFilter$fileNameMatch"
    }
    else
    {
      $tidyArgs += "$kClangTidyFlagHeaderFilter""$aTidyHeaderFilter"""
    }
  }

  if ($fix)
  {
    if (![string]::IsNullOrEmpty($aAfterTidyFixFormatStyle))
    {
      $tidyArgs += "$kClangTidyFormatStyle$aAfterTidyFixFormatStyle"
    }
  }
  $tidyArgs += $kClangTidyFlags

  $tidyArgs += Get-ClangIncludeDirectories -includeDirectories           $includeDirectories `
                                           -additionalIncludeDirectories $additionalIncludeDirectories

  [string] $languageFlag = (Get-ProjectFileLanguageFlag -fileFullName $fileToTidy)

  # We reuse flags used for compilation and preprocessor definitions.
  $tidyArgs += @(Get-ClangCompileFlags -isCpp ($languageFlag -ieq $kClangFlagFileIsCPP))
  $tidyArgs += $preprocessorDefinitions
  $tidyArgs += $languageFlag

  if (! [string]::IsNullOrEmpty($pchFilePath) -and ! $fileToTidy.EndsWith($kExtensionC))
  {
    $tidyArgs += @($kClangFlagIncludePch , (Get-QuotedPath $pchFilePath))
  }

  if ($forceIncludeFiles)
  {
    $tidyArgs += $kClangFlagNoMsInclude;

    foreach ($file in $forceIncludeFiles)
    {
      $tidyArgs += "$kClangFlagForceInclude $file"
    }
  }

  return $tidyArgs
}

Function Get-ExeCallArguments( [Parameter(Mandatory=$false)][string]       $pchFilePath
                             , [Parameter(Mandatory=$false)][string[]]     $includeDirectories
                             , [Parameter(Mandatory=$false)][string[]]     $additionalIncludeDirectories
                             , [Parameter(Mandatory=$false)][string[]]     $preprocessorDefinitions
                             , [Parameter(Mandatory=$false)][string[]]     $forceIncludeFiles
                             , [Parameter(Mandatory=$true) ][string]       $currentFile
                             , [Parameter(Mandatory=$true) ][WorkloadType] $workloadType)
{
  switch ($workloadType)
  {
    Compile { return Get-CompileCallArguments -preprocessorDefinitions       $preprocessorDefinitions `
                                              -includeDirectories            $includeDirectories `
                                              -additionalIncludeDirectories  $additionalIncludeDirectories `
                                              -forceIncludeFiles             $forceIncludeFiles `
                                              -pchFilePath                   $pchFilePath `
                                              -fileToCompile                 $currentFile }
    Tidy    { return Get-TidyCallArguments -preprocessorDefinitions       $preprocessorDefinitions `
                                           -includeDirectories            $includeDirectories `
                                           -additionalIncludeDirectories  $additionalIncludeDirectories `
                                           -forceIncludeFiles             $forceIncludeFiles `
                                           -pchFilePath                   $pchFilePath `
                                           -fileToTidy                    $currentFile }
    TidyFix { return Get-TidyCallArguments -preprocessorDefinitions       $preprocessorDefinitions `
                                           -includeDirectories            $includeDirectories `
                                           -additionalIncludeDirectories  $additionalIncludeDirectories `
                                           -forceIncludeFiles             $forceIncludeFiles `
                                           -pchFilePath                   $pchFilePath `
                                           -fileToTidy                    $currentFile `
                                           -fix}
  }
}

Function Process-ProjectResult($compileResult)
{
  $global:cptCurrentClangJobCounter = $compileResult.JobCounter
  Write-Debug "Receiving results for clang job $($global:cptCurrentClangJobCounter)"

  if (!$compileResult.Success)
  {
    Write-Err ($compileResult.Output)

    if (!$aContinueOnError)
    {
      # Wait for other workers to finish. They have a lock on the PCH file
      Get-Job -state Running | Wait-Job | Remove-Job > $null
      Fail-Script
    }

    $global:FoundErrors = $true
  }
  else
  {
    if ( $compileResult.Output.Length -gt 0)
    {
      Write-Output $compileResult.Output
    }
  }
}

Function Wait-AndProcessBuildJobs([switch]$any)
{
  $runningJobs = @(Get-Job -state Running)

  if ($any)
  {
    $runningJobs | Wait-Job -Any > $null
  }
  else
  {
    $runningJobs | Wait-Job > $null
  }

  $jobData = Get-Job -State Completed
  foreach ($job in $jobData)
  {
    $buildResult = Receive-Job $job
    Process-ProjectResult -compileResult $buildResult
  }

  Remove-Job -State Completed
}

Function Wait-ForWorkerJobSlot()
{
  # We allow as many background workers as we have logical CPU cores
  $runningJobs = @(Get-Job -State Running)

  if ($runningJobs.Count -ge $kLogicalCoreCount)
  {
    Wait-AndProcessBuildJobs -any
  }
}

Function Run-ClangJobs( [Parameter(Mandatory=$true)] $clangJobs
                      , [Parameter(Mandatory=$true)][WorkloadType] $workloadType
                      )
{
  # Script block (lambda) for logic to be used when running a clang job.
  $jobWorkToBeDone = `
  {
    param( $job )

    Push-Location -LiteralPath $job.WorkingDirectory

    # This temp file will hold compilation args for clang++ and clang-tidy, not to be
    # confused with check-flags for clang-tidy.
    [string] $clangConfigFile = [System.IO.Path]::GetTempFileName()

    [string] $clangConfigContent = ""
    if ($job.FilePath -like '*tidy*')
    {
      # We have to separate Clang args from Tidy args
      $splitparams = $job.ArgumentList -split " -- "
      $clangConfigContent = $splitparams[1]

      # We may have an explicit .clang-tidy check-flag config file to be used
      if (![string]::IsNullOrWhiteSpace($job.TidyFlagsTempFile) -and (Test-Path -LiteralPath $job.TidyFlagsTempFile))
      {
        $splitparams[0] += " --config-file=""$($job.TidyFlagsTempFile)"" "
      }

      $job.ArgumentList = "$($splitparams[0]) -- --config ""$clangConfigFile"""
    }
    else
    {
      # Tell Clang to take its compilation args from a config file
      $clangConfigContent = $job.ArgumentList
      $job.ArgumentList = "--config ""$clangConfigFile"""
    }

    # escape slashes for file paths
    # make sure escaped double quotes are not messed up
    $clangConfigContent = $clangConfigContent -replace '\\([^"])', '\\$1'

    # save compilation arguments to clang config file
    $clangConfigContent > $clangConfigFile

    # When PowerShell encounters errors, the first one is handled differently from consecutive ones
    # To circumvent this, do not execute the job directly, but execute it via cmd.exe
    # See also https://stackoverflow.com/a/35980675
    
    $callOutput = cmd /c "$($job.FilePath) $($job.ArgumentList) 2>&1" | Out-String

    $callSuccess = $LASTEXITCODE -eq 0
    if (!$callSuccess)
    {
    }

    Remove-Item $clangConfigFile
    Pop-Location

    return New-Object PsObject -Prop @{ "File"    = $job.File
                                      ; "Success" = $callSuccess
                                      ; "Output"  = $callOutput
                                      ; "JobCounter" = $job.JobCounter
                                      }
  }

  if (!$aResumeAfterError)
  {
    $global:cptCurrentClangJobCounter = $clangJobs.Count
  }
  else
  {
    if (!(VariableExists 'cptCurrentClangJobCounter'))
    {
      Write-Warning "Can't resume. Previous state is unreliable. Processing all files..."
      $global:cptCurrentClangJobCounter = $clangJobs.Count
    }
    else
    {
      if ($global:cptCurrentClangJobCounter -gt 0)
      {
        Write-Output "Resuming from file #$($global:cptCurrentClangJobCounter)"
      }
    }
  }

  [int] $crtJobCount = $clangJobs.Count

  foreach ($job in $clangJobs)
  {
    if ($global:cptCurrentClangJobCounter -ge 0 -and $crtJobCount -gt $global:cptCurrentClangJobCounter)
    {
      $crtJobCount--
      continue
    }

    $job.JobCounter = $crtJobCount

    # Check if we must wait for background jobs to complete
    Wait-ForWorkerJobSlot

    # Inform console what CPP we are processing next
    Write-Output "$($crtJobCount): $($job.File)"

    if ($aUseParallelCompile)
    {
      Start-Job -ScriptBlock  $jobWorkToBeDone `
                -ArgumentList $job `
                -ErrorAction Continue > $null
    }
    else
    {
      $compileResult = Invoke-Command -ScriptBlock  $jobWorkToBeDone `
                                      -ArgumentList $job
      Process-ProjectResult -compileResult $compileResult
      $global:cptCurrentClangJobCounter = $compileResult.JobCounter
    }

    $crtJobCount -= 1
  }

  Wait-AndProcessBuildJobs

  $global:cptCurrentClangJobCounter = -1 # stop the mechanism after one project
}

Function Get-ProjectFileSetting( [Parameter(Mandatory=$true)] [string] $fileFullName
                               , [Parameter(Mandatory=$true)] [string] $propertyName
                               , [Parameter(Mandatory=$false)][string] $defaultValue)
{
  if (!$global:cptFilesToProcess.ContainsKey($fileFullName))
  {
    throw "File $aFileFullName is not in processing queue."
  }

  if ($global:cptFilesToProcess[$fileFullName].Properties -and
      $global:cptFilesToProcess[$fileFullName].Properties.ContainsKey($propertyName))
  {
    return $global:cptFilesToProcess[$fileFullName].Properties[$propertyName]
  }

  if ($defaultValue -ne $null)
  {
    return $defaultValue
  }

  throw "Could not find $propertyName for $fileFullName. No default value specified."
}

Function Process-Project( [Parameter(Mandatory=$true)] [string]       $vcxprojPath
                        , [Parameter(Mandatory=$true)] [WorkloadType] $workloadType
                        , [Parameter(Mandatory=$false)][string]       $platformConfig
                        )
{
  #-----------------------------------------------------------------------------------------------
  $global:cptCurrentConfigPlatform = $platformConfig

  $projCounter = $global:cptProjectCounter
  [string] $projectOutputString = ("PROJECT$(if ($projCounter -gt 1) { " #$projCounter" } else { } ): " + $vcxprojPath)
  
  [bool] $loadedFromCache = $false
  try
  { 
    Set-Variable 'kCacheRepositorySaveIsNeeded' -value $false
    Write-InformationTimed "Before project load"
    
    if (Is-CacheLoadingEnabled)
    {
      Write-InformationTimed "Trying to load project from cache"
      $loadedFromCache = Load-ProjectFromCache $vcxprojPath
      
      if (!$loadedFromCache)
      {
        LoadProject $vcxprojPath
        Set-Variable 'kCacheRepositorySaveIsNeeded' -value $true
      }
    }
    else 
    {
      LoadProject $vcxprojPath
    }
    
    Write-InformationTimed "After project load"
    Write-Output "$projectOutputString [$($global:cptCurrentConfigPlatform)]"
  }
  catch [ProjectConfigurationNotFound]
  {
    [string] $configPlatform = ([ProjectConfigurationNotFound]$_.Exception).ConfigPlatform
    
    Write-Output "$projectOutputString [$($global:cptCurrentConfigPlatform)]"
    Write-Output ("Skipped. Configuration not present: " + $configPlatform);
    
    Pop-Location
    return
  }
  
  Write-InformationTimed "Detecting toolset"

  #-----------------------------------------------------------------------------------------------
  # DETECT PLATFORM TOOLSET

  if (! $loadedFromCache)
  {
    [string] $global:platformToolset = Get-ProjectPlatformToolset
    Write-Verbose "Platform toolset: $platformToolset"
    Add-ToProjectSpecificVariables 'platformToolset'

    if ( $platformToolset -match "^v\d+(_xp)?$" )
    {
      [int] $toolsetVersion = [int]$platformToolset.Remove(0, 1).Replace("_xp", "")

      [string] $desiredVisualStudioVer = ""

      # toolsets attached to specific Visual Studio versions
      if ($toolsetVersion -le 120)
      {
        $desiredVisualStudioVer = "2013"
      }
      elseif ($toolsetVersion -eq 140)
      {
        $desiredVisualStudioVer = "2015"
      }
      elseif ($toolsetVersion -eq 141)
      {
        $desiredVisualStudioVer = "2017"
      }
      elseif ($toolsetVersion -eq 142)
      {
        $desiredVisualStudioVer = "2019";
      }
      elseif ($toolsetVersion -eq 143)
      {
        $desiredVisualStudioVer = "2022";
      }

      [string] $desiredVisualStudioVerNumber = (Get-VisualStudio-VersionNumber $desiredVisualStudioVer)
      if ($VisualStudioVersion -ne $desiredVisualStudioVerNumber)
      {
        [bool] $shouldReload = $false

        if ([double]::Parse($VisualStudioVersion) -gt [double]::Parse($desiredVisualStudioVerNumber))
        {
          # in this case we may have a newer Visual Studio with older toolsets installed
          [string[]] $supportedVsToolsets = Get-VisualStudioToolsets
    
          if ($supportedVsToolsets -notcontains $toolsetVersion)
          {
              $shouldReload = $true
          }
          else 
          {
            Write-Verbose "[ INFO ] Detected project using older toolset ($toolsetVersion)"
            Write-Verbose "Loading using Visual Studio $VisualStudioVersion with toolset $toolsetVersion"
          }
        }
        else 
        {
          # project uses a newer VS version, clearly we should reload using the newer version
          $shouldReload = $true
        }

        if ($shouldReload)
        {
          # We need to reload everything and use the VS version we decided upon above
          Write-Verbose "[ RELOAD ] Project will reload because of toolset requirements change..."
          Write-Verbose "Current = $VisualStudioVersion. Required = $desiredVisualStudioVerNumber."

          $global:cptVisualStudioVersion = $desiredVisualStudioVer
          LoadProject($vcxprojPath)
          
          Write-InformationTimed "Project reloaded"
        }
      }
    }
  
    Write-InformationTimed "Detected toolset"

    #-----------------------------------------------------------------------------------------------
    # FIND FORCE INCLUDES

    [string[]] $global:forceIncludeFiles = @(Get-ProjectForceIncludes)
    Write-Verbose-Array -array $forceIncludeFiles -name "Force includes"
    Add-ToProjectSpecificVariables 'forceIncludeFiles'

    #-----------------------------------------------------------------------------------------------
    # DETECT PROJECT PREPROCESSOR DEFINITIONS

    [string[]] $global:preprocessorDefinitions = @(Get-ProjectPreprocessorDefines)
    if ([int]$global:cptVisualStudioVersion -ge 2017)
    {
      # [HACK] pch generation crashes on VS 15.5 because of STL library, known bug.
      # Triggered by addition of line directives to improve std::function debugging.
      # There's a definition that supresses line directives.

      $preprocessorDefinitions += @('"-D_DEBUG_FUNCTIONAL_MACHINERY"')
    }
    Add-ToProjectSpecificVariables 'preprocessorDefinitions'
    
    Write-InformationTimed "Detected preprocessor definitions"

    Write-Verbose-Array -array $preprocessorDefinitions -name "Preprocessor definitions"

    #-----------------------------------------------------------------------------------------------
    # DETECT PROJECT ADDITIONAL INCLUDE DIRECTORIES AND CONSTRUCT INCLUDE PATHS

    [string[]] $global:additionalIncludeDirectories = @(Get-ProjectAdditionalIncludes)
    Write-Verbose-Array -array $additionalIncludeDirectories -name "Additional include directories"
    Add-ToProjectSpecificVariables 'additionalIncludeDirectories'

    [string[]] $includeDirectories = @(Get-ProjectIncludeDirectories)
    Write-Verbose-Array -array $includeDirectories -name "Include directories"
    Add-ToProjectSpecificVariables 'includeDirectories'

    Write-InformationTimed "Detected include directories"

    #-----------------------------------------------------------------------------------------------
    # FIND LIST OF CPPs TO PROCESS

    $global:projectAllCpps = @{}
    foreach ($fileToCompileInfo in (Get-ProjectFilesToCompile))
    {
      if ($fileToCompileInfo.File)
      {
        $global:projectAllCpps[$fileToCompileInfo.File] = $fileToCompileInfo
      }
    }
    
    Add-ToProjectSpecificVariables 'projectAllCpps'
    
    Write-InformationTimed "Detected cpps to process"
  } # past the caching boundary here, we must see what else needs to be computed live 
  
  $global:cptFilesToProcess = $global:projectAllCpps # reset to full project cpp list
  
  #-----------------------------------------------------------------------------------------------
  # LOCATE STDAFX.H DIRECTORY

  [string] $stdafxCpp    = ""
  [string] $stdafxDir    = ""
  [string] $stdafxHeader = ""
  [string] $stdafxHeaderFullPath = ""

  [bool] $kPchIsNeeded = $global:cptFilesToProcess.Keys.Count -ge 2
  if ($kPchIsNeeded)
  {
    # if we have only one rooted file in the script parameters, then we don't need to detect PCH
    if ($aCppToCompile.Count -eq 1 -and [System.IO.Path]::IsPathRooted($aCppToCompile[0]))
    {
      $kPchIsNeeded = $false
    }
  }

  foreach ($projCpp in $global:cptFilesToProcess.Keys)
  {
    if ( (Get-ProjectFileSetting -fileFullName $projCpp -propertyName 'PrecompiledHeader') -ieq 'Create')
    {
      $stdafxCpp = $projCpp
    }
  }

  if (![string]::IsNullOrEmpty($stdafxCpp))
  {
    Write-Verbose "PCH cpp name: $stdafxCpp"

    if ($forceIncludeFiles.Count -gt 0)
    {
      $stdafxHeader = $forceIncludeFiles[0]
    }

    if (!$stdafxHeader)
    {
      $stdafxHeader = Get-PchCppIncludeHeader -pchCppFile $stdafxCpp
    }

    if (!$stdafxHeader)
    {
      try
      {
        $stdafxHeader = Get-ProjectFileSetting -fileFullName $stdafxCpp -propertyName 'PrecompiledHeaderFile'
      }
      catch {}
    }

    Write-Verbose "PCH header name: $stdafxHeader"
    $stdafxDir = Get-ProjectStdafxDir -pchHeaderName                $stdafxHeader       `
                                      -includeDirectories           $includeDirectories `
                                      -additionalIncludeDirectories $additionalIncludeDirectories
  }

  if ([string]::IsNullOrEmpty($stdafxDir))
  {
    Write-Verbose ("No PCH information for this project!")
    $kPchIsNeeded = $false
  }
  else
  {
    Write-Verbose ("PCH directory: $stdafxDir")

    $includeDirectories = @(Remove-PathTrailingSlash -path $stdafxDir) + $includeDirectories

    $stdafxHeaderFullPath = Canonize-Path -base $stdafxDir -child $stdafxHeader -ignoreErrors

    if (!$kPchIsNeeded)
    {
      Write-Verbose "PCH is disabled for this project. Will not generate."
    }
  }
  
  Write-InformationTimed "Detected PCH information"


  #-----------------------------------------------------------------------------------------------
  # FILTER LIST OF CPPs TO PROCESS
  if ($global:cptFilesToProcess.Count -gt 0 -and $aCppToIgnore.Count -gt 0)
  {
    [System.Collections.Hashtable] $filteredCpps = @{}
    foreach ($cpp in $global:cptFilesToProcess.Keys)
    {
      if ( ! (Should-IgnoreFile -file $cpp) )
      {
        $filteredCpps[$cpp] = $global:cptFilesToProcess[$cpp]
      }
    }
    $global:cptFilesToProcess = $filteredCpps
  }

  if ($global:cptFilesToProcess.Count -gt 0 -and $aCppToCompile.Count -gt 0)
  {
    [System.Collections.Hashtable] $filteredCpps = @{}
    [bool] $dirtyStdafx = $false
    foreach ($cpp in $aCppToCompile)
    {
      if ($cpp -ieq $stdafxHeaderFullPath)
      {
        # stdafx modified => compile all
        $dirtyStdafx = $true
        break
      }

      if (![string]::IsNullOrEmpty($cpp))
      {
        if ([System.IO.Path]::IsPathRooted($cpp))
        {
          if ($global:cptFilesToProcess.ContainsKey($cpp))
          {
            # really fast, use cache
            $filteredCpps[$cpp] = $global:cptFilesToProcess[$cpp]
          }
        }
        else
        {
          # take the slow road and check if it matches
          $global:cptFilesToProcess.Keys | Where-Object {  IsFileMatchingName -filePath $_ -matchName $cpp } | `
                                           ForEach-Object { $filteredCpps[$_] = $global:cptFilesToProcess[$_] }
        }
      }
    }

    if (!$dirtyStdafx)
    {
      $global:cptFilesToProcess = $filteredCpps
    }
    else
    {
      Write-Verbose "PCH header has been targeted as dirty. Building entire project"
    }
  }
  
  Write-InformationTimed "Filtered out CPPs from bucket"

  Write-Verbose ("Processing " + $global:cptFilesToProcess.Count + " cpps")

  #-----------------------------------------------------------------------------------------------
  # CREATE PCH IF NEED BE, ONLY FOR TWO CPPS OR MORE
  #
  # JSON Compilation Database file will outlive this execution run, while the PCH is temporary 
  # so we disable PCH creation for that case as well.

  if ($kPchIsNeeded -and $global:cptFilesToProcess.Count -lt 2)
  {
    $kPchIsNeeded = $false
  }

  [string] $pchFilePath = ""
  if ($kPchIsNeeded -and !$aExportJsonDB)
  {
    # COMPILE PCH
    Write-Verbose "Generating PCH..."
    $pchFilePath = Generate-Pch -stdafxDir        $stdafxDir    `
                                -stdafxCpp        $stdafxCpp    `
                                -stdafxHeaderName $stdafxHeader `
                                -preprocessorDefinitions $preprocessorDefinitions `
                                -includeDirectories $includeDirectories `
                                -additionalIncludeDirectories $additionalIncludeDirectories
    Write-Verbose "PCH: $pchFilePath"
    if ([string]::IsNullOrEmpty($pchFilePath) -and $aContinueOnError)
    {
      Write-Output "Skipping project. Reason: cannot create PCH."
      return
    }
    Write-InformationTimed "Created PCH"
  }  

  if ($kCacheRepositorySaveIsNeeded)
  {
    Write-InformationTimed "Before serializing project"
    Save-ProjectToCacheRepo
    Write-InformationTimed "After serializing project"
  }

  #-----------------------------------------------------------------------------------------------
  # PROCESS CPP FILES. CONSTRUCT COMMAND LINE JOBS TO BE INVOKED

  $clangJobs = @()

  # Create directory where to store tidy fix replacements
  if ($aTidyFixFlags)
  {
    $global:tidyFixReplacementDirPath = (Join-Path -path $kCptTidyFixReplacementsDir `
                                                   -ChildPath (Split-Path (Get-SourceDirectory) -Leaf)) `
                                                   + "_" + ([guid]::NewGuid().ToString())
    # check if SolutionDir for tidy fix replacements already exists
    if (Test-Path -LiteralPath $global:tidyFixReplacementDirPath)
    {
      Remove-Item $global:tidyFixReplacementDirPath -Recurse
      New-Item -Path $global:tidyFixReplacementDirPath -ItemType "directory" > $null
    }
    else
    {
      New-Item -Path $global:tidyFixReplacementDirPath -ItemType "directory" > $null
    }
  }

  foreach ($cpp in $global:cptFilesToProcess.Keys)
  {
    [string] $cppPchSetting = Get-ProjectFileSetting -propertyName 'PrecompiledHeader' -fileFullName $cpp -defaultValue 'Use'

    if ($cppPchSetting -ieq 'Create')
    {
        continue # no point in compiling the PCH CPP
    }

    [string[]] $cppForceIncludes = Get-FileForceIncludes -fileFullName $cpp
    [string] $exeToCall = Get-ExeToCall -workloadType $workloadType

    [string] $finalPchPath = $pchFilePath
    if ($cppPchSetting -ieq 'NotUsing')
    {
      $finalPchPath = ""
      Write-Verbose "`n[PCH] Will ignore precompiled headers for $cpp`n"
    }

    [string] $exeArgs   = Get-ExeCallArguments -workloadType            $workloadType `
                                               -pchFilePath             $finalPchPath `
                                               -preprocessorDefinitions $preprocessorDefinitions `
                                               -forceIncludeFiles       $cppForceIncludes `
                                               -currentFile             $cpp `
                                               -includeDirectories      $includeDirectories `
                                               -additionalIncludeDirectories $additionalIncludeDirectories

    $newJob = New-Object PsObject -Prop @{ 'FilePath'          = $exeToCall
                                         ; 'WorkingDirectory'  = Get-SourceDirectory
                                         ; 'ArgumentList'      = $exeArgs
                                         ; 'File'              = $cpp
                                         ; 'JobCounter'        = 0 <# will be lazy initialized #>
                                         ; 'TidyFlagsTempFile' = $kClangTidyFlagTempFile
                                         }
    $clangJobs += $newJob
  }
  
  Write-InformationTimed "Created job workers"

  #-----------------------------------------------------------------------------------------------
  # PRINT DIAGNOSTICS

  if ($clangJobs.Count -ge 1)
  {
    [string] $exeToCallVerbosePath  = $exeToCall
    if (![string]::IsNullOrWhiteSpace($global:llvmLocation))
    {
      $exeToCallVerbosePath = "$($global:llvmLocation)\$exeToCallVerbosePath"
    }
    Write-Verbose "INVOKE: $exeToCallVerbosePath $($clangJobs[0].ArgumentList)"
  }

  Write-InformationTimed "Running workers"

  #-----------------------------------------------------------------------------------------------
  # RUN CLANG JOBS
  
  if ($aExportJsonDB)
  {
   foreach ($job in $clangJobs)
   {
     [string] $clangToolPath = $job.FilePath
     if (Exists-Command $clangToolPath)
     {
       # see precisely what path the tool has, to prevent ambiguities.
       $clangToolPath = (Get-Command $job.FilePath).Source
     }
     [string] $clangCommand = """$clangToolPath"" $($job.ArgumentList)"
     JsonDB-Push -directory $job.WorkingDirectory -file $job.File -command $clangCommand
   }
  }
  else 
  {
    Run-ClangJobs -clangJobs $clangJobs -workloadType $workloadType
    Apply-TidyFixReplacements -workloadType $workloadType
  }
}

#-------------------------------------------------------------------------------------------------
# Script entry point

Clear-Host # clears console

Write-InformationTimed "Cleared console. Let's begin..."

#-------------------------------------------------------------------------------------------------
# If we didn't get a location to run CPT at, use the current working directory

if (!$aSolutionsPath)
{
  $aSolutionsPath = (Get-Location).Path
}

# ------------------------------------------------------------------------------------------------
# Load param values from configuration file (if exists)

Update-ParametersFromConfigFile
Write-InformationTimed "Updated script parameters from cpt.config"

# ------------------------------------------------------------------------------------------------
# Initialize the Visual Studio version variable

$global:cptVisualStudioVersion = If ( $aVisualStudioVersion ) `
                                    { $aVisualStudioVersion } Else `
                                    { $global:cptDefaultVisualStudioVersion }

#-------------------------------------------------------------------------------------------------
# Print script parameters

Print-InvocationArguments
Write-InformationTimed "Print args"

[WorkloadType] $workloadType = [WorkloadType]::Compile

if (![string]::IsNullOrEmpty($aTidyFlags))
{
   $workloadType = [WorkloadType]::Tidy
   if (Test-Path -LiteralPath $aTidyFlags)
   {
     $kClangTidyFlagTempFile = $aTidyFlags
   }
}

if (![string]::IsNullOrEmpty($aTidyFixFlags))
{
   $workloadType = [WorkloadType]::TidyFix
   if (Test-Path -LiteralPath $aTidyFixFlags)
   {
     $kClangTidyFlagTempFile = $aTidyFixFlags
   }
}

#-------------------------------------------------------------------------------------------------
# Script entry point

Write-Verbose "CPU logical core count: $kLogicalCoreCount"

# If LLVM is not in PATH try to detect it automatically
[string] $global:llvmLocation = ""

$clangToolWeNeed = Get-ExeToCall -workloadType $workloadType

$global:llvmLocation = Ensure-LLVMTool-IsPresent $clangToolWeNeed
if ($aTidyFixFlags)
{
  Ensure-LLVMTool-IsPresent $kClangApplyReplacements
}
if (![string]::IsNullOrEmpty($global:llvmLocation))
{
  $env:Path += ";" + $global:llvmLocation
}
Set-Variable -name "kLLVMVersion" -value (Get-ClangVersion $clangToolWeNeed) -scope Global

# initialize JSON compilation db support, if required
if ($aExportJsonDB) 
{ 
  JsonDB-Init 
}

Push-Location -LiteralPath (Get-SourceDirectory)

Write-InformationTimed "Searching for solutions"

# fetch .sln paths and data
Load-Solutions

Write-InformationTimed "End solution search"

# This PowerShell process may already have completed jobs. Discard them.
Remove-Job -State Completed
Write-InformationTimed "Discarded already finished jobs"

Write-Verbose "Source directory: $(Get-SourceDirectory)"
Write-Verbose "Scanning for project files"

Write-InformationTimed "Searching for project files"
[System.IO.FileInfo[]] $projects = @(Get-Projects)
[int] $initialProjectCount       = $projects.Count
Write-Verbose ("Found $($projects.Count) projects")
Write-InformationTimed "End project files search"

# ------------------------------------------------------------------------------------------------
# If we get headers in the -file arg we have to detect CPPs that include that header

if ($aCppToCompile -and $aCppToCompile.Count -gt 0)
{
  # We've been given particular files to compile. If headers are among them
  # we'll find all source files that include them and tag them for processing.
  Write-Progress -Activity "#Include discovery" -Status "Detecting CPPs which include the specified headers..."
  [string[]] $headerRefs = @(Get-HeaderReferences -files $aCppToCompile)
  Write-Progress -Activity "#Include discovery" -Completed
  if ($headerRefs.Count -gt 0)
  {
    Write-Verbose-Array -name "Detected referenced source files to process" -array $headerRefs

    $aCppToCompile += @($headerRefs | Where-Object { ![string]::IsNullOrWhiteSpace($_) })
  }
}

if ($aCppToIgnore -and $aCppToIgnore.Count -gt 0)
{
  # We've been given particular files to ignore. If headers are among them
  # we'll find all source files that include them and tag them to be ignored.

  Write-Progress -Activity "CPP Ignore Detection" -Status "Detecting CPPs which include the specified ignore-headers..."
  [string[]] $headerRefs = @(Get-HeaderReferences -files $aCppToIgnore)
  Write-Progress -Activity "CPP Ignore Detection" -Completed

  if ($headerRefs.Count -gt 0)
  {
    Write-Verbose-Array -name "Detected referenced source files to ignore" -array $headerRefs

    $global:cptIgnoredFilesPool += @($headerRefs | Where-Object { ![string]::IsNullOrWhiteSpace($_) })
  }
}

# ------------------------------------------------------------------------------------------------

Write-InformationTimed "Starting projects"

[System.IO.FileInfo[]] $projectsToProcess = @()
[System.IO.FileInfo[]] $ignoredProjects   = @()

if (!$aVcxprojToCompile -and !$aVcxprojToIgnore)
{
  $projectsToProcess = $projects # we process all projects
}
else
{
  # some filtering has to be done

  if ($aVcxprojToCompile)
  {
    $projects = $projects | Where-Object { Should-CompileProject -vcxprojPath $_.FullName }
    $projectsToProcess = @($projects)
  }

  if ($aVcxprojToIgnore)
  {
    $projectsToProcess = @($projects | `
                         Where-Object { !(Should-IgnoreProject  -vcxprojPath $_.FullName ) })

    $ignoredProjects = ($projects | Where-Object { $projectsToProcess -notcontains $_ })
  }
}

if ($projectsToProcess.Count -eq 0)
{
  Write-Err "Cannot find given project(s)"
}

if ($aCppToCompile -and $projectsToProcess.Count -gt 1)
{
  # We've been given particular files to compile, we can narrow down
  # the projects to be processed (those that include any of the particular files)

  # For obvious performance reasons, no filtering is done when there's only one project to process.
  [System.IO.FileInfo[]] $projectsThatIncludeFiles = @(Get-SourceCodeIncludeProjects -projectPool $projectsToProcess `
                                                                                     -files $aCppToCompile)
  Write-Verbose-Array -name "Detected projects" -array $projectsThatIncludeFiles

  # some projects include files using wildcards, we won't match anything in them
  # so when matching nothing we don't do filtering at all
  if ($projectsThatIncludeFiles)
  {
    $projectsToProcess = $projectsThatIncludeFiles
  }
}

if ($projectsToProcess.Count -eq $initialProjectCount)
{
  Write-Verbose "PROCESSING ALL PROJECTS"
}
else
{
  if ($projectsToProcess.Count -gt 1)
  {
      Write-Array -name "PROJECTS" -array $projectsToProcess
  }

  if ($ignoredProjects)
  {
    Write-Array -name "IGNORED PROJECTS" -array $ignoredProjects
  }
}

# ------------------------------------------------------------------------------------------------

if (!$aResumeAfterError)
{
  $global:cptProjectCounter = $projectsToProcess.Length
}
else
{
  if (!(VariableExists 'cptProjectCounter') -or !(VariableExists 'cptProjectsBucket'))
  {
    Write-Warning "Can't resume. Previous state is unreliable. Processing all projects..."
    $global:cptProjectCounter = $projectsToProcess.Length
  }
  elseif ((Compare-Object $projectsToProcess $global:cptProjectsBucket))
  {
    Write-Warning "Can't resume. Previous state is unreliable. Processing all projects...`n`nREMINDER: Don't change arguments when adding -resume.`n`n"
    $global:cptProjectCounter = $projectsToProcess.Length
  }
  else
  {
    Write-Output "Resuming from project #$($global:cptProjectCounter)"
  }
}

[System.IO.FileInfo[]] $global:cptProjectsBucket = $projectsToProcess

[int] $localProjectCounter = $projectsToProcess.Length;
foreach ($project in $projectsToProcess)
{
  if ($localProjectCounter -gt $global:cptProjectCounter)
  {
    $localProjectCounter--;
    continue
  }

  [string] $vcxprojPath = $project.FullName;
  

  [string[]] $configPlatforms = $aVcxprojConfigPlatform
  if ($configPlatforms.Count -eq 0)
  {
    $configPlatforms += @("")
  }

  foreach ($crtPlatformConfig in $configPlatforms)
  {    
    Write-InformationTimed "Before project process"
    Process-Project -vcxprojPath $vcxprojPath -workloadType $workloadType -platformConfig $crtPlatformConfig
    Write-InformationTimed "After project process"

    Write-Output "" # empty line separator
  }

  $localProjectCounter -= 1
  $global:cptProjectCounter = $localProjectCounter
}

if ($aExportJsonDB) 
{ 
  JsonDB-Finalize
}


Write-InformationTimed "Goodbye"

if ($global:FoundErrors)
{
  Fail-Script
}
else
{
  Exit-Script
}


================================================
FILE: ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/get-header-references.ps1
================================================
# line limit for scanning files for #include
[int] $global:cpt_header_include_line_limit = 30

# after the line limit, if any includes are still found we
# extend the limit with this value
[int] $global:cpt_header_include_line_extension = 10

[string[]] $global:headerExtensions = @('h', 'hh', 'hpp', 'hxx')
[string[]] $global:sourceExtensions = @('c', 'cc', 'cpp', 'cxx')

Function detail:FindHeaderReferences( [Parameter(Mandatory = $false)] [string[]] $headers
                                    , [Parameter(Mandatory = $false)] [System.IO.FileInfo[]] $filePool
                                    , [Parameter(Mandatory = $false)] [System.Collections.Hashtable] $alreadyFound = @{}
                                    )
{
    if (!$headers)
    {
        return @()
    }

    [string] $regexHeaders = @($headers | ForEach-Object { ([System.IO.FileInfo]$_).BaseName } `
                                       | Select-Object -Unique `
                                       | Where-Object { $_ -ine "stdafx" -and $_ -ine "resource" } `
                              ) -join '|'

    if ($regexHeaders.Length -eq 0)
    {
        return @()
    }

    [string] $regex = "[/""]($regexHeaders)\.($($global:headerExtensions -join '|'))"""
    Write-Debug "Regex for header reference find: $regex`n"

    [string[]] $returnRefs = @()
    if (!$filePool)
    {
        # initialize pool of files that we look into
        [string[]] $allFileExts = @(($global:sourceExtensions + `
                                     $global:headerExtensions) | ForEach-Object { "*.$_" })
        $filePool = Get-ChildItem -recurse -include $allFileExts
    }

    foreach ($file in $filePool)
    {
        if ($alreadyFound.ContainsKey($file.FullName))
        {
            continue
        }

        [int] $lineCount = 0
        [int] $lineLimit = $global:cpt_header_include_line_limit
        foreach($line in [System.IO.File]::ReadLines($file))
        {
            if ([string]::IsNullOrWhiteSpace($line))
            {
                # skip empty lines
                continue
            }

            if ($line -match $regex)
            {
                if ( ! $alreadyFound.ContainsKey($file.FullName))
                {
                    $alreadyFound[$file.FullName] = $true
                    $returnRefs += $file.FullName
                }

                if ($lineCount -eq $lineLimit)
                {
                    # we still have includes to scan
                    $lineLimit += $global:cpt_header_include_line_extension
                }
            }

            if ( (++$lineCount) -gt $lineLimit)
            {
                break
            }
        }
    }

    if ($returnRefs.Count -gt 0)
    {
        [string[]] $headersLeftToSearch = @($returnRefs | Where-Object `
                                            { FileHasExtension -filePath $_ `
                                                               -ext $global:headerExtensions } )
        if ($headersLeftToSearch.Count -gt 0)
        {
            Write-Debug "[!] Recursive reference detection in progress for: "
            Write-Debug ($headersLeftToSearch -join "`n")
            $returnRefs += detail:FindHeaderReferences -headers      $headersLeftToSearch `
                                                       -filePool     $filePool `
                                                       -alreadyFound $alreadyFound
        }
    }

    $returnRefs = $returnRefs | Select-Object -Unique
    Write-Debug "Found header refs (regex $regex)"
    Write-Debug ($returnRefs -join "`n")
    return $returnRefs
}

<#
.SYNOPSIS
Detects source files that reference given headers.

Returns an array with full paths of files that reference the header(s).
.DESCRIPTION
When modifying a header, all translation units that include that header
have to compiled. This function detects those files that include it.
.PARAMETER files
Header files of which we want references to be found
Any files that are not headers will be ignored.
#>
Function Get-HeaderReferences([Parameter(Mandatory = $false)][string[]] $files)
{
    if ($files.Count -eq 0)
    {
        return @()
    }

    # we take interest only in files that reference headers
    $files = @($files | Where-Object { FileHasExtension -filePath $_ `
                                                        -ext $global:headerExtensions })
    if ($files.Count -eq 0)
    {
        return @()
    }

    [string[]] $refs = @()

    if ($files.Count -gt 0)
    {
        Write-Verbose-Timed "Headers changed. Detecting which source files to process..."
        $refs = detail:FindHeaderReferences -headers $files
        Write-Verbose-Timed "Finished detecting source files."

        $refs = $refs | Where-Object { ! [string]::IsNullOrWhiteSpace($_) }
    }

    return $refs
}

<#
.SYNOPSIS
Detects projects that reference given source files (i.e. cpps).

Returns an array with full paths of detected projects.
.DESCRIPTION
When modifying a file, only projects that reference that file should be recompiled.
.PARAMETER projectPool
Projects in which to look
.PARAMETER files
Source files to be found in projects.
#>
Function Get-SourceCodeIncludeProjects([Parameter(Mandatory = $false)][System.IO.FileInfo[]] $projectPool,
                                       [Parameter(Mandatory = $false)][string[]] $files)
{
    [System.Collections.Hashtable] $fileCache = @{}
    foreach ($file in $files)
    {
        if ($file)
        {
            $fileCache[$file.Trim().ToLower()] = $true
        }
    }

    [System.IO.FileInfo[]] $matchedProjects = @()

    [string] $clPrefix    = '<ClCompile Include="'
    [string] $clSuffix    = '" />'
    [string] $endGroupTag = '</ItemGroup>'

    foreach ($proj in $projectPool)
    {
        [string] $projDir  = $proj.Directory.FullName

        [bool] $inClIncludeSection = $false
        foreach($line in [System.IO.File]::ReadLines($proj.FullName))
        {
            $line = $line.Trim()

            if ($line.StartsWith($clPrefix))
            {
                if (!$inClIncludeSection)
                {
                    $inClIncludeSection = $true
                }

                [string] $filePath = $line.Substring($clPrefix.Length, `
                                                     $line.Length - $clPrefix.Length - $clSuffix.Length)
                if (![System.IO.Path]::IsPathRooted($filePath))
                {
                    $filePath = Canonize-Path -base $projDir -child $filePath -ignoreErrors
                }
                if ([string]::IsNullOrEmpty($filePath))
                {
                    continue
                }

                [System.IO.FileInfo] $sourceFile = $filePath
                if ($fileCache.ContainsKey($sourceFile.FullName.Trim().ToLower()) -or `
                    $fileCache.ContainsKey($sourceFile.Name.Trim().ToLower()))
                {
                    $matchedProjects += $proj
                    break
                }
            }

            if ($inClIncludeSection -and $line -eq $endGroupTag)
            {
                # nothing more to check in this project
                break
            }
        }
    }

    return $matchedProjects
}


================================================
FILE: ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/get-llvm-helper.ps1
================================================
# This helper makes sure we have the LLVM tool we require present on disk.
# If it's not available then we download it from GitHub.
 
# REQUIRES "io.ps1" to be included

# ------------------------------------------------------------------------------------------------
# Default install locations of LLVM. If present there, we automatically use it

Set-Variable -name kLLVMInstallLocations    -value @("${Env:ProgramW6432}\LLVM\bin"
                                                    ,"${Env:ProgramFiles(x86)}\LLVM\bin"
                                                    )                   -option Constant
#Url to assets (clang++ and clang-tidy) from previous release made by Clang Power Tools on github 
Set-Variable -name kCptGithubLlvm -value "https://github.com/Caphyon/clang-power-tools/releases/download/v2023.6.0" `
                                  -option Constant
Set-Variable -name kCptGithubLlvmVersion -value "16.0.6 (LLVM 16.0.6)" -Option Constant

# Clang Constants

Set-Variable -name kCss            -value "clang-doc-default-stylesheet.css"       -option Constant
Set-Variable -name kClangDoc       -value "clang-doc.exe"                          -option Constant
Set-Variable -name kIndex          -value "index.js"                               -option Constant

Function Move-Tool-To-LlvmBin([Parameter(Mandatory = $true)][string] $clangToolWeNeed,
                              [Parameter(Mandatory = $true)][string] $llvmLiteBinDir)
{

  $llvmLiteDir = (get-item $llvmLiteBinDir).Parent.FullName

  if(Test-Path "$llvmLiteDir\$clangToolWeNeed")
  {
    Move-Item -Path "$llvmLiteDir\$clangToolWeNeed" -Destination "$llvmLiteBinDir\$clangToolWeNeed"
  }

}

Function Ensure-LLVMTool-IsPresent([Parameter(Mandatory = $true)][string] $clangToolWeNeed) {
  [string] $ret = ""

  # see if we can reach the tool through PATH
  if (Exists-Command $clangToolWeNeed )
  {
    [System.IO.FileInfo] $toolPath = (Get-Command $clangToolWeNeed).Source
    return $toolPath.Directory.FullName
  }
  
  # search in predefined locations
  foreach ($locationLLVM in $kLLVMInstallLocations)
  {
    if (Test-Path -LiteralPath "$locationLLVM\$clangToolWeNeed")
    {
      return $locationLLVM
    }
  }
  # download read-to-use binary from github

  [string] $llvmLiteDirParent = "${env:APPDATA}\ClangPowerTools"
  [string] $llvmLiteDir       = "$llvmLiteDirParent\LLVM_Lite\Bin"

  [string] $llvmLiteToolPath = "$llvmLiteDir\$clangToolWeNeed"
  if (Test-Path $llvmLiteToolPath)
  {
    $versionPresent = (Get-Item $llvmLiteToolPath).VersionInfo.ProductVersion
    if ($versionPresent -eq $kCptGithubLlvmVersion)
    {
      # we already have downloaded the latest standalone tool, reuse it
      return $llvmLiteDir
    }
  }

  if (Test-InternetConnectivity)
  {
    if ([string]::IsNullOrEmpty($ret))
    {
      if (!(Test-Path $llvmLiteDirParent))
      {
        New-Item -Path $llvmLiteDirParent -ItemType Directory | Out-Null
      }
      if (!(Test-Path $llvmLiteDir))
      {
        New-Item -Path $llvmLiteDir -ItemType Directory | Out-Null
      }
      
      # check if tool already exists Llvm_lite folder, to move it in Llvm_lite/bin
      Move-Tool-To-LlvmBin $clangToolWeNeed $llvmLiteDir

      # the displayed progress slows downloads considerably, so disable it
      $prevPreference = $ProgressPreference
      $ProgressPreference = 'SilentlyContinue'
      [string] $clangCompilerWebPath = "$kCptGithubLlvm/$clangToolWeNeed"
      
      if (Test-Path  $llvmLiteToolPath)
      {
        # we have an older version downloaded, remove it first
        Remove-Item $llvmLiteToolPath -Force
      }

      Write-Verbose "Downloading $clangToolWeNeed $kCptGithubLlvmVersion ..."
      # grab ready-to-use LLVM binaries from Github
      Invoke-WebRequest -Uri $clangCompilerWebPath -OutFile $llvmLiteToolPath
      # download css file if needed tool is clang-doc.exe
      if($clangToolWeNeed -eq $kClangDoc)
      {
        [string] $parentDirLite = (get-item $llvmLiteDir ).Parent.FullName
        [string] $llvmLiteCssFolderPath = "$parentDirLite\share\clang"
        if (!(Test-Path $llvmLiteCssFolderPath))
        {
          New-Item $llvmLiteCssFolderPath -ItemType Directory | Out-Null
        }
        Invoke-WebRequest -Uri "$kCptGithubLlvm/$kCss" -OutFile "$llvmLiteCssFolderPath\$kCss"
        Invoke-WebRequest -Uri "$kCptGithubLlvm/$kIndex" -OutFile "$llvmLiteCssFolderPath\$kIndex"
      } 
      $ProgressPreference = $prevPreference

      $ret = $llvmLiteDir
    }
  }
  return $ret
}


================================================
FILE: ClangPowerTools/ClangPo
Download .txt
gitextract_1cs8fm3_/

├── .gitattributes
├── .github/
│   └── workflows/
│       ├── Build-ClangPowerTools.yml
│       └── Run-ClangPowerTools-tests.yml
├── .gitignore
├── ClangPowerTools/
│   ├── Automation/
│   │   ├── full-llvm-update-instructions.md
│   │   ├── get-tidy-checks-and-format.ps1
│   │   ├── input_checks.txt
│   │   └── update_clang-format.ps1
│   ├── CPTReleases/
│   │   └── IncrementRevisionNumber.ps1
│   ├── ClangPowerTools/
│   │   ├── ClangPowerTools.csproj
│   │   ├── ClangPowerTools.csproj.bak
│   │   ├── ClangPowerTools.vsct
│   │   ├── ClangPowerToolsPackage.cs
│   │   ├── Key.snk
│   │   ├── Properties/
│   │   │   ├── AssemblyInfo.cs
│   │   │   ├── Resource.Designer.cs
│   │   │   └── Resource.resx
│   │   ├── Tooling/
│   │   │   └── v1/
│   │   │       ├── clang-build.ps1
│   │   │       └── psClang/
│   │   │           ├── get-header-references.ps1
│   │   │           ├── get-llvm-helper.ps1
│   │   │           ├── get-llvm.ps1
│   │   │           ├── io.ps1
│   │   │           ├── itemdefinition-context.ps1
│   │   │           ├── jsondb-export.ps1
│   │   │           ├── msbuild-expression-eval.ps1
│   │   │           ├── msbuild-project-cache-repository.ps1
│   │   │           ├── msbuild-project-data.ps1
│   │   │           ├── msbuild-project-load.ps1
│   │   │           └── visualstudio-detection.ps1
│   │   ├── VSPackage.resx
│   │   ├── cpt.config
│   │   └── source.extension.vsixmanifest
│   ├── ClangPowerTools.aip
│   ├── ClangPowerTools.sln
│   ├── ClangPowerToolsLib16/
│   │   ├── ClangPowerToolsLib16.csproj
│   │   ├── Key.snk
│   │   └── Properties/
│   │       ├── AssemblyInfo.cs
│   │       ├── Resource.Designer.cs
│   │       └── Resource.resx
│   ├── ClangPowerToolsLib17/
│   │   ├── ClangPowerToolsLib17.csproj
│   │   ├── Key.snk
│   │   └── Properties/
│   │       ├── AssemblyInfo.cs
│   │       ├── Resource.Designer.cs
│   │       └── Resource.resx
│   ├── ClangPowerToolsShared/
│   │   ├── Attributes/
│   │   │   ├── ClangCheckAttribute.cs
│   │   │   ├── ClangFormatPathAttribute.cs
│   │   │   └── ClangTidyPathAttribute.cs
│   │   ├── Builder/
│   │   │   ├── IAsyncBuilder.cs
│   │   │   └── IBuilder.cs
│   │   ├── CMake/
│   │   │   └── CMakeBuilder.cs
│   │   ├── ClangPowerToolsPackage.cs
│   │   ├── ClangPowerToolsPackageImpl.cs
│   │   ├── ClangPowerToolsShared.projitems
│   │   ├── ClangPowerToolsShared.projitems.bak
│   │   ├── ClangPowerToolsShared.shproj
│   │   ├── Commands/
│   │   │   ├── BackgroundTidy/
│   │   │   │   ├── BackgroundTidy.cs
│   │   │   │   ├── DataProcessor.cs
│   │   │   │   └── PowerShellWrapperBackground.cs
│   │   │   ├── BasicCommand.cs
│   │   │   ├── ClangCommand.cs
│   │   │   ├── CommandController.cs
│   │   │   ├── CommandControllerInstance.cs
│   │   │   ├── CommandIds.cs
│   │   │   ├── CommandUILocation.cs
│   │   │   ├── CompileCommand.cs
│   │   │   ├── DocumentationHtmlCommand.cs
│   │   │   ├── DocumentationMdCommand.cs
│   │   │   ├── DocumentationYamlCommand.cs
│   │   │   ├── FindCommand.cs
│   │   │   ├── FindCommandIds.cs
│   │   │   ├── FindViewMenuCommand.cs
│   │   │   ├── FormatCommand.cs
│   │   │   ├── IgnoreCommand.cs
│   │   │   ├── IgnoreCompileCommand.cs
│   │   │   ├── IgnoreFormatCommand.cs
│   │   │   ├── JsonCompilationDatabaseCommand.cs
│   │   │   ├── LookInMenu.cs
│   │   │   ├── Models/
│   │   │   │   └── CacheProjectsItemsModel.cs
│   │   │   ├── OptimizeIncludesCommand.cs
│   │   │   ├── RunController.cs
│   │   │   ├── SettingsCommand.cs
│   │   │   ├── StopCommand.cs
│   │   │   ├── TidyCommand.cs
│   │   │   └── VsCommands.cs
│   │   ├── Convertors/
│   │   │   ├── BooleanToGridLengthConverter.cs
│   │   │   ├── BooleanToVisibilityConverter.cs
│   │   │   ├── ClangFormatFallbackStyleConverter.cs
│   │   │   ├── ClangFormatStyleConverter.cs
│   │   │   ├── ClangGeneralAdditionalIncludesConvertor.cs
│   │   │   ├── ClangTidyHeaderFiltersConvertor.cs
│   │   │   └── ClangTidyUseChecksFromConvertor.cs
│   │   ├── Error/
│   │   │   ├── ErrorDetector.cs
│   │   │   ├── ErrorFormatter.cs
│   │   │   ├── ErrorParserConstants.cs
│   │   │   ├── ErrorWindowController.cs
│   │   │   ├── TaskErrorModel.cs
│   │   │   ├── TaskErrorModelBuilder.cs
│   │   │   └── TaskErrorViewModel.cs
│   │   ├── Events/
│   │   │   ├── ActiveDocumentEventArgs.cs
│   │   │   ├── BoolEventArgs.cs
│   │   │   ├── ClangCommandEventArgs.cs
│   │   │   ├── CleanErrorListEventArgs.cs
│   │   │   ├── CloseDataConnectionEventArgs.cs
│   │   │   ├── CloseDataStreamingEventArgs.cs
│   │   │   ├── ErrorDetectedEventArgs.cs
│   │   │   ├── FormatCommandEventArgs.cs
│   │   │   ├── HasEncodingErrorEventArgs.cs
│   │   │   ├── JsonFilePathArgs.cs
│   │   │   └── VsHierarchyDetectedEventArgs.cs
│   │   ├── Executables/
│   │   │   └── Clang Format Editor.msi
│   │   ├── Export Config/
│   │   │   └── TidyConfigFile.cs
│   │   ├── Extensions/
│   │   │   ├── IntExtension.cs
│   │   │   ├── ObjectExtension.cs
│   │   │   ├── StringExtension.cs
│   │   │   └── TaskExtensions.cs
│   │   ├── Files Operations/
│   │   │   ├── FileChangerWatcher.cs
│   │   │   ├── FileOpener.cs
│   │   │   └── FilePathCollector.cs
│   │   ├── Helpers/
│   │   │   ├── ActiveWindowProperties.cs
│   │   │   ├── ApiUtility.cs
│   │   │   ├── AutomationUtil.cs
│   │   │   ├── ClangTidyCleaner.cs
│   │   │   ├── DocumentHandler.cs
│   │   │   ├── FileSystem.cs
│   │   │   ├── FormatEditorUtility.cs
│   │   │   ├── GenerateDocumentation.cs
│   │   │   ├── JoinUtility.cs
│   │   │   ├── LaunchCompilationDbProgrammatically.cs
│   │   │   ├── ManageEncoding.cs
│   │   │   ├── NetworkUtility.cs
│   │   │   ├── PCHCleaner.cs
│   │   │   ├── PackageUtility.cs
│   │   │   ├── ProjectConfigurationHandler.cs
│   │   │   ├── PropertyHandler.cs
│   │   │   ├── RegistryUtility.cs
│   │   │   ├── RunningDocTableEvents.cs
│   │   │   ├── ScriptGenerator.cs
│   │   │   ├── SettingsApi.cs
│   │   │   ├── SettingsPathBuilder.cs
│   │   │   ├── SolutionInfo.cs
│   │   │   ├── StatusBarHandler.cs
│   │   │   ├── UIUpdater.cs
│   │   │   ├── VsWindowController.cs
│   │   │   └── Vsix.cs
│   │   ├── IgnoreActions/
│   │   │   └── IgnoreItem.cs
│   │   ├── Items/
│   │   │   ├── CurrentDocument.cs
│   │   │   ├── CurrentProject.cs
│   │   │   ├── CurrentProjectItem.cs
│   │   │   ├── CurrentSolution.cs
│   │   │   ├── IItem.cs
│   │   │   └── ItemsCollector.cs
│   │   ├── MVVM/
│   │   │   ├── .clang-format
│   │   │   ├── AutoCompleteHistory/
│   │   │   │   ├── ASTMatchers.cs
│   │   │   │   └── AutoCompleteBehavior.cs
│   │   │   ├── CollectionElementsCounter.cs
│   │   │   ├── Command/
│   │   │   │   └── RelayCommand.cs
│   │   │   ├── Commands/
│   │   │   │   ├── FileCommand.cs
│   │   │   │   ├── RelayCommand.cs
│   │   │   │   ├── TidyDiffCommand.cs
│   │   │   │   └── VSThemeCommand.cs
│   │   │   ├── CommonSettingsFunctionality.cs
│   │   │   ├── Constants/
│   │   │   │   ├── CPPKeywords.cs
│   │   │   │   ├── ComboBoxConstants.cs
│   │   │   │   ├── EncodingConstants.cs
│   │   │   │   ├── FormatEditorConstants.cs
│   │   │   │   ├── IconResourceConstants.cs
│   │   │   │   ├── LLVMVersionsAlternate.cs
│   │   │   │   ├── LlvmConstants.cs
│   │   │   │   ├── LlvmVersions.cs
│   │   │   │   ├── MatchConstants.cs
│   │   │   │   ├── PathConstants.cs
│   │   │   │   ├── PsUpdaterConstants.cs
│   │   │   │   ├── ResourceConstants.cs
│   │   │   │   ├── ThemeConstants.cs
│   │   │   │   ├── TidyConstants.cs
│   │   │   │   └── UIElementsConstants.cs
│   │   │   ├── Controllers/
│   │   │   │   ├── AccountController.cs
│   │   │   │   ├── FindController.cs
│   │   │   │   ├── FormatEditorController.cs
│   │   │   │   ├── FreeTrialController.cs
│   │   │   │   ├── LicenseController.cs
│   │   │   │   ├── LlvmController.cs
│   │   │   │   ├── LookInMenuController.cs
│   │   │   │   └── TidyToolWindowController.cs
│   │   │   ├── FindToolWindowHandler.cs
│   │   │   ├── Interfaces/
│   │   │   │   ├── IAccountValidator.cs
│   │   │   │   ├── IDownload.cs
│   │   │   │   ├── IInstall.cs
│   │   │   │   ├── ILicense.cs
│   │   │   │   ├── IView.cs
│   │   │   │   └── IViewMatche.cs
│   │   │   ├── LicenseValidation/
│   │   │   │   ├── CommercialLicenseValidator.cs
│   │   │   │   ├── LicenseType.cs
│   │   │   │   ├── LocalLicenseValidator.cs
│   │   │   │   ├── PersonalLicenseValidator.cs
│   │   │   │   └── Token.cs
│   │   │   ├── LlvmUri.cs
│   │   │   ├── Models/
│   │   │   │   ├── AccountApiModel.cs
│   │   │   │   ├── AccountModel.cs
│   │   │   │   ├── CompilerSettingsModel.cs
│   │   │   │   ├── FileModel.cs
│   │   │   │   ├── FormatSettingsModel.cs
│   │   │   │   ├── GeneralSettingsModel.cs
│   │   │   │   ├── InputDataModel.cs
│   │   │   │   ├── LicenseModel.cs
│   │   │   │   ├── LlvmModel.cs
│   │   │   │   ├── LlvmSettingsModel.cs
│   │   │   │   ├── MessageModel.cs
│   │   │   │   ├── SelectedFileModel.cs
│   │   │   │   ├── TidyCheckModel.cs
│   │   │   │   ├── TidySettingsModel.cs
│   │   │   │   ├── ToggleModel.cs
│   │   │   │   ├── TokenModel.cs
│   │   │   │   ├── ToolWindowModels/
│   │   │   │   │   ├── AutoCompleteHistoryModel.cs
│   │   │   │   │   ├── ComponentVisibility.cs
│   │   │   │   │   ├── CountStateFilesModel.cs
│   │   │   │   │   ├── CustomMatchesModel.cs
│   │   │   │   │   ├── DefaultArgsModel.cs
│   │   │   │   │   ├── FileType.cs
│   │   │   │   │   ├── FindControllerModel.cs
│   │   │   │   │   ├── FindToolWindowModel.cs
│   │   │   │   │   ├── IconModel.cs
│   │   │   │   │   └── TidyToolWindowModel.cs
│   │   │   │   └── UserModel.cs
│   │   │   ├── OldSettings/
│   │   │   │   ├── ClangFormatPathValue.cs
│   │   │   │   ├── ClangTidyPathValue.cs
│   │   │   │   ├── HeaderFiltersValue.cs
│   │   │   │   └── OldModels/
│   │   │   │       ├── ClangFormatOptions.cs
│   │   │   │       ├── ClangOptions.cs
│   │   │   │       ├── ClangTidyOptions.cs
│   │   │   │       └── DefaultOptions.cs
│   │   │   ├── PreinstalledLlvm.cs
│   │   │   ├── Provider/
│   │   │   │   ├── FindToolWindowProvider.cs
│   │   │   │   └── SettingsProvider.cs
│   │   │   ├── SettingsHandler.cs
│   │   │   ├── SettingsTooltips.cs
│   │   │   ├── TextManipulation.cs
│   │   │   ├── TidyChecks.cs
│   │   │   ├── TidyChecksDefault.cs
│   │   │   ├── ViewModels/
│   │   │   │   ├── AboutSettingsViewModel.cs
│   │   │   │   ├── AutoCompleteHistoryViewModel.cs
│   │   │   │   ├── CompilerSettingsViewModel.cs
│   │   │   │   ├── DetectedStyleInfoViewModel.cs
│   │   │   │   ├── EncodingErrorViewModel.cs
│   │   │   │   ├── FeedbackViewModel.cs
│   │   │   │   ├── FindToolWindowViewModel.cs
│   │   │   │   ├── FolderExplorerViewModel.cs
│   │   │   │   ├── FormatSettingsViewModel.cs
│   │   │   │   ├── InputDataViewModel.cs
│   │   │   │   ├── InputMultipleDataViewModel.cs
│   │   │   │   ├── LicenseViewModel.cs
│   │   │   │   ├── LlvmSettingsViewModel.cs
│   │   │   │   ├── LoginViewModel.cs
│   │   │   │   ├── ReleaseNotesViewModel.cs
│   │   │   │   ├── SettingsViewModel.cs
│   │   │   │   ├── TidyChecksViewModel.cs
│   │   │   │   ├── TidySettingsViewModel.cs
│   │   │   │   ├── TidyToolWindowViewModel.cs
│   │   │   │   ├── ToggleMultipleDataViewModel.cs
│   │   │   │   └── TrialExpiredViewModel.cs
│   │   │   ├── Views/
│   │   │   │   ├── AboutSettingsView.xaml
│   │   │   │   ├── AboutSettingsView.xaml.cs
│   │   │   │   ├── CMakeBetaWarning.xaml
│   │   │   │   ├── CMakeBetaWarning.xaml.cs
│   │   │   │   ├── CompilerSettingsView.xaml
│   │   │   │   ├── CompilerSettingsView.xaml.cs
│   │   │   │   ├── Components/
│   │   │   │   │   ├── BuyNowFooter.xaml
│   │   │   │   │   ├── BuyNowFooter.xaml.cs
│   │   │   │   │   ├── InputList.xaml
│   │   │   │   │   ├── InputList.xaml.cs
│   │   │   │   │   ├── MessageBanner.xaml
│   │   │   │   │   ├── MessageBanner.xaml.cs
│   │   │   │   │   ├── ThreePieceButton.xaml
│   │   │   │   │   ├── ThreePieceButton.xaml.cs
│   │   │   │   │   ├── ThreePieceComponent.xaml
│   │   │   │   │   └── ThreePieceComponent.xaml.cs
│   │   │   │   ├── DialogWindow.cs
│   │   │   │   ├── EncodingErrorView.xaml
│   │   │   │   ├── EncodingErrorView.xaml.cs
│   │   │   │   ├── FeedbackView.xaml
│   │   │   │   ├── FeedbackView.xaml.cs
│   │   │   │   ├── FindToolWindowView.xaml
│   │   │   │   ├── FindToolWindowView.xaml.cs
│   │   │   │   ├── FolderExplorerView.xaml
│   │   │   │   ├── FolderExplorerView.xaml.cs
│   │   │   │   ├── FormatEditorWarning.xaml
│   │   │   │   ├── FormatEditorWarning.xaml.cs
│   │   │   │   ├── FormatSettingsView.xaml
│   │   │   │   ├── FormatSettingsView.xaml.cs
│   │   │   │   ├── InputDataView.xaml
│   │   │   │   ├── InputDataView.xaml.cs
│   │   │   │   ├── LicenseView.xaml
│   │   │   │   ├── LicenseView.xaml.cs
│   │   │   │   ├── LlvmSettingsView.xaml
│   │   │   │   ├── LlvmSettingsView.xaml.cs
│   │   │   │   ├── LoginView.xaml
│   │   │   │   ├── LoginView.xaml.cs
│   │   │   │   ├── ReleaseNotesView.xaml
│   │   │   │   ├── ReleaseNotesView.xaml.cs
│   │   │   │   ├── SearchBoxView.xaml
│   │   │   │   ├── SearchBoxView.xaml.cs
│   │   │   │   ├── SettingsView.xaml
│   │   │   │   ├── SettingsView.xaml.cs
│   │   │   │   ├── Styles/
│   │   │   │   │   ├── AppResources.xaml
│   │   │   │   │   ├── HyperlinkStyle.xaml
│   │   │   │   │   ├── ImageResources.xaml
│   │   │   │   │   ├── SettingsButtonStyle.xaml
│   │   │   │   │   ├── SettingsComboBoxStyle.xaml
│   │   │   │   │   ├── ToggleStyle.xaml
│   │   │   │   │   └── YellowButtonStyle.xaml
│   │   │   │   ├── TidyChecksView.xaml
│   │   │   │   ├── TidyChecksView.xaml.cs
│   │   │   │   ├── TidySettingsView.xaml
│   │   │   │   ├── TidySettingsView.xaml.cs
│   │   │   │   ├── TidyToolWindowView.xaml
│   │   │   │   ├── TidyToolWindowView.xaml.cs
│   │   │   │   ├── ToolWindows/
│   │   │   │   │   ├── FindToolWindow.cs
│   │   │   │   │   └── TidyToolWindow.cs
│   │   │   │   ├── TrialExpiredView.xaml
│   │   │   │   └── TrialExpiredView.xaml.cs
│   │   │   ├── WebApi/
│   │   │   │   └── WebApiUrl.cs
│   │   │   └── XmlSerializer.cs
│   │   ├── Output/
│   │   │   ├── OutputContentModel.cs
│   │   │   ├── OutputProcessor.cs
│   │   │   ├── OutputWindowBuilder.cs
│   │   │   ├── OutputWindowConstants.cs
│   │   │   ├── OutputWindowController.cs
│   │   │   └── OutputWindowModel.cs
│   │   ├── Resources/
│   │   │   └── LICENSE.txt
│   │   ├── Script/
│   │   │   ├── ClangTidyModeParametersFactory.cs
│   │   │   ├── GenericScriptBuilder.cs
│   │   │   ├── ItemRelatedScriptBuilder.cs
│   │   │   ├── PowerShellWrapper.cs
│   │   │   ├── RunModeScriptBuilder.cs
│   │   │   ├── RunningProcesses.cs
│   │   │   ├── ScriptConstants.cs
│   │   │   └── VerbosityScriptBuilder.cs
│   │   ├── Services/
│   │   │   ├── PowerShellService.cs
│   │   │   └── VsServiceProvider.cs
│   │   ├── SilentFile/
│   │   │   ├── SilentFileChangerBuilder.cs
│   │   │   ├── SilentFileChangerController.cs
│   │   │   ├── SilentFileChangerEqualityComparer.cs
│   │   │   └── SilentFileChangerModel.cs
│   │   ├── Squiggle/
│   │   │   ├── SquiggleErrorTag.cs
│   │   │   ├── SquiggleErrorTagger.cs
│   │   │   ├── SquiggleErrorTaggerProvider.cs
│   │   │   ├── SquiggleModel.cs
│   │   │   ├── SquiggleViewModel.cs
│   │   │   └── SquigglesFactory.cs
│   │   ├── TextOperationsInterfaces/
│   │   │   ├── IDetector.cs
│   │   │   └── ITextFormatter.cs
│   │   └── Tooling/
│   │       └── v1/
│   │           ├── clang-build.ps1
│   │           └── psClang/
│   │               ├── get-header-references.ps1
│   │               ├── get-llvm-helper.ps1
│   │               ├── get-llvm.ps1
│   │               ├── integration-project.tests.ps1
│   │               ├── integration-projects/
│   │               │   ├── CptIntegrationProjects.sln
│   │               │   └── itemgroups/
│   │               │       └── test.vcxproj
│   │               ├── io.ps1
│   │               ├── io.tests.ps1
│   │               ├── itemdefinition-context.ps1
│   │               ├── jsondb-export.ps1
│   │               ├── jsondb-export.tests.ps1
│   │               ├── msbuild-expression-eval.ps1
│   │               ├── msbuild-expression-eval.tests.ps1
│   │               ├── msbuild-project-cache-repository.ps1
│   │               ├── msbuild-project-cache-repository.tests.ps1
│   │               ├── msbuild-project-data.ps1
│   │               ├── msbuild-project-data.tests.ps1
│   │               ├── msbuild-project-load.ps1
│   │               ├── msbuild-project-load.tests.ps1
│   │               ├── visualstudio-detection.ps1
│   │               ├── visualstudio-detection.tests.ps1
│   │               └── ~advinst.tests.ps1
│   ├── ClangPowerToolsUnitTests/
│   │   ├── ClangCommandTests/
│   │   │   ├── IgnoreCompileCommandTests.cs
│   │   │   ├── IgnoreFormatCommandTests.cs
│   │   │   └── ScriptTests.cs
│   │   ├── ClangPowerToolsUnitTests.csproj
│   │   ├── Constants/
│   │   │   └── IgnoreCommand.cs
│   │   ├── PackageTests/
│   │   │   └── AsyncPackageTests.cs
│   │   ├── Settings Tests/
│   │   │   ├── CompilerSettingsTests.cs
│   │   │   ├── FormatSettingsTests.cs
│   │   │   ├── GeneralSettingsTests.cs
│   │   │   └── TidySettingsTests.cs
│   │   ├── VSVersionTests.cs
│   │   └── VsServiceProviderTests.cs
│   ├── VsixAI/
│   │   └── InfoDocument.txt
│   └── cert.pfx
├── LICENSE.TXT
└── README.md
Download .txt
SYMBOL INDEX (1374 symbols across 284 files)

FILE: ClangPowerTools/ClangPowerTools/ClangPowerToolsPackage.cs
  class RunClangPowerToolsPackage2 (line 31) | [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoa...
    method RunClangPowerToolsPackage2 (line 65) | public RunClangPowerToolsPackage2()
    method InitializeAsync (line 80) | protected override async Task InitializeAsync(CancellationToken cancel...

FILE: ClangPowerTools/ClangPowerTools/Properties/Resource.Designer.cs
  class Resource (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resource (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: ClangPowerTools/ClangPowerToolsLib16/Properties/Resource.Designer.cs
  class Resource (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resource (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: ClangPowerTools/ClangPowerToolsLib17/Properties/Resource.Designer.cs
  class Resource (line 22) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resource (line 31) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: ClangPowerTools/ClangPowerToolsShared/Attributes/ClangCheckAttribute.cs
  class ClangCheckAttribute (line 5) | [AttributeUsage(AttributeTargets.Property)]
    method ClangCheckAttribute (line 9) | public ClangCheckAttribute(bool aIsFlag)

FILE: ClangPowerTools/ClangPowerToolsShared/Attributes/ClangFormatPathAttribute.cs
  class ClangFormatPathAttribute (line 5) | [AttributeUsage(AttributeTargets.Property)]
    method ClangFormatPathAttribute (line 10) | public ClangFormatPathAttribute(bool aActivate)

FILE: ClangPowerTools/ClangPowerToolsShared/Attributes/ClangTidyPathAttribute.cs
  class ClangTidyPathAttribute (line 5) | [AttributeUsage(AttributeTargets.Property)]
    method ClangTidyPathAttribute (line 10) | public ClangTidyPathAttribute(bool aActivate)

FILE: ClangPowerTools/ClangPowerToolsShared/Builder/IAsyncBuilder.cs
  type IBuilderAsync (line 5) | public interface IBuilderAsync<T>
    method BuildAsync (line 7) | Task BuildAsync();
    method GetAsyncResult (line 9) | T GetAsyncResult();

FILE: ClangPowerTools/ClangPowerToolsShared/Builder/IBuilder.cs
  type IBuilder (line 3) | public interface IBuilder<T>
    method Build (line 5) | void Build();
    method GetResult (line 6) | T GetResult();

FILE: ClangPowerTools/ClangPowerToolsShared/CMake/CMakeBuilder.cs
  class CMakeBuilder (line 6) | public class CMakeBuilder
    method CreateBuildDirectory (line 22) | public bool CreateBuildDirectory(string newDirName, out string dirPath)
    method Build (line 40) | public void Build()
    method LockVcxprojFile (line 76) | private void LockVcxprojFile()
    method UnlockVcxprojFile (line 87) | private void UnlockVcxprojFile()
    method ClearBuildCashe (line 99) | public void ClearBuildCashe()

FILE: ClangPowerTools/ClangPowerToolsShared/ClangPowerToolsPackage.cs
  class RunClangPowerToolsPackage (line 40) | [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoa...
    method RunClangPowerToolsPackage (line 78) | public RunClangPowerToolsPackage()
    method InitializeAsync (line 96) | protected override async Task InitializeAsync(CancellationToken cancel...
    method AdviseSolutionEvents (line 169) | private void AdviseSolutionEvents(IVsSolution aVsSolution)
    method UnadviseSolutionEvents (line 181) | private void UnadviseSolutionEvents(IVsSolution aVsSolution)
    method OnAfterOpenProject (line 201) | public int OnAfterOpenProject(IVsHierarchy aPHierarchy, int aFAdded)
    method OnQueryCloseProject (line 207) | public int OnQueryCloseProject(IVsHierarchy aPHierarchy, int aFRemovin...
    method OnBeforeCloseProject (line 215) | public int OnBeforeCloseProject(IVsHierarchy aPHierarchy, int aFRemoved)
    method OnAfterLoadProject (line 224) | public int OnAfterLoadProject(IVsHierarchy aPStubHierarchy, IVsHierarc...
    method OnQueryUnloadProject (line 232) | public int OnQueryUnloadProject(IVsHierarchy aPRealHierarchy, ref int ...
    method OnBeforeUnloadProject (line 239) | public int OnBeforeUnloadProject(IVsHierarchy aPRealHierarchy, IVsHier...
    method OnAfterOpenSolution (line 246) | public int OnAfterOpenSolution(object aPUnkReserved, int aFNewSolution)
    method OnQueryCloseSolution (line 253) | public int OnQueryCloseSolution(object aPUnkReserved, ref int aPfCancel)
    method OnBeforeCloseSolution (line 258) | public int OnBeforeCloseSolution(object aPUnkReserved)
    method OnAfterCloseSolution (line 268) | public int OnAfterCloseSolution(object aPUnkReserved)
    method OnBeforeOpenSolution (line 279) | public int OnBeforeOpenSolution(string pszSolutionFilename)
    method OnBeforeBackgroundSolutionLoadBegins (line 284) | public int OnBeforeBackgroundSolutionLoadBegins()
    method OnQueryBackgroundLoadProjectBatch (line 289) | public int OnQueryBackgroundLoadProjectBatch(out bool pfShouldDelayLoa...
    method OnBeforeLoadProjectBatch (line 295) | public int OnBeforeLoadProjectBatch(bool fIsBackgroundIdleBatch)
    method OnAfterLoadProjectBatch (line 300) | public int OnAfterLoadProjectBatch(bool fIsBackgroundIdleBatch)
    method OnAfterBackgroundSolutionLoadComplete (line 305) | public int OnAfterBackgroundSolutionLoadComplete()
    method OnAfterOpenFolder (line 315) | public void OnAfterOpenFolder(string folderPath)
    method OnBeforeCloseFolder (line 319) | public void OnBeforeCloseFolder(string folderPath)
    method OnQueryCloseFolder (line 323) | public void OnQueryCloseFolder(string folderPath, ref int pfCancel)
    method OnAfterCloseFolder (line 327) | public void OnAfterCloseFolder(string folderPath)
    method OnAfterLoadAllDeferredProjects (line 331) | public void OnAfterLoadAllDeferredProjects()
    method UpdateVersion (line 339) | private void UpdateVersion(string version)
    method ShowToolbar (line 361) | private void ShowToolbar(string version)
    method RegisterVsServicesAsync (line 376) | private async Task RegisterVsServicesAsync()
    method RegisterToEventsAsync (line 404) | private async Task RegisterToEventsAsync()
    method RegisterToCPTEvents (line 416) | private void RegisterToCPTEvents()
    method RegisterToVsEvents (line 453) | private void RegisterToVsEvents()
    method UnregisterFromEvents (line 476) | private void UnregisterFromEvents()
    method UnregisterFromCPTEvents (line 482) | private void UnregisterFromCPTEvents()
    method DeleteTempSolution (line 519) | private void DeleteTempSolution()
    method HideToolWindow (line 528) | private int HideToolWindow()
    method DeleteCacheReporitory (line 537) | private void DeleteCacheReporitory()
    method CreateCacheRepository (line 546) | private void CreateCacheRepository()
    method UnregisterFromVsEvents (line 556) | private void UnregisterFromVsEvents()

FILE: ClangPowerTools/ClangPowerToolsShared/ClangPowerToolsPackageImpl.cs
  class ClangPowerToolsPackageImpl (line 26) | public class ClangPowerToolsPackageImpl : IVsSolutionEvents, IVsSolution...
    method ClangPowerToolsPackageImpl (line 55) | public ClangPowerToolsPackageImpl(AsyncPackage aPackage)
    method InitializeAsync (line 70) | public async Task InitializeAsync()
    method AdviseSolutionEvents (line 136) | private void AdviseSolutionEvents(IVsSolution aVsSolution)
    method UnadviseSolutionEvents (line 148) | private void UnadviseSolutionEvents(IVsSolution aVsSolution)
    method OnAfterOpenProject (line 168) | public int OnAfterOpenProject(IVsHierarchy aPHierarchy, int aFAdded)
    method OnQueryCloseProject (line 174) | public int OnQueryCloseProject(IVsHierarchy aPHierarchy, int aFRemovin...
    method OnBeforeCloseProject (line 183) | public int OnBeforeCloseProject(IVsHierarchy aPHierarchy, int aFRemoved)
    method OnAfterLoadProject (line 191) | public int OnAfterLoadProject(IVsHierarchy aPStubHierarchy, IVsHierarc...
    method OnQueryUnloadProject (line 198) | public int OnQueryUnloadProject(IVsHierarchy aPRealHierarchy, ref int ...
    method OnBeforeUnloadProject (line 205) | public int OnBeforeUnloadProject(IVsHierarchy aPRealHierarchy, IVsHier...
    method OnAfterOpenSolution (line 213) | public int OnAfterOpenSolution(object aPUnkReserved, int aFNewSolution)
    method OnQueryCloseSolution (line 220) | public int OnQueryCloseSolution(object aPUnkReserved, ref int aPfCancel)
    method OnBeforeCloseSolution (line 225) | public int OnBeforeCloseSolution(object aPUnkReserved)
    method OnAfterCloseSolution (line 232) | public int OnAfterCloseSolution(object aPUnkReserved)
    method OnBeforeOpenSolution (line 243) | public int OnBeforeOpenSolution(string pszSolutionFilename)
    method OnBeforeBackgroundSolutionLoadBegins (line 249) | public int OnBeforeBackgroundSolutionLoadBegins()
    method OnQueryBackgroundLoadProjectBatch (line 254) | public int OnQueryBackgroundLoadProjectBatch(out bool pfShouldDelayLoa...
    method OnBeforeLoadProjectBatch (line 260) | public int OnBeforeLoadProjectBatch(bool fIsBackgroundIdleBatch)
    method OnAfterLoadProjectBatch (line 265) | public int OnAfterLoadProjectBatch(bool fIsBackgroundIdleBatch)
    method OnAfterBackgroundSolutionLoadComplete (line 270) | public int OnAfterBackgroundSolutionLoadComplete()
    method OnAfterOpenFolder (line 280) | public void OnAfterOpenFolder(string folderPath)
    method OnBeforeCloseFolder (line 284) | public void OnBeforeCloseFolder(string folderPath)
    method OnQueryCloseFolder (line 288) | public void OnQueryCloseFolder(string folderPath, ref int pfCancel)
    method OnAfterCloseFolder (line 292) | public void OnAfterCloseFolder(string folderPath)
    method OnAfterLoadAllDeferredProjects (line 296) | public void OnAfterLoadAllDeferredProjects()
    method UpdateVersion (line 304) | private void UpdateVersion(string version)
    method ShowToolbar (line 329) | private void ShowToolbar(string version)
    method RegisterVsServicesAsync (line 344) | private async Task RegisterVsServicesAsync()
    method RegisterToEventsAsync (line 372) | private async Task RegisterToEventsAsync()
    method RegisterToCPTEvents (line 379) | private void RegisterToCPTEvents()
    method RegisterToVsEvents (line 420) | private void RegisterToVsEvents()
    method UnregisterFromEvents (line 442) | private void UnregisterFromEvents()
    method UnregisterFromCPTEvents (line 448) | private void UnregisterFromCPTEvents()
    method DeleteTempSolution (line 487) | private void DeleteTempSolution()
    method HideToolWindow (line 500) | private int HideToolWindow()
    method DeleteCacheReporitory (line 517) | private void DeleteCacheReporitory()
    method DeleteFromFindToolWindowHistory (line 526) | private void DeleteFromFindToolWindowHistory()
    method CreateCacheRepository (line 533) | private void CreateCacheRepository()
    method UnregisterFromVsEvents (line 543) | private void UnregisterFromVsEvents()

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/BackgroundTidy/BackgroundTidy.cs
  class BackgroundTidy (line 12) | public class BackgroundTidy : IDisposable
    method BackgroundTidy (line 35) | public BackgroundTidy()
    method Dispose (line 42) | public void Dispose()
    method Run (line 51) | public void Run(Document document, int commandId)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/BackgroundTidy/DataProcessor.cs
  class DataProcessor (line 13) | public class DataProcessor
    method ReceiveData (line 30) | public void ReceiveData(object sender, DataReceivedEventArgs e)
    method ClosedDataConnection (line 41) | public void ClosedDataConnection(object sender, EventArgs e)
    method Process (line 68) | private void Process(string message)
    method GetErrors (line 85) | private void GetErrors(string text, IVsHierarchy hierarchy, out List<T...
    method GetOutput (line 96) | private void GetOutput(ref string aText, string aSearchedSubstring)
    method GetDetectedError (line 103) | private TaskErrorModel GetDetectedError(IVsHierarchy aHierarchy, Match...

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/BackgroundTidy/PowerShellWrapperBackground.cs
  class PowerShellWrapperBackground (line 7) | public class PowerShellWrapperBackground
    method Invoke (line 19) | public void Invoke(string script, RunningProcesses runningProcesses)
    method CreatePathEnvironmentVariable (line 68) | private string CreatePathEnvironmentVariable()
    method GetUsedLlvmVersionPath (line 92) | private static string GetUsedLlvmVersionPath(string llvmVersion)
    method ContainsLlvm (line 98) | private static bool ContainsLlvm(string input)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/BasicCommand.cs
  class BasicCommand (line 6) | public abstract class BasicCommand
    method BasicCommand (line 26) | protected BasicCommand(AsyncPackage aPackage, Guid aGuid, int aId)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/ClangCommand.cs
  class ClangCommand (line 25) | public abstract class ClangCommand : BasicCommand
    method ClangCommand (line 91) | public ClangCommand(AsyncPackage aPackage, Guid aGuid, int aId)
    method CacheProjectsFromItems (line 108) | protected void CacheProjectsFromItems()
    method RunScript (line 128) | protected void RunScript(int aCommandId, bool jsonCompilationDbActive,...
    method CollectItemsDependingOnCommandLocation (line 151) | protected void CollectItemsDependingOnCommandLocation(
    method SetActiveDocumentEvent (line 170) | private void SetActiveDocumentEvent()
    method PrepareCommmandAsync (line 182) | protected async Task PrepareCommmandAsync(CommandUILocation commandUIL...
    method OnActiveFileCheck (line 195) | protected void OnActiveFileCheck(ActiveDocumentEventArgs e)
    method OnFileHierarchyChanged (line 200) | protected void OnFileHierarchyChanged(VsHierarchyDetectedEventArgs e)
    method OnIgnoreItem (line 205) | protected void OnIgnoreItem(ClangCommandMessageEventArgs e)
    method InvokeFindCommand (line 214) | protected void InvokeFindCommand(FindToolWindow findToolWindow)
    method OptimizeIncludes (line 235) | protected void OptimizeIncludes()
    method GenerateDocumentationForProject (line 317) | protected void GenerateDocumentationForProject(int commandId, AsyncPac...
    method DeleteJsonCompilationDB (line 362) | private void DeleteJsonCompilationDB()
    method Compile (line 369) | private void Compile(string runModeParameters, string genericParameter...
    method CreateTemporaryFileForTidy (line 439) | private string CreateTemporaryFileForTidy(IItem item)
    method ExportJsonCompilationDatabase (line 458) | private void ExportJsonCompilationDatabase(string runModeParameters, s...
    method GetProjectName (line 483) | private string GetProjectName()

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/CommandController.cs
  class CommandController (line 29) | public class CommandController
    method CommandController (line 74) | public CommandController(AsyncPackage aAsyncPackage)
    method InitializeCommandsAsync (line 88) | public async Task InitializeCommandsAsync(AsyncPackage aAsyncPackage)
    method Execute (line 178) | public async void Execute(object sender, EventArgs e)
    method GetCurrentCommandId (line 187) | public int GetCurrentCommandId() { return currentCommand; }
    method LaunchCommandAsync (line 189) | public async Task LaunchCommandAsync(int aCommandId,
    method ChooseCommandIdDependingOnTidy (line 414) | private void ChooseCommandIdDependingOnTidy(ref int aCommandId)
    method CreateCommand (line 428) | private OleMenuCommand CreateCommand(object sender)
    method SetCommandLocation (line 444) | private void SetCommandLocation()
    method StopBackgroundRunnersAsync (line 463) | private async Task StopBackgroundRunnersAsync()
    method StopBackgroundRunners (line 468) | private void StopBackgroundRunners() { StopCommand.Instance.StopClangC...
    method OnBeforeClangCommand (line 470) | private void OnBeforeClangCommand(int aCommandId)
    method OnClangCommandBegin (line 481) | private void OnClangCommandBegin(ClearEventArgs e) { ClearErrorListEve...
    method OnAfterClangCommand (line 483) | private void OnAfterClangCommand()
    method OnAfterFormatCommand (line 492) | public void OnAfterFormatCommand(object sender, FormatCommandEventArgs e)
    method OnAfterRunCommand (line 506) | public void OnAfterRunCommand(object sender, CloseDataStreamingEventAr...
    method OnErrorDetected (line 521) | protected void OnErrorDetected(EventArgs e)
    method OnEncodingErrorDetected (line 527) | public void OnEncodingErrorDetected(object sender, HasEncodingErrorEve...
    method DisplayErrorWindow (line 536) | private void DisplayErrorWindow()
    method OnActiveDocumentCheck (line 555) | public void OnActiveDocumentCheck(object sender, ActiveDocumentEventAr...
    method OnClangCommandMessageTransfer (line 563) | private void OnClangCommandMessageTransfer(ClangCommandMessageEventArg...
    method OnFileHierarchyChanged (line 568) | public void OnFileHierarchyChanged(object sender, VsHierarchyDetectedE...
    method DisplayStartedMessage (line 573) | private void DisplayStartedMessage(int aCommandId, bool clearOutput)
    method DisplayNoActiveDocumentMessage (line 582) | private void DisplayNoActiveDocumentMessage(bool clearOutput)
    method DisplayFinishedMessage (line 590) | private void DisplayFinishedMessage(bool clearOutput)
    method DisplayStoppedMessage (line 599) | private void DisplayStoppedMessage(bool clearOutput)
    method DisplayMessage (line 607) | public void DisplayMessage(bool clearOutput = false, string message = "")
    method GetCommandName (line 613) | private string GetCommandName(string aGuid, int aId)
    method OnItemIgnore (line 641) | internal void OnItemIgnore(object sender, ClangCommandMessageEventArgs e)
    method VisibilityOnBeforeCommand (line 646) | public void VisibilityOnBeforeCommand(object sender, EventArgs e)
    method OnBeforeClangCommand (line 672) | public void OnBeforeClangCommand(object sender, EventArgs e)
    method OnMSVCBuildBegin (line 745) | public void OnMSVCBuildBegin(vsBuildScope Scope, vsBuildAction Action)
    method OnMSVCBuildDone (line 755) | public void OnMSVCBuildDone(vsBuildScope Scope, vsBuildAction Action)
    method OnMSVCBuildSucceededAsync (line 761) | private async Task OnMSVCBuildSucceededAsync()
    method HideFindToolWindow (line 785) | private int HideFindToolWindow()
    method HideTidyToolWindow (line 796) | private int HideTidyToolWindow()
    method OnBeforeSave (line 807) | public void OnBeforeSave(object sender, Document aDocument)
    method BeforeSaveClangTidyAsync (line 815) | private async Task BeforeSaveClangTidyAsync(Document document)
    method BeforeSaveClangFormat (line 842) | private void BeforeSaveClangFormat(Document aDocument)
    method CommandEventsBeforeExecute (line 862) | public void CommandEventsBeforeExecute(string aGuid,
    method BeforeExecuteClangCompile (line 872) | private void BeforeExecuteClangCompile(string aGuid, int aId)
    method BeforeExecuteClangTidy (line 884) | private void BeforeExecuteClangTidy(string aGuid, int aId)
    method OnWindowActivated (line 892) | public void OnWindowActivated(Window GotFocus, Window LostFocus)
    method IsAToolbarCommand (line 951) | private bool IsAToolbarCommand(OleMenuCommand command)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/CommandControllerInstance.cs
  class CommandControllerInstance (line 3) | public class CommandControllerInstance

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/CommandIds.cs
  class CommandIds (line 5) | public class CommandIds

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/CommandUILocation.cs
  type CommandUILocation (line 3) | public enum CommandUILocation

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/CompileCommand.cs
  class CompileCommand (line 12) | public class CompileCommand : ClangCommand
    method CompileCommand (line 36) | protected CompileCommand(OleMenuCommandService aCommandService, Comman...
    method InitializeAsync (line 59) | public static async Task InitializeAsync(CommandController aCommandCon...
    method RunClangCompileAsync (line 71) | public async Task RunClangCompileAsync(int aCommandId, CommandUILocati...

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/DocumentationHtmlCommand.cs
  class DocumentationHtmlCommand (line 18) | public sealed class DocumentationHtmlCommand : ClangCommand
    method DocumentationHtmlCommand (line 28) | protected DocumentationHtmlCommand(OleMenuCommandService aCommandServi...
    method InitializeAsync (line 45) | public static async Task InitializeAsync(CommandController aCommandCon...
    method GenerateDocumentationAsync (line 56) | public async Task GenerateDocumentationAsync(int commandId)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/DocumentationMdCommand.cs
  class DocumentationMdCommand (line 17) | public sealed class DocumentationMdCommand : ClangCommand
    method DocumentationMdCommand (line 27) | private DocumentationMdCommand(OleMenuCommandService aCommandService, ...
    method InitializeAsync (line 45) | public static async Task InitializeAsync(CommandController aCommandCon...
    method GenerateDocumentationAsync (line 56) | public async Task GenerateDocumentationAsync(int commandId)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/DocumentationYamlCommand.cs
  class DocumentationYamlCommand (line 16) | public sealed class DocumentationYamlCommand : ClangCommand
    method DocumentationYamlCommand (line 31) | private DocumentationYamlCommand(OleMenuCommandService aCommandService...
    method InitializeAsync (line 49) | public static async Task InitializeAsync(CommandController aCommandCon...
    method GenerateDocumentationAsync (line 61) | public async Task GenerateDocumentationAsync(int commandId)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/FindCommand.cs
  class FindCommand (line 15) | public class FindCommand : ClangCommand
    method FindCommand (line 30) | protected FindCommand(OleMenuCommandService aCommandService, CommandCo...
    method InitializeAsync (line 53) | public static async Task InitializeAsync(CommandController aCommandCon...
    method FindAsync (line 64) | public async Task FindAsync(CommandUILocation commandUILocation)
    method RunQueryAsync (line 83) | public async Task RunQueryAsync()

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/FindCommandIds.cs
  class FindCommandIds (line 6) | public static class FindCommandIds

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/FindViewMenuCommand.cs
  class FindViewMenuCommand (line 12) | public class FindViewMenuCommand : ClangCommand
    method FindViewMenuCommand (line 21) | protected FindViewMenuCommand(OleMenuCommandService aCommandService, C...
    method InitializeAsync (line 40) | public static async Task InitializeAsync(CommandController aCommandCon...
    method FindAsync (line 51) | public async Task FindAsync(CommandUILocation commandUILocation)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/FormatCommand.cs
  class FormatCommand (line 24) | public sealed class FormatCommand : ClangCommand
    method FormatCommand (line 58) | private FormatCommand(OleMenuCommandService aCommandService, CommandCo...
    method InitializeAsync (line 82) | public static async Task InitializeAsync(CommandController aCommandCon...
    method RunClangFormat (line 93) | public void RunClangFormat(CommandUILocation commandUILocation)
    method FormatActiveDocument (line 110) | private void FormatActiveDocument()
    method FormatOnSave (line 116) | public void FormatOnSave(Document document)
    method RunFormatProcess (line 123) | public string RunFormatProcess(string dirPath, string filePath, string...
    method ExecuteFormatCommand (line 148) | private void ExecuteFormatCommand()
    method ValidExecution (line 188) | private bool ValidExecution(out IWpfTextView view)
    method OnFormatFile (line 259) | private void OnFormatFile(FormatCommandEventArgs e)
    method IsFileStyleSelected (line 264) | private bool IsFileStyleSelected(FormatSettingsModel formatSettings)
    method FileHasExtension (line 270) | private bool FileHasExtension(string filePath, string fileExtensions)
    method FormatAllSelectedDocuments (line 278) | private void FormatAllSelectedDocuments()
    method FormatEndOfFile (line 317) | private string FormatEndOfFile(IWpfTextView aView, string aFilePath, o...
    method FindStartPositionAndLengthOfSelectedText (line 334) | private void FindStartPositionAndLengthOfSelectedText(IWpfTextView aVi...
    method CreateProcess (line 346) | private Process CreateProcess(string aText, int aOffset, int aLength, ...
    method ApplyClangFormat (line 380) | private void ApplyClangFormat(string replacements, IWpfTextView view)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/IgnoreCommand.cs
  class IgnoreCommand (line 9) | public class IgnoreCommand : BasicCommand
    method IgnoreCommand (line 13) | public IgnoreCommand(AsyncPackage aPackage, Guid aGuid, int aId) : bas...
    method AddItemsToIgnore (line 28) | public void AddItemsToIgnore<T>(List<string> itemsToIgnore, T settings...
    method RemoveDuplicateDocuments (line 50) | private List<string> RemoveDuplicateDocuments(List<string> documentsTo...

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/IgnoreCompileCommand.cs
  class IgnoreCompileCommand (line 13) | public sealed class IgnoreCompileCommand : IgnoreCommand
    method IgnoreCompileCommand (line 34) | private IgnoreCompileCommand(CommandController aCommandController, Ole...
    method InitializeAsync (line 54) | public static async Task InitializeAsync(CommandController aCommandCon...
    method RunIgnoreCompileCommand (line 72) | public void RunIgnoreCompileCommand()

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/IgnoreFormatCommand.cs
  class IgnoreFormatCommand (line 12) | public sealed class IgnoreFormatCommand : IgnoreCommand
    method IgnoreFormatCommand (line 34) | private IgnoreFormatCommand(CommandController aCommandController, OleM...
    method InitializeAsync (line 55) | public static async Task InitializeAsync(CommandController aCommandCon...
    method RunIgnoreFormatCommand (line 73) | public void RunIgnoreFormatCommand()

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/JsonCompilationDatabaseCommand.cs
  class JsonCompilationDatabaseCommand (line 14) | internal sealed class JsonCompilationDatabaseCommand : CompileCommand
    method JsonCompilationDatabaseCommand (line 38) | private JsonCompilationDatabaseCommand(OleMenuCommandService aCommandS...
    method InitializeAsync (line 50) | public static new async Task InitializeAsync(CommandController aComman...
    method ExportAsync (line 69) | public async Task ExportAsync(CommandUILocation aCommandUILocation, bo...
    method OpenInFileExplorer (line 76) | internal void OpenInFileExplorer(object sender, JsonFilePathArgs e)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/LookInMenu.cs
  type LookInMenu (line 3) | public enum LookInMenu
  class MenuItem (line 10) | public class MenuItem
    method MenuItem (line 12) | public MenuItem() { }
    method MenuItem (line 13) | public MenuItem(string name, LookInMenu lookInMenu)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/Models/CacheProjectsItemsModel.cs
  class CacheProjectsItemsModel (line 11) | public class CacheProjectsItemsModel

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/OptimizeIncludesCommand.cs
  class OptimizeIncludesCommand (line 13) | public class OptimizeIncludesCommand : ClangCommand
    method OptimizeIncludesCommand (line 31) | protected OptimizeIncludesCommand(OleMenuCommandService aCommandServic...
    method InitializeAsync (line 51) | public static async Task InitializeAsync(CommandController aCommandCon...
    method RunOptimizeIncludes (line 62) | public async Task RunOptimizeIncludes(CommandUILocation commandUILocat...

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/RunController.cs
  class RunController (line 9) | public static class RunController
    method OnDataStreamClose (line 16) | public static void OnDataStreamClose(CloseDataStreamingEventArgs e)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/SettingsCommand.cs
  class SettingsCommand (line 17) | public sealed class SettingsCommand : BasicCommand
    method SettingsCommand (line 40) | private SettingsCommand(CommandController aCommandController, OleMenuC...
    method InitializeAsync (line 61) | public static async Task InitializeAsync(CommandController aCommandCon...
    method ShowSettingsAsync (line 72) | public async Task ShowSettingsAsync()

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/StopCommand.cs
  class StopCommand (line 18) | public sealed class StopCommand : ClangCommand
    method StopCommand (line 49) | private StopCommand(OleMenuCommandService aCommandService, CommandCont...
    method InitializeAsync (line 73) | public static async Task InitializeAsync(CommandController aCommandCon...
    method RunStopClangCommandAsync (line 85) | public Task RunStopClangCommandAsync(bool backgroundRunners)
    method StopClangCommand (line 94) | public void StopClangCommand(bool backgroundRunners)

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/TidyCommand.cs
  class TidyCommand (line 21) | public sealed class TidyCommand : ClangCommand
    method TidyCommand (line 47) | private TidyCommand(OleMenuCommandService aCommandService, CommandCont...
    method InitializeAsync (line 71) | public static async Task InitializeAsync(CommandController aCommandCon...
    method ShowTidyToolWindowEmptyAsync (line 84) | public async Task ShowTidyToolWindowEmptyAsync()
    method ShowTidyToolWindowAsync (line 100) | public async Task ShowTidyToolWindowAsync(List<string> paths = null)
    method RunClangTidyAsync (line 113) | public async Task RunClangTidyAsync(int aCommandId, CommandUILocation ...

FILE: ClangPowerTools/ClangPowerToolsShared/Commands/VsCommands.cs
  class VsCommands (line 5) | public static class VsCommands

FILE: ClangPowerTools/ClangPowerToolsShared/Convertors/BooleanToGridLengthConverter.cs
  class BooleanToGridLengthConverter (line 8) | public class BooleanToGridLengthConverter : IValueConverter
    method Convert (line 10) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 19) | public object ConvertBack(object value, Type targetType, object parame...

FILE: ClangPowerTools/ClangPowerToolsShared/Convertors/BooleanToVisibilityConverter.cs
  class BooleanToVisibilityConverter (line 8) | public class BooleanToVisibilityConverter : IValueConverter
    method GetVisibility (line 10) | private object GetVisibility(object value)
    method Convert (line 22) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 27) | public object ConvertBack(object value, Type targetType, object parame...

FILE: ClangPowerTools/ClangPowerToolsShared/Convertors/ClangFormatFallbackStyleConverter.cs
  class ClangFormatFallbackStyleConverter (line 8) | public class ClangFormatFallbackStyleConverter : IValueConverter
    method Convert (line 21) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 27) | public object ConvertBack(object value, Type targetType, object parame...

FILE: ClangPowerTools/ClangPowerToolsShared/Convertors/ClangFormatStyleConverter.cs
  class ClangFormatStyleConverter (line 8) | public class ClangFormatStyleConverter : IValueConverter
    method Convert (line 21) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 27) | public object ConvertBack(object value, Type targetType, object parame...

FILE: ClangPowerTools/ClangPowerToolsShared/Convertors/ClangGeneralAdditionalIncludesConvertor.cs
  class ClangGeneralAdditionalIncludesConvertor (line 8) | public class ClangGeneralAdditionalIncludesConvertor : IValueConverter
    method ToString (line 30) | public static string ToString(ClangGeneralAdditionalIncludes? aAdditio...
    method FromString (line 33) | public static ClangGeneralAdditionalIncludes? FromString(string aAddit...
    method Convert (line 36) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 42) | public object ConvertBack(object value, Type targetType, object parame...

FILE: ClangPowerTools/ClangPowerToolsShared/Convertors/ClangTidyHeaderFiltersConvertor.cs
  class ClangTidyHeaderFiltersConvertor (line 8) | public class ClangTidyHeaderFiltersConvertor : IValueConverter
    method ScriptEncode (line 30) | public static string ScriptEncode(string aHeaderFilters)
    method ScriptDecode (line 38) | public static string ScriptDecode(string aHeaderFilters)
    method Convert (line 48) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 53) | public object ConvertBack(object value, Type targetType, object parame...

FILE: ClangPowerTools/ClangPowerToolsShared/Convertors/ClangTidyUseChecksFromConvertor.cs
  class ClangTidyUseChecksFromConvertor (line 8) | public class ClangTidyUseChecksFromConvertor : IValueConverter
    method ToString (line 33) | public static string ToString(ClangTidyUseChecksFrom? aChecksFrom)
    method FromString (line 36) | public static ClangTidyUseChecksFrom? FromString(string aChecksFrom)
    method Convert (line 44) | public object Convert(object value, Type targetType, object parameter,...
    method ConvertBack (line 50) | public object ConvertBack(object value, Type targetType, object parame...

FILE: ClangPowerTools/ClangPowerToolsShared/Error/ErrorDetector.cs
  class ErrorDetector (line 8) | public class ErrorDetector : IDetector
    method Detect (line 14) | public bool Detect(string text, string pattern, out Match matchResult)
    method HasEncodingError (line 27) | public bool HasEncodingError(string message)

FILE: ClangPowerTools/ClangPowerToolsShared/Error/ErrorFormatter.cs
  class ErrorFormatter (line 6) | class ErrorFormatter : ITextFormatter
    method Format (line 11) | public string Format(string aText, string aReplacement)

FILE: ClangPowerTools/ClangPowerToolsShared/Error/ErrorParserConstants.cs
  class ErrorParserConstants (line 3) | public class ErrorParserConstants

FILE: ClangPowerTools/ClangPowerToolsShared/Error/ErrorWindowController.cs
  class ErrorWindowController (line 14) | public class ErrorWindowController : ErrorListProvider
    method ErrorWindowController (line 22) | public ErrorWindowController(IServiceProvider aIServiceProvider) : bas...
    method OnErrorDetected (line 28) | public void OnErrorDetected(object sender, ErrorDetectedEventArgs e)
    method RemoveErrors (line 51) | public void RemoveErrors(IVsHierarchy aHierarchy)
    method Clear (line 77) | public void Clear()
    method OnClangCommandBegin (line 85) | public void OnClangCommandBegin(object sender, ClearEventArgs e)
    method OnBuildBegin (line 92) | public void OnBuildBegin(vsBuildScope Scope, vsBuildAction Action)
    method ErrorTaskNavigate (line 101) | private void ErrorTaskNavigate(object sender, EventArgs e)

FILE: ClangPowerTools/ClangPowerToolsShared/Error/TaskErrorModel.cs
  class TaskErrorModel (line 5) | public class TaskErrorModel : ErrorTask
    method Equals (line 16) | public override bool Equals(object obj)
    method GetHashCode (line 25) | public override int GetHashCode()

FILE: ClangPowerTools/ClangPowerToolsShared/Error/TaskErrorModelBuilder.cs
  class TaskErrorModelBuilder (line 9) | public class TaskErrorModelBuilder : IBuilder<TaskErrorModel>
    method TaskErrorModelBuilder (line 23) | public TaskErrorModelBuilder(IVsHierarchy aHierarchy, Match aMatchResult)
    method GetResult (line 35) | public TaskErrorModel GetResult() => mError;
    method Build (line 38) | public void Build()
    method BuildMatch (line 79) | private void BuildMatch()
    method FindErrorCategory (line 119) | private TaskErrorCategory FindErrorCategory(ref string aCategoryAsString)
    method CreateFullErrorMessage (line 144) | private string CreateFullErrorMessage(string aPath, int aLine, string ...

FILE: ClangPowerTools/ClangPowerToolsShared/Error/TaskErrorViewModel.cs
  class TaskErrorViewModel (line 5) | public static class TaskErrorViewModel

FILE: ClangPowerTools/ClangPowerToolsShared/Events/ActiveDocumentEventArgs.cs
  class ActiveDocumentEventArgs (line 3) | public class ActiveDocumentEventArgs
    method ActiveDocumentEventArgs (line 7) | public ActiveDocumentEventArgs(bool isActiveDocument)

FILE: ClangPowerTools/ClangPowerToolsShared/Events/BoolEventArgs.cs
  class BoolEventArgs (line 5) | public class BoolEventArgs : EventArgs
    method BoolEventArgs (line 9) | public BoolEventArgs(bool value) => Value = value;

FILE: ClangPowerTools/ClangPowerToolsShared/Events/ClangCommandEventArgs.cs
  class ClangCommandMessageEventArgs (line 5) | public class ClangCommandMessageEventArgs : EventArgs
    method ClangCommandMessageEventArgs (line 11) | public ClangCommandMessageEventArgs(string aMessage, bool aClear)

FILE: ClangPowerTools/ClangPowerToolsShared/Events/CleanErrorListEventArgs.cs
  class ClearEventArgs (line 5) | public class ClearEventArgs : EventArgs
    method ClearEventArgs (line 7) | public ClearEventArgs() { }

FILE: ClangPowerTools/ClangPowerToolsShared/Events/CloseDataConnectionEventArgs.cs
  class CloseDataConnectionEventArgs (line 3) | public class CloseDataConnectionEventArgs
    method CloseDataConnectionEventArgs (line 5) | public CloseDataConnectionEventArgs() { }

FILE: ClangPowerTools/ClangPowerToolsShared/Events/CloseDataStreamingEventArgs.cs
  class CloseDataStreamingEventArgs (line 3) | public class CloseDataStreamingEventArgs
    method CloseDataStreamingEventArgs (line 7) | public CloseDataStreamingEventArgs(bool isStopped)

FILE: ClangPowerTools/ClangPowerToolsShared/Events/ErrorDetectedEventArgs.cs
  class ErrorDetectedEventArgs (line 5) | public class ErrorDetectedEventArgs
    method ErrorDetectedEventArgs (line 9) | public ErrorDetectedEventArgs(IEnumerable<TaskErrorModel> aErrorList)

FILE: ClangPowerTools/ClangPowerToolsShared/Events/FormatCommandEventArgs.cs
  class FormatCommandEventArgs (line 5) | public class FormatCommandEventArgs : EventArgs

FILE: ClangPowerTools/ClangPowerToolsShared/Events/HasEncodingErrorEventArgs.cs
  class HasEncodingErrorEventArgs (line 5) | public class HasEncodingErrorEventArgs
    method HasEncodingErrorEventArgs (line 9) | public HasEncodingErrorEventArgs(OutputContentModel model)

FILE: ClangPowerTools/ClangPowerToolsShared/Events/JsonFilePathArgs.cs
  class JsonFilePathArgs (line 3) | public class JsonFilePathArgs
    method JsonFilePathArgs (line 7) | public JsonFilePathArgs(string path)

FILE: ClangPowerTools/ClangPowerToolsShared/Events/VsHierarchyDetectedEventArgs.cs
  class VsHierarchyDetectedEventArgs (line 5) | public class VsHierarchyDetectedEventArgs
    method VsHierarchyDetectedEventArgs (line 10) | public VsHierarchyDetectedEventArgs(IVsHierarchy aHierarchy)

FILE: ClangPowerTools/ClangPowerToolsShared/Export Config/TidyConfigFile.cs
  class TidyConfigFile (line 8) | public class TidyConfigFile
    method TidyConfigFile (line 18) | public TidyConfigFile()
    method CreateOutput (line 41) | public StringBuilder CreateOutput()
    method CreateChecksOutputLine (line 72) | private void CreateChecksOutputLine(string paramaterName)
    method CreateLine (line 94) | private string CreateLine<T>(string propertyName, int nameLength, T va...
    method CreateOutputLine (line 103) | private void CreateOutputLine<T>(string paramaterName, T formatStyle, ...
    method CreateWarningAsErrorsOutputLine (line 108) | private void CreateWarningAsErrorsOutputLine(string paramaterName, str...
    method CreateChecksOutputLine (line 120) | private void CreateChecksOutputLine(string paramaterName, string custo...
    method CreateHeaderFilterOutputLine (line 132) | private void CreateHeaderFilterOutputLine(string paramaterName, string...

FILE: ClangPowerTools/ClangPowerToolsShared/Extensions/IntExtension.cs
  class IntExtension (line 3) | public static class IntExtension
    method ForceInRange (line 5) | public static int ForceInRange(this int number, int min, int max)
    method RoundUp (line 16) | public static int RoundUp(this int number)

FILE: ClangPowerTools/ClangPowerToolsShared/Extensions/ObjectExtension.cs
  class ObjectExtension (line 5) | public static class ObjectExtension
    method Clone (line 7) | public static T Clone<T>(this T obj)

FILE: ClangPowerTools/ClangPowerToolsShared/Extensions/StringExtension.cs
  class StringExtension (line 7) | public static class StringExtension
    method SubstringAfter (line 11) | public static string SubstringAfter(this string aText, string aSearche...
    method SubstringBefore (line 25) | public static string SubstringBefore(this string aText, string aSearch...
    method Contains (line 46) | public static bool Contains(this string paragrah, string word, StringC...
    method AllIndexesOf (line 58) | public static IEnumerable<int> AllIndexesOf(this string str, string va...
    method Reverse (line 71) | public static string Reverse(this string input)
    method TrimEnd (line 79) | public static string TrimEnd(this string input, string substring)

FILE: ClangPowerTools/ClangPowerToolsShared/Extensions/TaskExtensions.cs
  class TaskExtensions (line 9) | public static class TaskExtensions
    method SafeFireAndForget (line 19) | public static async void SafeFireAndForget(this Task task, bool contin...

FILE: ClangPowerTools/ClangPowerToolsShared/Files Operations/FileChangerWatcher.cs
  class FileChangerWatcher (line 7) | public class FileChangerWatcher : IDisposable
    method Run (line 26) | public void Run(string aDirectoryPath)
    method Dispose (line 39) | public void Dispose()
    method CreateFileWatcher (line 54) | private FileSystemWatcher CreateFileWatcher(string aDirectoryPath, str...

FILE: ClangPowerTools/ClangPowerToolsShared/Files Operations/FileOpener.cs
  class FileOpener (line 5) | public class FileOpener
    method Open (line 16) | public static void Open(object source, FileSystemEventArgs e)

FILE: ClangPowerTools/ClangPowerToolsShared/Files Operations/FilePathCollector.cs
  class FilePathCollector (line 7) | public class FilePathCollector
    method Collect (line 11) | public IEnumerable<string> Collect(IEnumerable<IItem> aItems)
    method Collect (line 15) | public IEnumerable<string> Collect(Documents aDocuments)
    method Collect (line 19) | public string Collect(Document aDocument) => aDocument.FullName;

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/ActiveWindowProperties.cs
  class ActiveWindowProperties (line 7) | public static class ActiveWindowProperties
    method GetProjectItemOfActiveWindow (line 11) | public static ProjectItem GetProjectItemOfActiveWindow()

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/ApiUtility.cs
  class ApiUtility (line 6) | public static class ApiUtility
    method InitializeApiClient (line 10) | public static void InitializeApiClient()

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/AutomationUtil.cs
  class AutomationUtil (line 8) | public class AutomationUtil
    method GetAllProjects (line 13) | public static List<IItem> GetAllProjects(Solution aSolution)
    method GetProjectHierarchy (line 32) | public static IVsHierarchy GetProjectHierarchy(IVsSolution aSolution, ...
    method GetItemHierarchy (line 39) | public static IVsHierarchy GetItemHierarchy(IVsSolution aSolution, IIt...
    method SaveDirtyProjects (line 58) | public static void SaveDirtyProjects(Solution aSolution)
    method ContainLoadedItems (line 75) | public static bool ContainLoadedItems(IEnumerable<IItem> aItems)
    method GetSolutionFolderProjects (line 98) | private static List<IItem> GetSolutionFolderProjects(Project aSolution...
    method IsLoadedProject (line 116) | private static bool IsLoadedProject(Project aProject)

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/ClangTidyCleaner.cs
  class ClangTidyCleaner (line 6) | public class ClangTidyCleaner
    method Remove (line 18) | public void Remove(string directoryPath)
    method Remove (line 50) | public void Remove(List<string> mDirectoriesPath)

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/DocumentHandler.cs
  class DocumentHandler (line 10) | public class DocumentHandler
    method GetActiveDocuments (line 18) | public static Documents GetActiveDocuments()
    method GetListOfActiveDocuments (line 27) | public static List<Document> GetListOfActiveDocuments()
    method GetActiveDocument (line 41) | public static Document GetActiveDocument()
    method GetSelectedItems (line 50) | public static SelectedItems GetSelectedItems()
    method SaveActiveDocuments (line 60) | public static void SaveActiveDocuments()
    method IsOpen (line 78) | public static bool IsOpen(Document aSearchedDocument, List<Document> a...
    method FocusActiveDocument (line 84) | public static void FocusActiveDocument()

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/FileSystem.cs
  class FileSystem (line 9) | public static class FileSystem
    method SearchAllTopDirectories (line 25) | public static bool SearchAllTopDirectories(string filePath, IEnumerabl...
    method CreateDirectory (line 46) | public static void CreateDirectory(string path)
    method DeleteDirectory (line 51) | public static void DeleteDirectory(string path)
    method DeleteFile (line 66) | public static void DeleteFile(string path)
    method DoesFileExist (line 81) | public static bool DoesFileExist(string path, string fileName)
    method WriteContentToFile (line 87) | public static void WriteContentToFile(string path, string content)
    method ReadContentFromFile (line 94) | public static string ReadContentFromFile(string path)
    method ReadContentFromFile (line 103) | public static string ReadContentFromFile(string path, string wantedLin...
    method ReadContentFromMultipleFiles (line 119) | public static List<string> ReadContentFromMultipleFiles(List<string> f...
    method CreateFullFileName (line 135) | public static string CreateFullFileName(string path, string fileName)
    method MoveFile (line 140) | public static void MoveFile(string sourceFileName, string destFileName)

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/FormatEditorUtility.cs
  class FormatEditorUtility (line 9) | public static class FormatEditorUtility
    method OpenBrowser (line 13) | public static void OpenBrowser()
    method FrameworkInstalled (line 25) | public static bool FrameworkInstalled()

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/GenerateDocumentation.cs
  class GenerateDocumentation (line 14) | public static class GenerateDocumentation
    method FindOutputFolderName (line 31) | public static string FindOutputFolderName(string outputPath)
    method DisplayInfoMessage (line 57) | public static void DisplayInfoMessage(string outputPath)
    method ClosedDataConnection (line 63) | public static void ClosedDataConnection(object sender, EventArgs e)
    method OpenInFileExplorer (line 73) | public static void OpenInFileExplorer(string path)

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/JoinUtility.cs
  class JoinUtility (line 6) | public static class JoinUtility
    method Join (line 8) | public static string Join(string separator, params string[] text)
    method AddMatcherKeyword (line 14) | public static string AddMatcherKeyword(string matcher)

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/LaunchCompilationDbProgrammatically.cs
  class LaunchCompilationDbProgrammatically (line 11) | internal class LaunchCompilationDbProgrammatically
    method FromFindToolWindowAsync (line 21) | public async Task FromFindToolWindowAsync()
    method FromGenerateDocumentationAsync (line 56) | public async Task FromGenerateDocumentationAsync()
    method FromOptimizeIncludesAsync (line 62) | public async Task FromOptimizeIncludesAsync()

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/ManageEncoding.cs
  class ManageEncoding (line 6) | public class ManageEncoding
    method ChangeEncodingFromBomToUtf8 (line 9) | public static void ChangeEncodingFromBomToUtf8(string inputFile, strin...

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/NetworkUtility.cs
  class NetworkUtility (line 7) | public class NetworkUtility
    method CheckInternetConnectionAsync (line 9) | public static async Task<bool> CheckInternetConnectionAsync()

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/PCHCleaner.cs
  class PCHCleaner (line 5) | public class PCHCleaner
    method Remove (line 19) | public void Remove(string aFolderPath)

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/PackageUtility.cs
  class PackageUtility (line 8) | public class PackageUtility
    method GetVersion (line 10) | public static string GetVersion()

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/ProjectConfigurationHandler.cs
  class ProjectConfigurationHandler (line 5) | public class ProjectConfigurationHandler
    method GetPlatform (line 9) | public static string GetPlatform(Project aProject)
    method GetConfiguration (line 18) | public static string GetConfiguration(Project aProject)
    method GetActiveConfiguration (line 31) | private static bool GetActiveConfiguration(Project aProject, out Confi...

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/PropertyHandler.cs
  class PropertyHandler (line 6) | public static class PropertyHandler
    method Get (line 16) | public static object Get<T>(object obj, string propertyName) => typeof...
    method Set (line 24) | public static void Set(object obj, string propertyName, object value)

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/RegistryUtility.cs
  class RegistryUtility (line 5) | public class RegistryUtility
    method RegistryUtility (line 15) | public RegistryUtility(string registryName) => this.registryName = reg...
    method ReadLocalMachineKey (line 22) | public string ReadLocalMachineKey(string keyName)
    method ReadCurrentUserKey (line 37) | public string ReadCurrentUserKey(string keyName)
    method WriteCurrentUserKey (line 52) | public bool WriteCurrentUserKey(string keyName, string keyValue)
    method Exists (line 66) | public bool Exists() => Microsoft.Win32.Registry.CurrentUser.OpenSubKe...
    method DeleteCurrentUserKey (line 68) | public bool DeleteCurrentUserKey(string keyName)

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/RunningDocTableEvents.cs
  class RunningDocTableEvents (line 14) | public class RunningDocTableEvents : IVsRunningDocTableEvents3
    method RunningDocTableEvents (line 30) | public RunningDocTableEvents(Package aPackage)
    method OnAfterAttributeChange (line 47) | public int OnAfterAttributeChange(uint docCookie, uint grfAttribs)
    method OnAfterAttributeChangeEx (line 52) | public int OnAfterAttributeChangeEx(uint docCookie, uint grfAttribs, I...
    method OnAfterDocumentWindowHide (line 57) | public int OnAfterDocumentWindowHide(uint docCookie, IVsWindowFrame pF...
    method OnAfterFirstDocumentLock (line 62) | public int OnAfterFirstDocumentLock(uint docCookie, uint dwRDTLockType...
    method OnAfterSave (line 67) | public int OnAfterSave(uint docCookie)
    method OnBeforeDocumentWindowShow (line 72) | public int OnBeforeDocumentWindowShow(uint docCookie, int fFirstShow, ...
    method OnBeforeLastDocumentUnlock (line 89) | public int OnBeforeLastDocumentUnlock(uint docCookie, uint dwRDTLockTy...
    method OnBeforeSave (line 94) | public int OnBeforeSave(uint docCookie)
    method FindDocument (line 123) | private Document FindDocument(uint docCookie)

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/ScriptGenerator.cs
  class ScriptGenerator (line 10) | public static class ScriptGenerator
    method GetRunModeParamaters (line 14) | public static string GetRunModeParamaters()
    method GetGenericParamaters (line 22) | public static string GetGenericParamaters(int aCommandId, string vsEdi...
    method GetItemRelatedParametersCustomPaths (line 30) | public static string GetItemRelatedParametersCustomPaths(List<string> ...
    method GetProjectRelatedParameters (line 45) | public static string GetProjectRelatedParameters(CacheProjectsItemsMod...
    method JoinPathsToStringScript (line 55) | public static string JoinPathsToStringScript(List<string> paths)
    method GetItemRelatedParameters (line 66) | public static string GetItemRelatedParameters(IItem item, bool jsonCom...
    method GetItemRelatedParameters (line 74) | public static string GetItemRelatedParameters(List<IItem> items, bool ...

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/SettingsApi.cs
  class SettingsApi (line 11) | public class SettingsApi
    method SettingsApi (line 15) | public SettingsApi()
    method UploadSettingsAsync (line 24) | public async Task UploadSettingsAsync()
    method DownloadSettingsAsync (line 33) | public async Task DownloadSettingsAsync()
    method CloudSaveExistsAsync (line 46) | public async Task<bool> CloudSaveExistsAsync()
    method GetUserProfileJsonAsync (line 59) | public async Task<string> GetUserProfileJsonAsync()
    method GetLicenseDetailsJsonAsync (line 68) | public async Task<string> GetLicenseDetailsJsonAsync()
    method PostSettingsAsync (line 81) | private async Task<HttpResponseMessage> PostSettingsAsync(string setti...
    method GetSettingsAsync (line 89) | private async Task<HttpResponseMessage> GetSettingsAsync()
    method GetUserProfileDetailsAsync (line 96) | private async Task<HttpResponseMessage> GetUserProfileDetailsAsync()
    method GetLicenseDetailsAsync (line 103) | private async Task<HttpResponseMessage> GetLicenseDetailsAsync()
    method SetAuthenticationHeader (line 110) | private static void SetAuthenticationHeader()

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/SettingsPathBuilder.cs
  class SettingsPathBuilder (line 6) | public class SettingsPathBuilder
    method GetPath (line 19) | public string GetPath(string aFileName) => Path.Combine(GetFolderPath(...
    method GetLlvmPath (line 21) | public string GetLlvmPath(string version)
    method GetLlvmBinPath (line 28) | public string GetLlvmBinPath(string version)
    method GetCurrentExecutableLlvmPath (line 34) | public string GetCurrentExecutableLlvmPath()
    method GetLlvmExecutablePath (line 47) | public string GetLlvmExecutablePath(string version, string executableN...
    method GetAssemblyLocalPath (line 54) | public string GetAssemblyLocalPath()
    method GetFolderPath (line 63) | private string GetFolderPath()

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/SolutionInfo.cs
  class SolutionInfo (line 10) | public static class SolutionInfo
    method GetSolutionInfo (line 29) | public static int GetSolutionInfo(out string dir, out string file, out...
    method IsSolutionOpen (line 39) | public static bool IsSolutionOpen()
    method IsOpenFolderModeActive (line 51) | public static bool IsOpenFolderModeActive()
    method ContainsCppProject (line 60) | public static bool ContainsCppProject()
    method AnyCppProject (line 73) | public static bool AnyCppProject(Solution solution)
    method IsCppProject (line 85) | public static bool IsCppProject(Project project)
    method AreContextMenuCommandsEnabled (line 90) | public static bool AreContextMenuCommandsEnabled()
    method AreToolbarCommandsEnabled (line 122) | public static bool AreToolbarCommandsEnabled()
    method ActiveDocumentValidation (line 138) | public static bool ActiveDocumentValidation()

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/StatusBarHandler.cs
  class StatusBarHandler (line 9) | public class StatusBarHandler
    method Text (line 14) | public static void Text(string aText, int aFreezeStatusBar)
    method Animation (line 43) | public static void Animation(vsStatusAnimation aAnimation, int aEnable...
    method Status (line 62) | public static void Status(string aText, int aFreezeStatusBar, vsStatus...

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/UIUpdater.cs
  class UIUpdater (line 7) | public class UIUpdater
    method BeginInvoke (line 11) | public static void BeginInvoke(Action aAction)
    method InvokeAsync (line 16) | public async static Task InvokeAsync(Action aAction)

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/VsWindowController.cs
  class VsWindowController (line 8) | public static class VsWindowController
    method SetPreviousActiveWindow (line 26) | public static void SetPreviousActiveWindow(Window previousWindow) => P...
    method Activate (line 32) | public static void Activate(Window window)

FILE: ClangPowerTools/ClangPowerToolsShared/Helpers/Vsix.cs
  class Vsix (line 13) | public class Vsix
    method GetCurrentView (line 18) | public static IWpfTextView GetCurrentView()
    method IsDocumentDirty (line 30) | public static bool IsDocumentDirty(Document document)
    method GetDocumentView (line 37) | public static IWpfTextView GetDocumentView(Document document)
    method VsToWpfTextView (line 43) | public static IWpfTextView VsToWpfTextView(IVsTextView textView)
    method GetVsTextViewFrompPath (line 54) | public static IVsTextView GetVsTextViewFrompPath(string filePath)
    method GetTextDocument (line 72) | public static ITextDocument GetTextDocument(IWpfTextView view)
    method GetDocumentParent (line 80) | public static string GetDocumentParent(IWpfTextView view)
    method GetDocumentPath (line 90) | public static string GetDocumentPath(IWpfTextView view)

FILE: ClangPowerTools/ClangPowerToolsShared/IgnoreActions/IgnoreItem.cs
  class IgnoreItem (line 11) | public class IgnoreItem
    method Check (line 76) | public bool Check(IItem checkedItem, List<string> paths = null)
    method Check (line 104) | public bool Check(Document checkedItem)

FILE: ClangPowerTools/ClangPowerToolsShared/Items/CurrentDocument.cs
  class CurrentDocument (line 5) | public class CurrentDocument : IItem
    method CurrentDocument (line 15) | public CurrentDocument(Document aDocument) => mDocument = aDocument;
    method GetName (line 21) | public string GetName() => mDocument.Name;
    method GetObject (line 23) | public object GetObject() => mDocument.Object();
    method GetPath (line 25) | public string GetPath() => mDocument.FullName;
    method Save (line 27) | public void Save() => mDocument.Save();

FILE: ClangPowerTools/ClangPowerToolsShared/Items/CurrentProject.cs
  class CurrentProject (line 5) | public class CurrentProject : IItem
    method CurrentProject (line 15) | public CurrentProject(Project aProject) => mProject = aProject;
    method GetName (line 21) | public string GetName() => mProject.FullName.Substring(mProject.FullNa...
    method GetPath (line 23) | public string GetPath() => mProject.FullName;
    method GetObject (line 25) | public object GetObject() => mProject;
    method Save (line 27) | public void Save() => mProject.Save(mProject.FullName);

FILE: ClangPowerTools/ClangPowerToolsShared/Items/CurrentProjectItem.cs
  class CurrentProjectItem (line 5) | public class CurrentProjectItem : IItem
    method CurrentProjectItem (line 15) | public CurrentProjectItem(ProjectItem aProjectItem) => mProjectItem = ...
    method GetName (line 21) | public string GetName() => mProjectItem.Name;
    method GetPath (line 23) | public string GetPath() => mProjectItem.Properties.Item("FullPath").Va...
    method GetObject (line 25) | public object GetObject() => mProjectItem;
    method Save (line 27) | public void Save() => mProjectItem.Save("");

FILE: ClangPowerTools/ClangPowerToolsShared/Items/CurrentSolution.cs
  class CurrentSolution (line 5) | class CurrentSolution : IItem
    method CurrentSolution (line 16) | public CurrentSolution(Solution solution) => this.solution = solution;
    method CurrentSolution (line 18) | public CurrentSolution(Solution solution, string savePath)
    method GetName (line 26) | public string GetName() => solution.FileName;
    method GetObject (line 28) | public object GetObject() => solution;
    method GetPath (line 30) | public string GetPath() => solution.FullName;
    method Save (line 32) | public void Save() => solution.SaveAs(saveAsPath);

FILE: ClangPowerTools/ClangPowerToolsShared/Items/IItem.cs
  type IItem (line 3) | public interface IItem
    method GetName (line 5) | string GetName();
    method GetPath (line 7) | string GetPath();
    method GetObject (line 9) | object GetObject();
    method Save (line 11) | void Save();

FILE: ClangPowerTools/ClangPowerToolsShared/Items/ItemsCollector.cs
  class ItemsCollector (line 15) | public class ItemsCollector
    method ItemsCollector (line 27) | public ItemsCollector(bool jsonCompilationActive = false)
    method SetItem (line 45) | public void SetItem(Document document)
    method CollectActiveProjectItem (line 58) | public List<IItem> CollectActiveProjectItem(bool saveInItems = true)
    method GetFilesToIgnore (line 110) | public List<string> GetFilesToIgnore()
    method GetProjectsToIgnore (line 119) | public List<string> GetProjectsToIgnore()
    method GetDocumentsToEncode (line 139) | public List<string> GetDocumentsToEncode()
    method SolutionOrProjectIsSelected (line 147) | public bool SolutionOrProjectIsSelected()
    method CollectCustomItemsByPath (line 171) | public void CollectCustomItemsByPath(List<string> customPath)
    method CollectProjectItems (line 183) | public void CollectProjectItems()
    method CollectSelectedItems (line 211) | public void CollectSelectedItems()
    method CollectSelectedProjectItems (line 242) | public void CollectSelectedProjectItems()
    method CollectCurrentProjectItems (line 266) | public void CollectCurrentProjectItems()
    method AddProjectItem (line 292) | public void AddProjectItem(ProjectItem aItem)
    method GetProjectsFromSolution (line 310) | private void GetProjectsFromSolution(Solution aSolution)
    method GetResultProjectsFromSolution (line 315) | private List<IItem> GetResultProjectsFromSolution(Solution aSolution)
    method AddProject (line 320) | private void AddProject(Project aProject) => Items.Add(new CurrentProj...
    method GetProjectItem (line 323) | private void GetProjectItem(ProjectItem aProjectItem)
    method GetProjectItem (line 345) | private void GetProjectItem(Project aProject)
    method GetProjectItem (line 357) | private void GetProjectItem(Solution aSolution)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/AutoCompleteHistory/ASTMatchers.cs
  class ASTMatchers (line 7) | public static class ASTMatchers

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/AutoCompleteHistory/AutoCompleteBehavior.cs
  class AutoCompleteBehavior (line 11) | public static class AutoCompleteBehavior
    method GetAutoCompleteItemsSource (line 56) | public static IEnumerable<AutoCompleteHistoryModel> GetAutoCompleteIte...
    method SetAutoCompleteItemsSource (line 65) | public static void SetAutoCompleteItemsSource(DependencyObject obj, IE...
    method OnAutoCompleteItemsSource (line 70) | private static void OnAutoCompleteItemsSource(object sender, Dependenc...
    method GetAutoCompleteStringComparison (line 90) | public static StringComparison GetAutoCompleteStringComparison(Depende...
    method SetAutoCompleteStringComparison (line 95) | public static void SetAutoCompleteStringComparison(DependencyObject ob...
    method GetAutoCompleteIndicator (line 102) | public static String GetAutoCompleteIndicator(DependencyObject obj)
    method SetAutoCompleteIndicator (line 107) | public static void SetAutoCompleteIndicator(DependencyObject obj, Stri...
    method OnPreviewKeyDown (line 118) | static void OnPreviewKeyDown(object sender, KeyEventArgs e)
    method OnTextChanged (line 148) | static void OnTextChanged(object sender, TextChangedEventArgs e)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/CollectionElementsCounter.cs
  class CollectionElementsCounter (line 11) | public static class CollectionElementsCounter
    method Initialize (line 44) | public static void Initialize(IEnumerable<TidyCheckModel> collection)
    method Add (line 59) | public static void Add()
    method Remove (line 72) | public static void Remove()
    method IsEmpty (line 86) | public static bool IsEmpty() => length == 0;

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Command/RelayCommand.cs
  class RelayCommand (line 10) | public class RelayCommand : ICommand
    method RelayCommand (line 21) | public RelayCommand(Action action, Func<bool> canExecute = null)
    method CanExecute (line 26) | public bool CanExecute(object parameter)
    method Execute (line 30) | public void Execute(object parameter)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Commands/FileCommand.cs
  class FileCommand (line 14) | public static class FileCommand
    method GetShortPathName (line 16) | [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
    method GetShortPath (line 19) | public static string GetShortPath(string longPath)
    method TidyFixDiff (line 26) | public static void TidyFixDiff(FileModel filePath, bool makeDiff = true)
    method CopyFileFromTempToSolution (line 54) | public static void CopyFileFromTempToSolution(FileModel file)
    method CopyFileFromSolutionToTemp (line 74) | public static void CopyFileFromSolutionToTemp(FileModel file)
    method Copy (line 88) | public static void Copy(string source, string destination)
    method CopyFilesInTempSolution (line 99) | public static void CopyFilesInTempSolution(List<FileModel> files)
    method DiffFilesUsingDefaultTool (line 107) | public static void DiffFilesUsingDefaultTool(string file1, string file2)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Commands/RelayCommand.cs
  class RelayCommand (line 6) | public class RelayCommand : ICommand
    method RelayCommand (line 13) | public RelayCommand(Action action, Func<bool> canExecute = null)
    method CanExecute (line 29) | public bool CanExecute(object parameter)
    method Execute (line 34) | public void Execute(object parameter)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Commands/TidyDiffCommand.cs
  class TidyDiffCommand (line 11) | public static class TidyDiffCommand
    method TidyFixDiff (line 13) | public static void TidyFixDiff(string filePath, bool makeDiff = true)
    method CopyFileInTemp (line 41) | public static void CopyFileInTemp(string filePath)
    method CopyFilesInTemp (line 48) | public static void CopyFilesInTemp(List<string> filePaths)
    method DiffFilesUsingDefaultTool (line 58) | public static void DiffFilesUsingDefaultTool(string file1, string file2)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Commands/VSThemeCommand.cs
  class VSThemeCommand (line 7) | public static class VSThemeCommand
    method GetCurrentVsTheme (line 13) | public static VsThemes GetCurrentVsTheme()
    method GetDiscardFixIconEnabled (line 25) | public static string GetDiscardFixIconEnabled()
    method GetTidyFixIconEnabled (line 36) | public static string GetTidyFixIconEnabled()
    method GetRefreshTidyIconEnabled (line 47) | public static string GetRefreshTidyIconEnabled()
    method GetUnpinIcon (line 59) | public static string GetUnpinIcon()
    method GetPinIcon (line 70) | public static string GetPinIcon()
    method GetIgnoreIconEnabled (line 81) | public static string GetIgnoreIconEnabled()
    method GetDiffIconEnabled (line 92) | public static string GetDiffIconEnabled()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/CommonSettingsFunctionality.cs
  class CommonSettingsFunctionality (line 11) | public abstract class CommonSettingsFunctionality
    method OpenFile (line 15) | protected string OpenFile(string fileName, string defaultExt, string f...
    method OpenFiles (line 34) | protected string[] OpenFiles(string fileName, string defaultExt, strin...
    method BrowseForFolderFiles (line 56) | protected string[] BrowseForFolderFiles(string searchFilePattern, Sear...
    method BrowseForFolderFiles (line 74) | protected string BrowseForFolderFiles()
    method SaveFile (line 85) | protected string SaveFile(string fileName, string defaultExt, string f...
    method WriteContentToFile (line 106) | protected void WriteContentToFile(string path, string content)
    method OpenContentDialog (line 111) | protected string OpenContentDialog(string content, bool showFilesPicke...
    method CreateInput (line 120) | private string CreateInput(List<InputDataModel> models)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/CPPKeywords.cs
  class CPPKeywords (line 5) | public static class CPPKeywords

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/ComboBoxConstants.cs
  type ClangFormatStyle (line 10) | [Serializable]
  type ClangFormatFallbackStyle (line 30) | [Serializable]
  type ClangGeneralAdditionalIncludes (line 50) | [Serializable]
  type ClangTidyUseChecksFrom (line 63) | [Serializable]
  type ToggleValues (line 80) | [Serializable]
  class ComboBoxConstants (line 91) | public sealed class ComboBoxConstants

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/EncodingConstants.cs
  class EncodingConstants (line 3) | public static class EncodingConstants

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/FormatEditorConstants.cs
  class FormatEditorConstants (line 6) | public static class FormatEditorConstants

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/IconResourceConstants.cs
  class IconResourceConstants (line 5) | public static class IconResourceConstants

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/LLVMVersionsAlternate.cs
  class LlvmVersionsAlternate (line 5) | public static class LlvmVersionsAlternate

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/LlvmConstants.cs
  class LlvmConstants (line 3) | public static class LlvmConstants

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/LlvmVersions.cs
  class LlvmVersions (line 5) | public static class LlvmVersions

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/MatchConstants.cs
  class MatchConstants (line 9) | public static class MatchConstants

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/PathConstants.cs
  class PathConstants (line 10) | public static class PathConstants

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/PsUpdaterConstants.cs
  class PsUpdaterConstants (line 5) | public static class PsUpdaterConstants

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/ResourceConstants.cs
  class ResourceConstants (line 3) | public static class ResourceConstants

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/ThemeConstants.cs
  type VsThemes (line 3) | public enum VsThemes

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/TidyConstants.cs
  class TidyConstants (line 6) | public static class TidyConstants

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/UIElementsConstants.cs
  class UIElementsConstants (line 3) | public static class UIElementsConstants

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/AccountController.cs
  class AccountController (line 11) | public class AccountController
    method LoginAsync (line 15) | public async Task<bool> LoginAsync(UserModel userModel)
    method GetUserAccountHttpRestulAsync (line 46) | private async Task<HttpResponseMessage> GetUserAccountHttpRestulAsync(...
    method SaveToken (line 52) | private void SaveToken(string token)
    method DeleteExistingToken (line 63) | private void DeleteExistingToken(string filePath)
    method SeralizeUserModel (line 71) | private string SeralizeUserModel(UserModel userModel)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/FindController.cs
  class FindController (line 14) | public class FindController : INotifyPropertyChanged
    method FindController (line 51) | public FindController()
    method LaunchCommand (line 56) | public void LaunchCommand()
    method RunPowershellQuery (line 91) | public void RunPowershellQuery()
    method DisplayMessageAfterFind (line 116) | private void DisplayMessageAfterFind()
    method DisplayMessageBeforeFind (line 121) | private void DisplayMessageBeforeFind()
    method BeforeCommand (line 131) | protected void BeforeCommand()
    method AfterCommand (line 137) | protected void AfterCommand()
    method GetPathToClangQuery (line 143) | private void GetPathToClangQuery()
    class FileCompilationDB (line 152) | private class FileCompilationDB
    method GetCommandForPowershell (line 157) | private Dictionary<string, string> GetCommandForPowershell(string path...
    method CheckFileNameActiveInteractiveMode (line 179) | private void CheckFileNameActiveInteractiveMode(string aFileName)
    method GetCommandForPowershellInteractiveMode (line 196) | private Dictionary<string, string> GetCommandForPowershellInteractiveM...

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/FormatEditorController.cs
  class FormatEditorController (line 10) | public class FormatEditorController
    method FormatEditorController (line 22) | public FormatEditorController()
    method OpenEditor (line 32) | public void OpenEditor()
    method InstallClangFormatEditorSilent (line 48) | public void InstallClangFormatEditorSilent()
    method CreateEditorDirectory (line 69) | private static void CreateEditorDirectory()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/FreeTrialController.cs
  class FreeTrialController (line 6) | public class FreeTrialController
    method FreeTrialController (line 21) | public FreeTrialController() => registryUtility = new RegistryUtility(...
    method Start (line 27) | public bool Start() => registryUtility.WriteCurrentUserKey(keyName, Da...
    method MarkAsExpired (line 29) | public bool MarkAsExpired() => registryUtility.WriteCurrentUserKey(key...
    method GetStartTime (line 31) | public string GetStartTime()
    method GetExpirationDateAsString (line 39) | public string GetExpirationDateAsString()
    method IsActive (line 54) | public bool IsActive()
    method WasEverInTrial (line 66) | public bool WasEverInTrial() => registryUtility.Exists() &&

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/LicenseController.cs
  class LicenseController (line 6) | public class LicenseController
    method GetUserLicenseTypeAsync (line 11) | public async Task<LicenseType> GetUserLicenseTypeAsync()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/LlvmController.cs
  class LlvmController (line 14) | public class LlvmController : IDownload, IInstall
    method LlvmController (line 45) | public LlvmController()
    method GetLlvmPathFromRegistry (line 54) | public string GetLlvmPathFromRegistry()
    method GetVersionFromRegistry (line 64) | public string GetVersionFromRegistry()
    method Download (line 74) | public void Download(string version, DownloadProgressChangedEventHandl...
    method Install (line 105) | public void Install(string version)
    method Uninstall (line 134) | public void Uninstall(string version)
    method IsVersionExeOnDisk (line 163) | public bool IsVersionExeOnDisk(string version, string name)
    method DownloadCompleted (line 169) | public void DownloadCompleted(object sender, AsyncCompletedEventArgs e)
    method InstallFinishedState (line 185) | private void InstallFinishedState()
    method InstallingState (line 191) | private void InstallingState()
    method DefaultState (line 197) | private void DefaultState()
    method DownloadCanceled (line 204) | private void DownloadCanceled()
    method BeginInstallation (line 214) | private void BeginInstallation()
    method ResetDownloadProgressState (line 221) | private void ResetDownloadProgressState()
    method InstallProcessExited (line 228) | private void InstallProcessExited(object sender, EventArgs e)
    method UninstallProcessExited (line 235) | private void UninstallProcessExited(object sender, EventArgs e)
    method WindowClosed (line 242) | private void WindowClosed(object sender, EventArgs e)
    method CreateVersionDirectory (line 251) | private void CreateVersionDirectory(string version)
    method DeleteLlvmDirectory (line 257) | private void DeleteLlvmDirectory(string version)
    method DeleteInstallerFile (line 263) | private void DeleteInstallerFile(string version)
    method DoesUninstallExist (line 270) | private bool DoesUninstallExist(string version)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/LookInMenuController.cs
  class LookInMenuController (line 5) | public static class LookInMenuController
    method SetSelectedOption (line 9) | public static void SetSelectedOption(MenuItem menuItem)
    method GetSelectedMenuItem (line 14) | public static MenuItem GetSelectedMenuItem()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/TidyToolWindowController.cs
  class TidyToolWindowController (line 20) | public class TidyToolWindowController
    method InitTidyToolWindow (line 37) | public void InitTidyToolWindow(List<string> filesPath)
    method AddHeadersInFilesList (line 48) | public void AddHeadersInFilesList(List<string> filesPath)
    method AddFilesInFilesList (line 88) | public void AddFilesInFilesList(List<string> filesPath)
    method GetExtension (line 114) | private string GetExtension(string path)
    method FixAllFilesAsync (line 126) | public async Task FixAllFilesAsync(FileModel file = null)
    method UpdateCheckedNumber (line 161) | public void UpdateCheckedNumber(FileModel file)
    method UpdateTidyToolWindowCheckBox (line 181) | public void UpdateTidyToolWindowCheckBox()
    method DiffBetweenCopyAndCurrent (line 193) | public void DiffBetweenCopyAndCurrent(FileModel file)
    method CheckOrUncheckAll (line 199) | public void CheckOrUncheckAll()
    method BeforeCommand (line 214) | public void BeforeCommand()
    method AfterCommand (line 226) | public void AfterCommand()
    method MarkFixedFiles (line 240) | public void MarkFixedFiles(List<FileModel> fixedFiles)
    method DiscardFile (line 257) | public void DiscardFile(FileModel file)
    method RemoveFiles (line 274) | public void RemoveFiles(FileModel customFile = null)
    method TidyFilesAsync (line 308) | public async Task TidyFilesAsync(List<string> paths = null)
    method MarkUnfixedFiles (line 324) | public void MarkUnfixedFiles(List<FileModel> checkedFiles)
    method CheckIsHeader (line 336) | private bool CheckIsHeader(string fullFilePath)
    method CheckAll (line 345) | private void CheckAll()
    method UncheckAll (line 356) | private void UncheckAll()
    method MarkUnfixedFiles (line 367) | private void MarkUnfixedFiles(FileModel file)
    method UnifyFileModelLists (line 377) | private List<FileModel> UnifyFileModelLists(List<FileModel> firstList,...
    method RefreshValues (line 394) | private void RefreshValues()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/FindToolWindowHandler.cs
  class FindToolWindowHandler (line 12) | public class FindToolWindowHandler
    method FindToolWindowHandler (line 18) | public FindToolWindowHandler()
    method Initialize (line 24) | public void Initialize()
    method SaveMatchersHistoryData (line 33) | public void SaveMatchersHistoryData()
    method SerializeHistoryData (line 38) | private void SerializeHistoryData(List<AutoCompleteHistoryViewModel> m...
    method ReadFile (line 49) | private string ReadFile(string path)
    method LoadFindToolWindowData (line 55) | public void LoadFindToolWindowData()
    method LoadFindToolWindowData (line 65) | public void LoadFindToolWindowData(string path)
    method DeserializeMatchersHistory (line 75) | private void DeserializeMatchersHistory(string json)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Interfaces/IAccountValidator.cs
  type IAccountValidator (line 3) | interface IAccountValidator: ILicense

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Interfaces/IDownload.cs
  type IDownload (line 6) | public interface IDownload
    method Download (line 8) | void Download(string uri, DownloadProgressChangedEventHandler method);
    method DownloadCompleted (line 10) | void DownloadCompleted(object sender, AsyncCompletedEventArgs e);

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Interfaces/IInstall.cs
  type IInstall (line 5) | public interface IInstall
    method Install (line 7) | void Install(string path);
    method Uninstall (line 9) | void Uninstall(string path);

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Interfaces/ILicense.cs
  type ILicense (line 8) | public interface ILicense
    method ValidateAsync (line 14) | Task<bool> ValidateAsync();

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Interfaces/IView.cs
  type IView (line 3) | interface IView
    method ResetView (line 5) | public void ResetView();

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Interfaces/IViewMatche.cs
  type IViewMatcher (line 3) | public interface IViewMatcher
    method Hide (line 9) | void Hide();
    method Show (line 10) | void Show();

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/LicenseValidation/CommercialLicenseValidator.cs
  class CommercialLicenseValidator (line 14) | public class CommercialLicenseValidator : PersonalLicenseValidator
    method ValidateAsync (line 22) | public new async Task<bool> ValidateAsync()
    method VerifyLicense (line 53) | private bool VerifyLicense(List<LicenseModel> licenses)
    method CheckExpirationDate (line 63) | private bool CheckExpirationDate(string expirationDate)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/LicenseValidation/LicenseType.cs
  type LicenseType (line 8) | [Serializable]

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/LicenseValidation/LocalLicenseValidator.cs
  class LocalLicenseValidator (line 6) | public class LocalLicenseValidator : ILicense
    method ValidateAsync (line 14) | public Task<bool> ValidateAsync()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/LicenseValidation/PersonalLicenseValidator.cs
  class PersonalLicenseValidator (line 11) | public class PersonalLicenseValidator : ILicense
    method ValidateAsync (line 13) | public async Task<bool> ValidateAsync()
    method CheckUserAccountAsync (line 36) | protected async Task<KeyValuePair<bool, HttpResponseMessage>> CheckUse...

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/LicenseValidation/Token.cs
  class Token (line 5) | public class Token
    method GetTokenPath (line 22) | private string GetTokenPath()
    method GetToken (line 35) | public bool GetToken(out string jwt)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/LlvmUri.cs
  class LlvmUri (line 6) | public class LlvmUri
    method GetDefaultUri (line 8) | public string GetDefaultUri(string version)
    method GetGitHubUri (line 13) | public string GetGitHubUri(string version)
    method GetOperatingSystemParamaters (line 17) | private string GetOperatingSystemParamaters()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/AccountApiModel.cs
  class AccountApiModel (line 3) | public class AccountApiModel

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/AccountModel.cs
  class AccountModel (line 5) | public class AccountModel

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/CompilerSettingsModel.cs
  class CompilerSettingsModel (line 6) | public class CompilerSettingsModel : INotifyPropertyChanged

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/FileModel.cs
  class FileModel (line 9) | public class FileModel : INotifyPropertyChanged
    method FileModel (line 24) | public FileModel()
    method FileModel (line 35) | public FileModel(FileModel file)
    method ChangeIconsTheme (line 176) | public void ChangeIconsTheme()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/FormatSettingsModel.cs
  class FormatSettingsModel (line 3) | public class FormatSettingsModel

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/GeneralSettingsModel.cs
  class GeneralSettingsModel (line 3) | public class GeneralSettingsModel

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/InputDataModel.cs
  class InputDataModel (line 5) | public class InputDataModel : INotifyPropertyChanged
    method InputDataModel (line 16) | public InputDataModel(string input)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/LicenseModel.cs
  class LicenseModel (line 3) | public class LicenseModel

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/LlvmModel.cs
  class LlvmModel (line 5) | public class LlvmModel : INotifyPropertyChanged

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/LlvmSettingsModel.cs
  class LlvmSettingsModel (line 9) | public class LlvmSettingsModel

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/MessageModel.cs
  class MessageModel (line 6) | public class MessageModel

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/SelectedFileModel.cs
  class SelectedFileModel (line 5) | public class SelectedFileModel
    method SelectedFileModel (line 16) | public SelectedFileModel(string path, string pathToShow)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/TidyCheckModel.cs
  class TidyCheckModel (line 6) | public class TidyCheckModel : INotifyPropertyChanged

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/TidySettingsModel.cs
  class TidySettingsModel (line 3) | public class TidySettingsModel

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/ToggleModel.cs
  class ToggleModel (line 3) | public class ToggleModel
    method ToggleModel (line 14) | public ToggleModel(string name, ToggleValues value)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/TokenModel.cs
  class TokenModel (line 3) | public class TokenModel

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/ToolWindowModels/AutoCompleteHistoryModel.cs
  class AutoCompleteHistoryModel (line 11) | public class AutoCompleteHistoryModel : INotifyPropertyChanged
    method AutoCompleteHistoryModel (line 64) | public AutoCompleteHistoryModel(bool isHistory = false)
    method Pin (line 69) | public bool Pin()
    method AutoCompleteHistoryModel (line 85) | public AutoCompleteHistoryModel(AutoCompleteHistoryViewModel autoCompl...
    method UpdateVisibility (line 95) | private void UpdateVisibility(bool isHistory)
    method SetIcon (line 104) | private void SetIcon(bool value)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/ToolWindowModels/ComponentVisibility.cs
  class ComponentVisibility (line 6) | public class ComponentVisibility : INotifyPropertyChanged
    method ComponentVisibility (line 12) | public ComponentVisibility()
    method Hide (line 22) | public void Hide()
    method Show (line 27) | public void Show()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/ToolWindowModels/CountStateFilesModel.cs
  class CountFilesModel (line 10) | public class CountFilesModel : INotifyPropertyChanged
    method UpdateTotalChecked (line 110) | public void UpdateTotalChecked(ObservableCollection<FileModel> files)
    method CheckFileUpdate (line 118) | public void CheckFileUpdate(FileModel file)
    method UnCheckFileUpdate (line 147) | public void UnCheckFileUpdate(FileModel file)
    method UpdateToUncheckAll (line 176) | public void UpdateToUncheckAll()
    method UpdateFixFileState (line 190) | public void UpdateFixFileState(FileModel file)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/ToolWindowModels/CustomMatchesModel.cs
  class CustomMatchesModel (line 11) | public class CustomMatchesModel : ComponentVisibility, IViewMatcher
    method CustomMatchesModel (line 16) | public CustomMatchesModel() { }

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/ToolWindowModels/DefaultArgsModel.cs
  class DefaultArgsModel (line 8) | public class DefaultArgsModel : ComponentVisibility, IViewMatcher
    method DefaultArgsModel (line 15) | public DefaultArgsModel() { }

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/ToolWindowModels/FileType.cs
  type FileType (line 7) | public enum FileType

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/ToolWindowModels/FindControllerModel.cs
  class FindControllerModel (line 7) | public class FindControllerModel
    method FindControllerModel (line 16) | public FindControllerModel()
    method HidePreviousSelectedModel (line 30) | protected void HidePreviousSelectedModel()
    method ShowSelectedModel (line 35) | protected void ShowSelectedModel(IViewMatcher viewMatcher)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/ToolWindowModels/FindToolWindowModel.cs
  class FindToolWindowModel (line 9) | public class FindToolWindowModel : FindControllerModel, INotifyPropertyC...
    method FindToolWindowModel (line 16) | public FindToolWindowModel()
    method UpdateUiToSelectedModel (line 22) | public void UpdateUiToSelectedModel(IViewMatcher viewMatcher)
    method ShowProgressBar (line 75) | private void ShowProgressBar()
    method HideProgressBar (line 81) | private void HideProgressBar()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/ToolWindowModels/IconModel.cs
  class IconModel (line 9) | public class IconModel : INotifyPropertyChanged
    method IconModel (line 22) | public IconModel()
    method IconModel (line 27) | public IconModel(string iconPath, string visibility, bool isEnabled, s...

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/ToolWindowModels/TidyToolWindowModel.cs
  class TidyToolWindowModel (line 7) | public class TidyToolWindowModel : INotifyPropertyChanged
    method TidyToolWindowModel (line 23) | public TidyToolWindowModel()
    method ChangeIconsTheme (line 219) | public void ChangeIconsTheme()
    method UpdateIconsOnPropertyChange (line 236) | private void UpdateIconsOnPropertyChange(object sender, System.EventAr...

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Models/UserModel.cs
  class UserModel (line 5) | public class UserModel : IDisposable
    method UserModel (line 15) | public UserModel(string email, string password)
    method UserModel (line 21) | public UserModel() { }
    method Dispose (line 23) | public void Dispose()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/OldSettings/ClangFormatPathValue.cs
  class ClangFormatPathValue (line 3) | public class ClangFormatPathValue

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/OldSettings/ClangTidyPathValue.cs
  class ClangTidyPathValue (line 3) | public class ClangTidyPathValue

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/OldSettings/HeaderFiltersValue.cs
  class HeaderFiltersValue (line 3) | public class HeaderFiltersValue
    method HeaderFiltersValue (line 14) | public HeaderFiltersValue(string aValue)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/OldSettings/OldModels/ClangFormatOptions.cs
  class ClangFormatOptions (line 5) | [Serializable]

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/OldSettings/OldModels/ClangOptions.cs
  class ClangOptions (line 3) | public class ClangOptions

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/OldSettings/OldModels/ClangTidyOptions.cs
  class ClangTidyOptions (line 6) | [Serializable]

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/OldSettings/OldModels/DefaultOptions.cs
  class DefaultOptions (line 3) | public class DefaultOptions

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/PreinstalledLlvm.cs
  class PreinstalledLlvm (line 8) | public class PreinstalledLlvm
    method PreinstalledLlvm (line 19) | public PreinstalledLlvm(List<LlvmModel> llvms, ObservableCollection<st...
    method SetPreinstalledLlvm (line 27) | public void SetPreinstalledLlvm(string path = null, string version = n...
    method IsVersionInstalled (line 44) | private bool IsVersionInstalled(string version)
    method SetPathAndVersion (line 56) | private void SetPathAndVersion(string path, string version)
    method GetPathAndVersion (line 85) | private void GetPathAndVersion(out string path, out string version)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Provider/FindToolWindowProvider.cs
  class FindToolWindowProvider (line 10) | public class FindToolWindowProvider
    method AddAutoCompleteHistory (line 19) | public static void AddAutoCompleteHistory(AutoCompleteHistoryViewModel...
    method RemoveFromFullList (line 26) | public static void RemoveFromFullList()
    method UpdateFavoriteValue (line 35) | public static void UpdateFavoriteValue(AutoCompleteHistoryModel autoCo...
    method CheckRememberFavoritIsMax (line 44) | public static bool CheckRememberFavoritIsMax(AutoCompleteHistoryModel ...
    method UpdateAutoCompleteList (line 50) | public static void UpdateAutoCompleteList(List<AutoCompleteHistoryView...
    method FindToolWindowProvider (line 57) | static FindToolWindowProvider() { }
    method FindToolWindowProvider (line 58) | private FindToolWindowProvider() { }

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Provider/SettingsProvider.cs
  class SettingsProvider (line 6) | public class SettingsProvider
    method SettingsProvider (line 38) | static SettingsProvider()
    method SettingsProvider (line 42) | private SettingsProvider()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/SettingsHandler.cs
  class SettingsHandler (line 16) | public class SettingsHandler
    method SettingsHandler (line 32) | public SettingsHandler()
    method InitializeSettings (line 43) | public void InitializeSettings()
    method InitializeAccountSettingsAsync (line 59) | public async Task InitializeAccountSettingsAsync()
    method SaveSettings (line 91) | public void SaveSettings(string path)
    method SaveSettings (line 100) | public void SaveSettings()
    method LoadSettings (line 114) | public void LoadSettings(string path)
    method LoadSettings (line 127) | public void LoadSettings()
    method SettingsFileExists (line 141) | public bool SettingsFileExists()
    method ResetSettings (line 147) | public void ResetSettings()
    method GetSettingsAsJson (line 153) | public string GetSettingsAsJson()
    method LoadCloudSettings (line 159) | public void LoadCloudSettings(string json)
    method LicenseInfoUpdateAsync (line 166) | public async Task LicenseInfoUpdateAsync()
    method UserProfileInfoUpdateAsync (line 183) | public async Task UserProfileInfoUpdateAsync()
    method GetTrialLicenseExpirationDate (line 191) | public string GetTrialLicenseExpirationDate()
    method CreateDeaultSettings (line 204) | private void CreateDeaultSettings()
    method SetDefaultTidyPredefindedChecks (line 214) | private void SetDefaultTidyPredefindedChecks()
    method ImportOldSettings (line 226) | private void ImportOldSettings()
    method OldGeneralSettingsExists (line 233) | private bool OldGeneralSettingsExists()
    method MapOldSettings (line 239) | private void MapOldSettings()
    method LoadOldSettingsFromFile (line 251) | private T LoadOldSettingsFromFile<T>(T settings, string settingsFileNa...
    method DeleteOldSettings (line 262) | private void DeleteOldSettings()
    method CreateModelsList (line 271) | private List<object> CreateModelsList()
    method SerializeSettings (line 284) | private void SerializeSettings(List<object> models, string path)
    method SerializeSettings (line 294) | private void SerializeSettings(object models, string path)
    method DeserializeSettings (line 317) | private void DeserializeSettings(string json)
    method ReadSettingsFile (line 345) | private string ReadSettingsFile(string path)
    method SetSettingsModels (line 351) | private void SetSettingsModels(CompilerSettingsModel compilerModel, Fo...
    method GetSettingsFilePath (line 361) | private string GetSettingsFilePath(string path, string fileName)
    method SerializeSettings (line 366) | private void SerializeSettings<T>(string path, ref T config) where T :...
    method MapClangOptionsToSettings (line 372) | private void MapClangOptionsToSettings(ClangOptions clangOptions)
    method MapClangFormatOptionsToSettings (line 390) | private void MapClangFormatOptionsToSettings(ClangFormatOptions clangF...
    method MapClangTidyOptionsToSettings (line 406) | private void MapClangTidyOptionsToSettings(ClangTidyOptions clangTidy)
    method LoadLocalAccountSettings (line 424) | private AccountModel LoadLocalAccountSettings()
    method LoadServerAccountSettingsAsync (line 440) | private async Task<AccountModel> LoadServerAccountSettingsAsync()
    method GetUserProfileAsync (line 465) | private async Task<AccountApiModel> GetUserProfileAsync()
    method GetLicenseInfoAsync (line 478) | private async Task<KeyValuePair<LicenseType, string>> GetLicenseInfoAs...
    method DeserializeUserAccountDetails (line 495) | private AccountApiModel DeserializeUserAccountDetails(string json)
    method DeserializeLicenseDetails (line 501) | private LicenseModel DeserializeLicenseDetails(string json)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/SettingsTooltips.cs
  class SettingsTooltips (line 3) | public class SettingsTooltips

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/TextManipulation.cs
  class TextManipulation (line 11) | public class TextManipulation
    method HighlightKeywords (line 13) | public static void HighlightKeywords(TextPointer startPointer, TextPoi...
    method ReplaceAllTextInFlowDocument (line 35) | public static void ReplaceAllTextInFlowDocument(FlowDocument document,...
    method ChangeTextColor (line 41) | private static void ChangeTextColor(HashSet<string> keywords, Brush fo...
    method CheckForSpaceAfterKeyword (line 54) | private static bool CheckForSpaceAfterKeyword(string text, string keyw...
    method CreateSelection (line 66) | private static TextRange CreateSelection(TextPointer position, int key...

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/TidyChecks.cs
  class TidyChecks (line 4) | public class TidyChecks {

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/TidyChecksDefault.cs
  class TidyChecksDefault (line 5) | public static class TidyChecksDefault

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/AboutSettingsViewModel.cs
  class AboutSettingsViewModel (line 10) | public class AboutSettingsViewModel : CommonSettingsFunctionality
    method AboutSettingsViewModel (line 28) | public AboutSettingsViewModel()
    method ExportSettings (line 87) | private void ExportSettings()
    method ImportSettings (line 98) | private void ImportSettings()
    method ResetSettings (line 109) | private void ResetSettings()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/AutoCompleteHistoryViewModel.cs
  class AutoCompleteHistoryViewModel (line 5) | public class AutoCompleteHistoryViewModel

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/CompilerSettingsViewModel.cs
  class CompilerSettingsViewModel (line 14) | public class CompilerSettingsViewModel : CommonSettingsFunctionality, IN...
    method CompilerSettingsViewModel (line 33) | public CompilerSettingsViewModel()
    method UpdateCompileFlags (line 112) | private void UpdateCompileFlags()
    method UpdateFilesToIgnore (line 118) | private void UpdateFilesToIgnore()
    method UpdateProjectsToIgnore (line 124) | private void UpdateProjectsToIgnore()
    method AddCptAlias (line 130) | private void AddCptAlias()
    method UpdateScripts (line 147) | private void UpdateScripts()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/DetectedStyleInfoViewModel.cs
  class DetectedStyleInfoViewModel (line 6) | public class DetectedStyleInfoViewModel : INotifyPropertyChanged
    method DetectedStyleInfoViewModel (line 17) | public DetectedStyleInfoViewModel(string styleInfo)
    method OnPropertyChanged (line 38) | private void OnPropertyChanged(string propertyName)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/EncodingErrorViewModel.cs
  class EncodingErrorViewModel (line 16) | class EncodingErrorViewModel : INotifyPropertyChanged
    method EncodingErrorViewModel (line 93) | public EncodingErrorViewModel(List<string> selectedDocuments)
    method LoadData (line 104) | public void LoadData()
    method SearchCommandExecute (line 119) | private void SearchCommandExecute()
    method CloseCommandExecute (line 127) | private void CloseCommandExecute()
    method ConvertCommandExecute (line 132) | private void ConvertCommandExecute()
    method ConvertFileToUTF8 (line 146) | private void ConvertFileToUTF8(string file)
    method GetEncoding (line 154) | private Encoding GetEncoding(string fileName)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/FeedbackViewModel.cs
  class FeedbackViewModel (line 7) | public class FeedbackViewModel
    method OpenGitHubFeedback (line 45) | private void OpenGitHubFeedback()
    method OpenWebsiteFeedback (line 50) | private void OpenWebsiteFeedback()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/FindToolWindowViewModel.cs
  class FindToolWindowViewModel (line 21) | public class FindToolWindowViewModel : FindController
    method FindToolWindowViewModel (line 54) | public FindToolWindowViewModel(FindToolWindowView findToolWindowView)
    method AddPinOnRightPlace (line 63) | public void AddPinOnRightPlace(AutoCompleteHistoryModel autoCompleteHi...
    method OnListChange (line 84) | public void OnListChange(object sender, TextChangedEventArgs e)
    method OpenToolWindow (line 110) | public void OpenToolWindow() { }
    method RunQuery (line 112) | public void RunQuery()
    method SelectCommandToRun (line 122) | public void SelectCommandToRun(IViewMatcher viewMatcher)
    method RunCommandFromView (line 128) | public void RunCommandFromView()
    method GetASTMatchersWithHistory (line 138) | private List<AutoCompleteHistoryModel> GetASTMatchersWithHistory()
    method Swap (line 150) | private void Swap<T>(IList<T> list, int indexA, int indexB)
    method AddMatcherInHistory (line 157) | private void AddMatcherInHistory()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/FolderExplorerViewModel.cs
  class FolderExplorerViewModel (line 14) | public class FolderExplorerViewModel : CommonSettingsFunctionality, INot...
    method FolderExplorerViewModel (line 27) | public FolderExplorerViewModel(FolderExplorerView folderExplorerView, ...
    method SetLLVM (line 78) | public void SetLLVM()
    method GetFolderPath (line 109) | public void GetFolderPath()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/FormatSettingsViewModel.cs
  class FormatSettingsViewModel (line 13) | public class FormatSettingsViewModel : CommonSettingsFunctionality, INot...
    method FormatSettingsViewModel (line 28) | public FormatSettingsViewModel()
    method OpenClangFormatEditor (line 108) | private void OpenClangFormatEditor()
    method UpdateFileExtensions (line 124) | private void UpdateFileExtensions()
    method UpdateFilesToIgnore (line 130) | private void UpdateFilesToIgnore()
    method UpdateAssumeFilename (line 136) | private void UpdateAssumeFilename()
    method UpdateCustomExecutable (line 142) | private void UpdateCustomExecutable()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/InputDataViewModel.cs
  class InputDataViewModel (line 13) | public class InputDataViewModel : CommonSettingsFunctionality, INotifyPr...
    method InputDataViewModel (line 32) | public InputDataViewModel(string content, bool showFilesPicker = false...
    method InputDataViewModel (line 39) | public InputDataViewModel() { }
    method ShowViewDialog (line 122) | public void ShowViewDialog()
    method PickFile (line 128) | private void PickFile()
    method PickFolder (line 140) | private void PickFolder()
    method DeleteInput (line 146) | public void DeleteInput(int index)
    method AddInput (line 154) | private void AddInput()
    method IsDuplicate (line 182) | private bool IsDuplicate(string element) => Inputs.FirstOrDefault(mode...
    method CreateInputsCollection (line 184) | private void CreateInputsCollection(string content)
    method AddNewElement (line 194) | private void AddNewElement(string newElement)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/InputMultipleDataViewModel.cs
  class InputMultipleDataViewModel (line 3) | public class InputMultipleDataViewModel
    method InputMultipleDataViewModel (line 13) | public InputMultipleDataViewModel(string input)
    method InputMultipleDataViewModel (line 19) | public InputMultipleDataViewModel()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/LicenseViewModel.cs
  class LicenseViewModel (line 10) | public class LicenseViewModel
    method LicenseViewModel (line 25) | public LicenseViewModel() { }
    method LicenseViewModel (line 27) | public LicenseViewModel(LicenseView view)
    method CommercialLicenceExecute (line 72) | public void CommercialLicenceExecute()
    method PersonalLicenceExecute (line 78) | public void PersonalLicenceExecute()
    method TrialLicenceExecute (line 83) | public void TrialLicenceExecute()
    method ShowLoginView (line 98) | public void ShowLoginView()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/LlvmSettingsViewModel.cs
  class LlvmSettingsViewModel (line 15) | public class LlvmSettingsViewModel : CommonSettingsFunctionality, INotif...
    method LlvmSettingsViewModel (line 35) | public LlvmSettingsViewModel(LlvmSettingsView view)
    method DownloadCommand (line 101) | public void DownloadCommand(int elementIndex)
    method CancelCommand (line 109) | public void CancelCommand()
    method UninstallCommand (line 117) | public void UninstallCommand(int elementIndex)
    method BrowseForLLVM (line 124) | public void BrowseForLLVM()
    method InstallFinished (line 135) | private void InstallFinished(object sender, EventArgs e)
    method UninstallFinished (line 142) | private void UninstallFinished(object sender, EventArgs e)
    method OperationCanceled (line 156) | private void OperationCanceled()
    method IntitializeView (line 161) | private void IntitializeView()
    method DownloadProgressChanged (line 186) | private void DownloadProgressChanged(object sender, DownloadProgressCh...
    method SetSelectedVersionIfEmpty (line 191) | private void SetSelectedVersionIfEmpty()
    method ResetVersionUsedIfRequired (line 200) | private void ResetVersionUsedIfRequired()
    method InsertVersionToInstalledLlvms (line 208) | private void InsertVersionToInstalledLlvms()
    method DisableButtons (line 221) | private void DisableButtons(int elementIndex)
    method ResetButtonsState (line 229) | private void ResetButtonsState()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/LoginViewModel.cs
  class LoginViewModel (line 15) | public class LoginViewModel : INotifyPropertyChanged, IDataErrorInfo
    method LoginViewModel (line 76) | public LoginViewModel() { }
    method LoginViewModel (line 78) | public LoginViewModel(LoginView view)
    method ForgotPasswordAction (line 130) | public void ForgotPasswordAction()
    method SignUpAction (line 135) | public void SignUpAction()
    method SignInActionAsync (line 140) | public async Task SignInActionAsync()
    method IsEmailAddressValid (line 179) | private bool IsEmailAddressValid(out string errorMessage)
    method SetLoginButtonState (line 193) | private void SetLoginButtonState(bool isEnabled, string background, st...
    method OnEmailValidation (line 203) | private void OnEmailValidation()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/ReleaseNotesViewModel.cs
  class ReleaseNotesViewModel (line 8) | public class ReleaseNotesViewModel
    method ReleaseNotesViewModel (line 20) | public ReleaseNotesViewModel(ReleaseNotesView release)
    method LogInAction (line 55) | private void LogInAction()
    method OpenBlogAction (line 62) | private void OpenBlogAction()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/SettingsViewModel.cs
  class SettingsViewModel (line 9) | public class SettingsViewModel
    method SettingsViewModel (line 25) | public SettingsViewModel(SettingsView settingsView, bool showFooter)
    method OnClosed (line 53) | public void OnClosed(object sender, EventArgs e)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/TidyChecksViewModel.cs
  class TidyChecksViewModel (line 17) | public class TidyChecksViewModel : INotifyPropertyChanged
    method TidyChecksViewModel (line 34) | public TidyChecksViewModel(TidyChecksView view)
    method MultipleStateChange (line 145) | public void MultipleStateChange(bool checkValue)
    method DeactivateDefaultsToggle (line 160) | public void DeactivateDefaultsToggle()
    method OpenBrowser (line 168) | public void OpenBrowser(string tidyCheckName)
    method CreateFlagUri (line 174) | private string CreateFlagUri(string tidyCheckName)
    method LoadChecks (line 192) | private void LoadChecks()
    method InitializeChecks (line 217) | private void InitializeChecks()
    method SetDefaultsToggle (line 225) | private void SetDefaultsToggle(bool value)
    method SetInitialStateDefaultsToggle (line 239) | private void SetInitialStateDefaultsToggle()
    method EnableDisableAllChecks (line 265) | private void EnableDisableAllChecks(bool value)
    method SetInitialStateEnableAllToggle (line 280) | private void SetInitialStateEnableAllToggle(IEnumerable<TidyCheckModel...
    method SetStateForEnableDisableAllButton (line 308) | private void SetStateForEnableDisableAllButton(object sender, BoolEven...
    method OnClosed (line 313) | private void OnClosed(object sender, EventArgs e)
    method GetSelectedChecks (line 321) | private string GetSelectedChecks()
    method ResetSearchField (line 336) | private void ResetSearchField()
    method SetDefaultChecks (line 341) | private void SetDefaultChecks()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/TidySettingsViewModel.cs
  class TidySettingsViewModel (line 14) | public class TidySettingsViewModel : CommonSettingsFunctionality, INotif...
    method TidySettingsViewModel (line 33) | public TidySettingsViewModel()
    method UpdateWarningVisibility (line 146) | private void UpdateWarningVisibility()
    method UpdateHeaderFilter (line 156) | private void UpdateHeaderFilter()
    method UpdateCustomChecks (line 164) | private void UpdateCustomChecks()
    method UpdateCustomExecutable (line 170) | private void UpdateCustomExecutable()
    method UpdateCompilationDatabase (line 176) | private void UpdateCompilationDatabase()
    method UpdatePredefinedChecks (line 186) | private void UpdatePredefinedChecks()
    method ExportTidyConfig (line 192) | private void ExportTidyConfig()
    method OpenChecksWindow (line 207) | private void OpenChecksWindow()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/TidyToolWindowViewModel.cs
  class TidyToolWindowViewModel (line 21) | public class TidyToolWindowViewModel : CommonSettingsFunctionality, INot...
    method TidyToolWindowViewModel (line 118) | public TidyToolWindowViewModel(TidyToolWindowView tidyToolWindowView)
    method OpenTidyToolWindow (line 140) | public void OpenTidyToolWindow(List<string> filesPath)
    method UpdateViewModel (line 147) | public void UpdateViewModel(List<string> filesPath)
    method TidyAllFilesAsync (line 163) | private async Task TidyAllFilesAsync(List<string> paths = null)
    method CheckOrUncheckAll (line 170) | public void CheckOrUncheckAll()
    method FixAllFilesAsync (line 175) | public async Task FixAllFilesAsync(FileModel file = null)
    method UpdateCheckedNumber (line 185) | public void UpdateCheckedNumber(FileModel file)
    method DiffFile (line 191) | public void DiffFile(FileModel file)
    method RemoveAllFiles (line 200) | private void RemoveAllFiles()
    method DiscardAllFiles (line 216) | private void DiscardAllFiles()
    method ThemeChangeEvent (line 238) | public void ThemeChangeEvent(ThemeChangedEventArgs e)
    method RefreshOnWindowUpdate (line 250) | private void RefreshOnWindowUpdate()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/ToggleMultipleDataViewModel.cs
  class ToggleMultipleDataViewModel (line 8) | public class ToggleMultipleDataViewModel
    method ToggleMultipleDataViewModel (line 27) | public ToggleMultipleDataViewModel(List<ToggleModel> input)
    method ToggleMultipleDataViewModel (line 33) | public ToggleMultipleDataViewModel()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/ViewModels/TrialExpiredViewModel.cs
  class TrialExpiredViewModel (line 8) | public class TrialExpiredViewModel
    method TrialExpiredViewModel (line 32) | public TrialExpiredViewModel() { }
    method TrialExpiredViewModel (line 34) | public TrialExpiredViewModel(TrialExpiredView view)
    method CommercialLicenceExecute (line 64) | public void CommercialLicenceExecute()
    method PersonalLicenceExecute (line 70) | public void PersonalLicenceExecute()
    method ShowLoginView (line 79) | public void ShowLoginView()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/AboutSettingsView.xaml.cs
  class AboutSettingsView (line 9) | public partial class AboutSettingsView : UserControl
    method AboutSettingsView (line 11) | public AboutSettingsView()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/CMakeBetaWarning.xaml.cs
  class CMakeBetaWarning (line 9) | public partial class CMakeBetaWarning : Window
    method CMakeBetaWarning (line 14) | public CMakeBetaWarning()
    method ContinueButton_Click (line 19) | private void ContinueButton_Click(object sender, RoutedEventArgs e)
    method CheckBox_Checked (line 24) | private void CheckBox_Checked(object sender, RoutedEventArgs e)
    method CheckBox_Unchecked (line 30) | private void CheckBox_Unchecked(object sender, RoutedEventArgs e)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/CompilerSettingsView.xaml.cs
  class CompilerSettingsView (line 9) | public partial class CompilerSettingsView : UserControl, IView
    method CompilerSettingsView (line 11) | public CompilerSettingsView()
    method ResetView (line 18) | public void ResetView()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/Components/BuyNowFooter.xaml.cs
  class BuyNowFooter (line 8) | public partial class BuyNowFooter : UserControl
    method BuyNowFooter (line 10) | public BuyNowFooter()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/Components/InputList.xaml.cs
  class InputList (line 12) | public partial class InputList : UserControl
    method InputList (line 16) | public InputList()
    method DeleteButton_Click (line 96) | private void DeleteButton_Click(object sender, RoutedEventArgs e)
    method GetElementIndex (line 102) | private int GetElementIndex(FrameworkElement frameworkElement)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/Components/MessageBanner.xaml.cs
  class MessageBanner (line 9) | public partial class MessageBanner : UserControl
    method MessageBanner (line 11) | public MessageBanner()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/Components/ThreePieceButton.xaml.cs
  class ThreePieceButton (line 10) | public partial class ThreePieceButton : UserControl
    method ThreePieceButton (line 12) | public ThreePieceButton()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/Components/ThreePieceComponent.xaml.cs
  class ThreePieceComponent (line 10) | public partial class ThreePieceComponent : UserControl
    method ThreePieceComponent (line 12) | public ThreePieceComponent()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/DialogWindow.cs
  class DialogWindow (line 3) | public class DialogWindow : Microsoft.VisualStudio.PlatformUI.DialogWindow
    method DialogWindow (line 5) | public DialogWindow()
    method DialogWindow (line 10) | public DialogWindow(string helpTopic)
    method DialogWindow_KeyUp (line 16) | private void DialogWindow_KeyUp(object sender, System.Windows.Input.Ke...
    method InvokeDialogHelp (line 25) | protected override void InvokeDialogHelp()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/EncodingErrorView.xaml.cs
  class EncodingErrorView (line 9) | public partial class EncodingErrorView : Window
    method EncodingErrorView (line 11) | public EncodingErrorView(List<string> selectedFiles)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/FeedbackView.xaml.cs
  class FeedbackView (line 9) | public partial class FeedbackView : UserControl
    method FeedbackView (line 11) | public FeedbackView()
    method Hyperlink_SupportGmail (line 17) | private void Hyperlink_SupportGmail(object sender, System.Windows.Navi...

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/FindToolWindowView.xaml.cs
  class FindToolWindowView (line 18) | public partial class FindToolWindowView : UserControl
    method FindToolWindowView (line 22) | public FindToolWindowView()
    method OpenFindToolWindow (line 31) | public void OpenFindToolWindow() { }
    method RunQuery (line 33) | public void RunQuery()
    method MatchDefaultArgs_click (line 38) | private void MatchDefaultArgs_click(object sender, RoutedEventArgs e)
    method Hyperlink_Feedback (line 43) | private void Hyperlink_Feedback(object sender, System.Windows.Navigati...
    method ComboBox_Loaded (line 49) | private void ComboBox_Loaded(object sender, RoutedEventArgs e)
    method OnKeyDownHandler (line 56) | private void OnKeyDownHandler(object sender, KeyEventArgs e)
    method Pin_click (line 65) | private void Pin_click(object sender, RoutedEventArgs e)
    method OnListViewSelectionChanged (line 76) | private void OnListViewSelectionChanged(object sender, SelectionChange...
    method ComboBox_SelectionChanged (line 95) | private void ComboBox_SelectionChanged(object sender, RoutedEventArgs e)
    method Matcher_Click (line 105) | private void Matcher_Click(object sender, RoutedEventArgs e)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/FolderExplorerView.xaml.cs
  class FolderExplorerView (line 11) | public partial class FolderExplorerView : Window
    method FolderExplorerView (line 15) | public FolderExplorerView(List<LlvmModel> llvms, ObservableCollection<...

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/FormatEditorWarning.xaml.cs
  class FormatEditorWarning (line 9) | public partial class FormatEditorWarning : Window
    method FormatEditorWarning (line 11) | public FormatEditorWarning()
    method DownloadButton (line 16) | private void DownloadButton(object sender, RoutedEventArgs e)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/FormatSettingsView.xaml.cs
  class FormatSettingsView (line 9) | public partial class FormatSettingsView : UserControl, IView
    method FormatSettingsView (line 11) | public FormatSettingsView()
    method ResetView (line 18) | public void ResetView()
    method ComboBox_SelectionChanged (line 23) | private void ComboBox_SelectionChanged(object sender, SelectionChanged...

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/InputDataView.xaml.cs
  class InputDataView (line 8) | public partial class InputDataView : Window
    method InputDataView (line 12) | public InputDataView(InputDataViewModel inputDataViewModel)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/LicenseView.xaml.cs
  class LicenseView (line 8) | public partial class LicenseView : Window
    method LicenseView (line 10) | public LicenseView()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/LlvmSettingsView.xaml.cs
  class LlvmSettingsView (line 10) | public partial class LlvmSettingsView : UserControl, IView
    method LlvmSettingsView (line 14) | public LlvmSettingsView()
    method ResetView (line 23) | public void ResetView()
    method DownloadButton (line 29) | private void DownloadButton(object sender, RoutedEventArgs e)
    method CancelButton (line 35) | private void CancelButton(object sender, RoutedEventArgs e)
    method UninstallButton (line 40) | private void UninstallButton(object sender, RoutedEventArgs e)
    method GetElementIndex (line 46) | private int GetElementIndex(FrameworkElement frameworkElement)
    method LlvmSettingsViewLoaded (line 52) | private void LlvmSettingsViewLoaded(object sender, RoutedEventArgs e)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/LoginView.xaml.cs
  class LoginView (line 9) | public partial class LoginView : Window
    method LoginView (line 19) | public LoginView()
    method OnPasswordChanged (line 27) | private void OnPasswordChanged(object sender, RoutedEventArgs e)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/ReleaseNotesView.xaml.cs
  class ReleaseNotesView (line 9) | public partial class ReleaseNotesView : Window
    method ReleaseNotesView (line 13) | public ReleaseNotesView(bool wasShown)
    method Hyperlink_RequestNavigate (line 20) | private void Hyperlink_RequestNavigate(object sender, System.Windows.N...

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/SearchBoxView.xaml.cs
  class SearchBoxView (line 8) | public partial class SearchBoxView : UserControl
    method SearchBoxView (line 15) | public SearchBoxView()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/SettingsView.xaml.cs
  class SettingsView (line 10) | public partial class SettingsView : DialogWindow
    method SettingsView (line 12) | public SettingsView(bool showFooter)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/TidyChecksView.xaml.cs
  class TidyChecksView (line 11) | public partial class TidyChecksView : Window
    method TidyChecksView (line 15) | public TidyChecksView()
    method ToggleButton_Checked (line 24) | private void ToggleButton_Checked(object sender, RoutedEventArgs e)
    method ToggleButton_Unchecked (line 30) | private void ToggleButton_Unchecked(object sender, RoutedEventArgs e)
    method OpenDescription (line 36) | private void OpenDescription(object sender, RoutedEventArgs e)
    method GetElementIndex (line 43) | private int GetElementIndex(FrameworkElement frameworkElement)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/TidySettingsView.xaml.cs
  class TidySettingsView (line 9) | public partial class TidySettingsView : UserControl, IView
    method TidySettingsView (line 11) | public TidySettingsView()
    method ResetView (line 18) | public void ResetView()
    method ComboBox_SelectionChanged (line 23) | private void ComboBox_SelectionChanged(object sender, SelectionChanged...

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/TidyToolWindowView.xaml.cs
  class TidyToolWindowView (line 14) | public partial class TidyToolWindowView : UserControl
    method TidyToolWindowView (line 18) | public TidyToolWindowView()
    method UpdateView (line 25) | public void UpdateView(List<string> filesPath)
    method OpenTidyToolWindow (line 30) | public void OpenTidyToolWindow(List<string> filesPath)
    method DiffButton (line 35) | private void DiffButton(object sender, RoutedEventArgs e)
    method FixButton (line 45) | private void FixButton(object sender, RoutedEventArgs e)
    method CheckAll (line 55) | private void CheckAll(object sender, RoutedEventArgs e)
    method CheckBox_Click (line 59) | private void CheckBox_Click(object sender, RoutedEventArgs e)
    method ListViewItem_MouseDoubleClick (line 69) | private void ListViewItem_MouseDoubleClick(object sender, MouseButtonE...

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/ToolWindows/FindToolWindow.cs
  class FindToolWindow (line 12) | [Guid(WindowGuidString)]
    method FindToolWindow (line 25) | public FindToolWindow() : base()
    method OpenFindToolWindow (line 38) | public void OpenFindToolWindow(List<string> filesPath)
    method RunQuery (line 44) | public void RunQuery()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/ToolWindows/TidyToolWindow.cs
  class TidyToolWindow (line 12) | [Guid(WindowGuidString)]
    method TidyToolWindow (line 26) | public TidyToolWindow() : base()
    method UpdateToolWindow (line 41) | public void UpdateToolWindow(List<string> filesPath)
    method OpenTidyToolWindow (line 47) | public void OpenTidyToolWindow(List<string> filesPath)

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/Views/TrialExpiredView.xaml.cs
  class TrialExpiredView (line 8) | public partial class TrialExpiredView : Window
    method TrialExpiredView (line 10) | public TrialExpiredView()

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/WebApi/WebApiUrl.cs
  class WebApiUrl (line 3) | public static class WebApiUrl

FILE: ClangPowerTools/ClangPowerToolsShared/MVVM/XmlSerializer.cs
  class XmlSerializer (line 6) | public class XmlSerializer
    method SerializeToFile (line 10) | public void SerializeToFile(string aFilePath, object obj)
    method DeserializeFromFile (line 26) | public T DeserializeFromFile<T>(string aFilePath)

FILE: ClangPowerTools/ClangPowerToolsShared/Output/OutputContentModel.cs
  class OutputContentModel (line 5) | public class OutputContentModel

FILE: ClangPowerTools/ClangPowerToolsShared/Output/OutputProcessor.cs
  class OutputProcessor (line 14) | public class OutputProcessor
    method ProcessData (line 31) | public int ProcessData(string aMessage, IVsHierarchy aHierarchy, Outpu...
    method FindMatchFinishKeyword (line 76) | public bool FindMatchFinishKeyword(string text)
    method GetOutputAndErrors (line 86) | private void GetOutputAndErrors(string aText, IVsHierarchy aHierarchy,
    method GetDetectedError (line 104) | private TaskErrorModel GetDetectedError(IVsHierarchy aHierarchy, Match...
    method GetOutput (line 112) | private string GetOutput(ref string aText, string aSearchedSubstring)
    method GetJsonFilePath (line 125) | private string GetJsonFilePath(Match match) => match.Groups[1].Value;

FILE: ClangPowerTools/ClangPowerToolsShared/Output/OutputWindowBuilder.cs
  class OutputWindowBuilder (line 9) | public class OutputWindowBuilder : IBuilder<OutputWindowModel>
    method OutputWindowBuilder (line 36) | public OutputWindowBuilder(AsyncPackage aPackage, IVsOutputWindow aVsO...
    method Build (line 49) | public void Build()
    method GetResult (line 74) | public OutputWindowModel GetResult() => mOutputWindowModel;

FILE: ClangPowerTools/ClangPowerToolsShared/Output/OutputWindowConstants.cs
  class OutputWindowConstants (line 5) | public static class OutputWindowConstants

FILE: ClangPowerTools/ClangPowerToolsShared/Output/OutputWindowController.cs
  class OutputWindowController (line 23) | public class OutputWindowController
    method OutputWindowController (line 62) | public OutputWindowController()
    method Initialize (line 72) | public void Initialize(AsyncPackage aPackage, IVsOutputWindow aVsOutpu...
    method ClearPanel (line 81) | public void ClearPanel(object sender, ClearEventArgs e) => Clear();
    method Clear (line 83) | public void Clear()
    method Show (line 95) | public void Show()
    method Write (line 113) | public void Write(string aMessage)
    method Write (line 124) | public void Write(object sender, ClangCommandMessageEventArgs e)
    method OnFileHierarchyChanged (line 134) | protected virtual void OnFileHierarchyChanged(object sender, VsHierarc...
    method GetFilesFromOutput (line 145) | public void GetFilesFromOutput(string output)
    method OutputDataReceived (line 160) | public void OutputDataReceived(object sender, DataReceivedEventArgs e)
    method OutputDataErrorReceived (line 207) | public void OutputDataErrorReceived(object sender, DataReceivedEventAr...
    method ClosedDataConnection (line 232) | public void ClosedDataConnection(object sender, EventArgs e)
    method OnFileHierarchyDetected (line 275) | public void OnFileHierarchyDetected(object sender, VsHierarchyDetected...
    method OnErrorDetected (line 282) | public void OnErrorDetected(object sender, EventArgs e)
    method WriteMatchesNr (line 307) | public void WriteMatchesNr()
    method ResetMatchesNr (line 312) | public void ResetMatchesNr()
    method OnEncodingErrorDetected (line 317) | public void OnEncodingErrorDetected(object sender, EventArgs e)

FILE: ClangPowerTools/ClangPowerToolsShared/Output/OutputWindowModel.cs
  class OutputWindowModel (line 9) | public class OutputWindowModel

FILE: ClangPowerTools/ClangPowerToolsShared/Script/ClangTidyModeParametersFactory.cs
  class ClangTidyModeParametersFactory (line 3) | public class ClangTidyModeParametersFactory
    method Create (line 16) | public string Create(string aTidyMode, ref bool aUseClangTidyFileFlag)
    method UseClangConfigFile (line 38) | private string UseClangConfigFile(ref bool aUseClangTidyFileFlag)
    method GetChecks (line 49) | private string GetChecks()

FILE: ClangPowerTools/ClangPowerToolsShared/Script/GenericScriptBuilder.cs
  class GenericScriptBuilder (line 16) | public class GenericScriptBuilder : IBuilder<string>
    method GenericScriptBuilder (line 38) | public GenericScriptBuilder(string aVsEdition, string aVsVersion, int ...
    method Build (line 59) | public void Build()
    method GetResult (line 84) | public string GetResult() => mScript;
    method GetGeneralParameters (line 100) | private string GetGeneralParameters()
    method GetClangFlagsOption (line 141) | private string GetClangFlagsOption()
    method TransformInPowerShellArray (line 157) | private string TransformInPowerShellArray(string aParametersList) =>
    method GetTidyParameters (line 165) | private string GetTidyParameters()
    method AppendClangTidyTypeOption (line 211) | private string AppendClangTidyTypeOption(string aParameters)
    method GetHeaderFiltersOption (line 223) | private string GetHeaderFiltersOption()
    method GetTidyChecks (line 233) | private string GetTidyChecks(TidySettingsModel tidyModel)
    method GetCompilationDatabaseOption (line 255) | private string GetCompilationDatabaseOption(string compilationDatabase)

FILE: ClangPowerTools/ClangPowerToolsShared/Script/ItemRelatedScriptBuilder.cs
  class ItemRelatedScriptBuilder (line 9) | public class ItemRelatedScriptBuilder : IBuilder<string>
    method ItemRelatedScriptBuilder (line 38) | public ItemRelatedScriptBuilder(IItem aItem) => mItem = aItem;
    method ItemRelatedScriptBuilder (line 40) | public ItemRelatedScriptBuilder(IItem aItem, bool jsonCompilationDb) :...
    method ItemRelatedScriptBuilder (line 45) | public ItemRelatedScriptBuilder(List<IItem> itemsCollection, bool json...
    method GetResult (line 62) | public string GetResult() => mScript;
    method Build (line 68) | public void Build()
    method CreateScriptForSingleFile (line 88) | private void CreateScriptForSingleFile()
    method CreateScriptForFilesCollection (line 100) | private void CreateScriptForFilesCollection()
    method CreateScriptForOpenFolderProjectItem (line 112) | private void CreateScriptForOpenFolderProjectItem()
    method CreateScriptForProjectItem (line 120) | private void CreateScriptForProjectItem()
    method CreateScriptForProjectItemCollection (line 137) | private void CreateScriptForProjectItemCollection()
    method CreateScriptForProject (line 154) | private void CreateScriptForProject()

FILE: ClangPowerTools/ClangPowerToolsShared/Script/PowerShellWrapper.cs
  class PowerShellWrapper (line 17) | public static class PowerShellWrapper
    method StartProcess (line 34) | public static bool StartProcess(string aScript, string aExecutablePath...
    method Invoke (line 134) | public static bool Invoke(string aScript, bool aRunAsPwsh = false)
    method EndInteractiveMode (line 149) | public static void EndInteractiveMode()
    method InvokeInteractiveMode (line 162) | public static void InvokeInteractiveMode(KeyValuePair<string, string> ...
    method InvokePassSequentialCommands (line 235) | public static void InvokePassSequentialCommands(Dictionary<string, str...
    method GetNumberOfProcessors (line 325) | public static int GetNumberOfProcessors()
    method CreatePathEnvironmentVariable (line 332) | public static string CreatePathEnvironmentVariable(string aEnvPath = "")
    method DownloadTool (line 383) | public static string DownloadTool(string tool)
    method GetFilePathFromEnviromentVar (line 447) | public static string GetFilePathFromEnviromentVar(string aFile)
    method GetLLVMScriptFilePath (line 478) | private static string GetLLVMScriptFilePath()
    method GetCustomTidyPath (line 486) | private static string GetCustomTidyPath()
    method GetClangBuildScriptPath (line 493) | public static string GetClangBuildScriptPath()
    method GetUsedLlvmVersionPath (line 501) | private static string GetUsedLlvmVersionPath(string llvmVersion)
    method ContainsLlvm (line 507) | private static bool ContainsLlvm(string input)

FILE: ClangPowerTools/ClangPowerToolsShared/Script/RunModeScriptBuilder.cs
  class RunModeScriptBuilder (line 7) | public class RunModeScriptBuilder : IBuilder<string>
    method Build (line 29) | public void Build()
    method GetResult (line 39) | public string GetResult() => mScript;
    method GetScriptFilePath (line 55) | protected string GetScriptFilePath()

FILE: ClangPowerTools/ClangPowerToolsShared/Script/RunningProcesses.cs
  class RunningProcesses (line 10) | public class RunningProcesses
    method RunningProcesses (line 24) | public RunningProcesses(bool background = false)
    method Add (line 34) | public void Add(Process aProcess)
    method Add (line 44) | public void Add(Process aProcess, bool background = false)
    method Exists (line 52) | public bool Exists(bool backgroundRunners)
    method Kill (line 58) | public void Kill(bool background)
    method Kill (line 75) | public void Kill(Process process)
    method Remove (line 84) | public void Remove(Process process)
    method KillById (line 91) | public void KillById(int aId)
    method GetProcesses (line 104) | private List<Process> GetProcesses(bool background)
    method Clear (line 109) | private void Clear(List<Process> processes)
    method KillProcessAndChildren (line 115) | private static void KillProcessAndChildren(int aPid)

FILE: ClangPowerTools/ClangPowerToolsShared/Script/ScriptConstants.cs
  class ScriptConstants (line 5) | public class ScriptConstants

FILE: ClangPowerTools/ClangPowerToolsShared/Script/VerbosityScriptBuilder.cs
  class VerbosityScriptBuilder (line 6) | public class VerbosityScriptBuilder : IBuilder<string>
    method VerbosityScriptBuilder (line 11) | public VerbosityScriptBuilder(string aVerbosity) => mVerbosity =
    method Build (line 14) | public void Build()
    method GetResult (line 35) | public string GetResult()

FILE: ClangPowerTools/ClangPowerToolsShared/Services/PowerShellService.cs
  class PowerShellService (line 13) | public class PowerShellService
    method UpdateScriptsAsync (line 26) | public async Task UpdateScriptsAsync()
    method DownloadScriptAsync (line 37) | private async Task DownloadScriptAsync(string fileUri, string fileName)
    method ReplaceScripts (line 53) | private void ReplaceScripts()
    method ClearFilesAfterReplace (line 88) | private void ClearFilesAfterReplace()

FILE: ClangPowerTools/ClangPowerToolsShared/Services/VsServiceProvider.cs
  class VsServiceProvider (line 9) | public static class VsServiceProvider
    method Register (line 28) | public static void Register(Type aType, object aService) => mServices....
    method GetService (line 36) | public static object GetService(Type aType) => mServices[aType];
    method TryGetService (line 45) | public static bool TryGetService(Type aType, out object aService)

FILE: ClangPowerTools/ClangPowerToolsShared/SilentFile/SilentFileChangerBuilder.cs
  class SilentFileChangerBuilder (line 12) | public class SilentFileChangerBuilder : IBuilder<SilentFileChangerModel>
    method SilentFileChangerBuilder (line 30) | public SilentFileChangerBuilder(string aFileName, bool aReloadDocument)
    method Build (line 50) | public void Build()
    method GetResult (line 97) | public SilentFileChangerModel GetResult() => mSilentFileChangerModel;

FILE: ClangPowerTools/ClangPowerToolsShared/SilentFile/SilentFileChangerController.cs
  class SilentFileChangerController (line 15) | public class SilentFileChangerController : IDisposable
    method SilentFiles (line 41) | public void SilentFiles(IEnumerable<string> aFilesPath)
    method SilentFiles (line 57) | public void SilentFiles(Documents aDocuments)
    method Dispose (line 73) | public void Dispose()
    method GetNewSilentFileChanger (line 94) | private SilentFileChangerModel GetNewSilentFileChanger(string aFilePath)
    method Silent (line 109) | private void Silent(SilentFileChangerModel aSilentFileChanger)
    method Resume (line 119) | public void Resume(SilentFileChangerModel aSilentFileChanger)

FILE: ClangPowerTools/ClangPowerToolsShared/SilentFile/SilentFileChangerEqualityComparer.cs
  class SilentFileChangerEqualityComparer (line 6) | public class SilentFileChangerEqualityComparer : IEqualityComparer<Silen...
    method Equals (line 11) | public bool Equals(SilentFileChangerModel obj1, SilentFileChangerModel...
    method GetHashCode (line 23) | public int GetHashCode(SilentFileChangerModel obj)

FILE: ClangPowerTools/ClangPowerToolsShared/SilentFile/SilentFileChangerModel.cs
  class SilentFileChangerModel (line 5) | public class SilentFileChangerModel

FILE: ClangPowerTools/ClangPowerToolsShared/Squiggle/SquiggleErrorTag.cs
  class SquiggleErrorTag (line 5) | public class SquiggleErrorTag : ErrorTag
    method SquiggleErrorTag (line 7) | public SquiggleErrorTag(string type, string tooltip) : base(type, tool...

FILE: ClangPowerTools/ClangPowerToolsShared/Squiggle/SquiggleErrorTagger.cs
  class SquiggleErrorTagger (line 19) | public class SquiggleErrorTagger : ITagger<SquiggleErrorTag>
    method SquiggleErrorTagger (line 36) | public SquiggleErrorTagger(ITextBuffer sourceBuffer)
    method GetTags (line 49) | public IEnumerable<ITagSpan<SquiggleErrorTag>> GetTags(NormalizedSnaps...
    method CreateSquiggles (line 77) | private void CreateSquiggles()
    method CreateTagSpan (line 142) | private SquiggleModel CreateTagSpan(int start, int length, string tool...
    method LengthUntilGivenPosition (line 161) | private int LengthUntilGivenPosition(List<ITextSnapshotLine> lines)
    method FindTheBeginning (line 172) | private int FindTheBeginning(string text, int start, int iterationValu...
    method FindLength (line 188) | private int FindLength(string text, int start)
    method GetSquiggleValues (line 202) | private void GetSquiggleValues(List<ITextSnapshotLine> lines,

FILE: ClangPowerTools/ClangPowerToolsShared/Squiggle/SquiggleErrorTaggerProvider.cs
  class SquiggleErrorTaggerProvider (line 13) | [Export(typeof(IViewTaggerProvider))]
    method CreateTagger (line 30) | public ITagger<T> CreateTagger<T>(ITextView textView, ITextBuffer buff...

FILE: ClangPowerTools/ClangPowerToolsShared/Squiggle/SquiggleModel.cs
  class SquiggleModel (line 5) | public class SquiggleModel

FILE: ClangPowerTools/ClangPowerToolsShared/Squiggle/SquiggleViewModel.cs
  class SquiggleViewModel (line 5) | public class SquiggleViewModel

FILE: ClangPowerTools/ClangPowerToolsShared/Squiggle/SquigglesFactory.cs
  class SquigglesFactory (line 11) | public class SquigglesFactory
    method SquigglesFactory (line 29) | public SquigglesFactory(ITextBuffer sourceBuffer)
    method Create (line 38) | public void Create()
    method CreateTagSpan (line 100) | private SquiggleModel CreateTagSpan(int start, int length, string tool...
    method LengthUntilGivenPosition (line 112) | private int LengthUntilGivenPosition(List<ITextSnapshotLine> lines)
    method FindTheBeginning (line 123) | private int FindTheBeginning(string text, int start, int iterationValu...
    method FindLength (line 139) | private int FindLength(string text, int start)
    method GetSquiggleValues (line 153) | private void GetSquiggleValues(List<ITextSnapshotLine> lines,

FILE: ClangPowerTools/ClangPowerToolsShared/TextOperationsInterfaces/IDetector.cs
  type IDetector (line 5) | public interface IDetector
    method Detect (line 7) | bool Detect(string aText, string pattern, out Match aMatcheResult);

FILE: ClangPowerTools/ClangPowerToolsShared/TextOperationsInterfaces/ITextFormatter.cs
  type ITextFormatter (line 3) | public interface ITextFormatter
    method Format (line 5) | string Format(string aText, string aReplacement);

FILE: ClangPowerTools/ClangPowerToolsUnitTests/ClangCommandTests/IgnoreCompileCommandTests.cs
  class IgnoreCompileCommandTests (line 7) | [VsTestSettings(UIThread = true)]

FILE: ClangPowerTools/ClangPowerToolsUnitTests/ClangCommandTests/IgnoreFormatCommandTests.cs
  class IgnoreFormatCommandTests (line 7) | [VsTestSettings(UIThread = true)]

FILE: ClangPowerTools/ClangPowerToolsUnitTests/ClangCommandTests/ScriptTests.cs
  class ScriptTests (line 14) | [VsTestSettings(UIThread = true)]
    method CompileOnFile_CreateScript_Async (line 48) | [VsFact(Version = "2019")]
    method TidyOnFile_CreateScript_Async (line 68) | [VsFact(Version = "2019")]
    method TidyFixOnFile_CreateScript_Async (line 88) | [VsFact(Version = "2019")]
    method CompileOnProject_CreateScript_Async (line 113) | [VsFact(Version = "2019")]
    method TidyOnProject_CreateScript_Async (line 133) | [VsFact(Version = "2019")]
    method TidyFixOnProject_CreateScript_Async (line 154) | [VsFact(Version = "2019")]
    method LoadSolution (line 180) | private void LoadSolution()
    method CloseSolution (line 192) | private void CloseSolution()
    method CreateScript (line 201) | private string CreateScript(int commandId, string edition, string vers...
    method GetVisualStudioInfo (line 213) | private void GetVisualStudioInfo(out string edition, out string versio...

FILE: ClangPowerTools/ClangPowerToolsUnitTests/Constants/IgnoreCommand.cs
  class IgnoreCommand (line 5) | public class IgnoreCommand

FILE: ClangPowerTools/ClangPowerToolsUnitTests/PackageTests/AsyncPackageTests.cs
  class AsyncPackageTests (line 10) | public class AsyncPackageTests
    method LoadTestAsync (line 12) | [VsTheory(Version = "2019")]

FILE: ClangPowerTools/ClangPowerToolsUnitTests/Settings Tests/CompilerSettingsTests.cs
  class CompilerSettingsTests (line 5) | [VsTestSettings(UIThread = true)]
    method CompilerSettings_NotNull (line 8) | [VsFact(Version = "2019-")]
    method CompileFlags_ChangeValue_CompareViewToFile (line 21) | [VsFact(Version = "2019-")]
    method FilesToIgnore_ChangeValue_CompareViewToFile (line 39) | [VsFact(Version = "2019-")]
    method ProjectToIgnore_ChangeValue_CompareViewToFile (line 57) | [VsFact(Version = "2019-")]
    method AdditionalIncludes_ChangeValue_CompareViewToFile (line 75) | [VsFact(Version = "2019-")]
    method TreatWarningsAsErrors_ChangeValue_CompareViewToFile (line 93) | [VsFact(Version = "2019-")]
    method ContinueOnError_ChangeValue_CompareViewToFile (line 111) | [VsFact(Version = "2019-")]
    method ClangCompileAfterVsCompile_ChangeValue_CompareViewToFile (line 129) | [VsFact(Version = "2019-")]
    method VerboseMode_ChangeValue_CompareViewToFile (line 147) | [VsFact(Version = "2019-")]

FILE: ClangPowerTools/ClangPowerToolsUnitTests/Settings Tests/FormatSettingsTests.cs
  class FormatSettingsTests (line 5) | [VsTestSettings(UIThread = true)]
    method FormatSettings_NotNull (line 8) | [VsFact(Version = "2019-")]
    method FormatOnSave_ChangeValue_CompareViewToFile (line 21) | [VsFact(Version = "2019-")]
    method FileExtensions_ChangeValue_CompareViewToFile (line 39) | [VsFact(Version = "2019-")]
    method FilesToIgnore_ChangeValue_CompareViewToFile (line 58) | [VsFact(Version = "2019-")]
    method AssumeFilename_ChangeValue_CompareViewToFile (line 77) | [VsFact(Version = "2019-")]
    method FallbackStyle_ChangeValue_CompareViewToFile (line 96) | [VsFact(Version = "2019-")]
    method FormatStyle_ChangeValue_CompareViewToFile (line 115) | [VsFact(Version = "2019-")]
    method CustomExecutable_ChangeValue_CompareViewToFile (line 134) | [VsFact(Version = "2019-")]

FILE: ClangPowerTools/ClangPowerToolsUnitTests/Settings Tests/GeneralSettingsTests.cs
  class GeneralSettingsTests (line 5) | [VsTestSettings(UIThread = true)]
    method GeneralSettings_NotNull (line 8) | [VsFact(Version = "2019-")]
    method Version_ChangeValue_CompareViewToFile (line 21) | [VsFact(Version ="2019-")]

FILE: ClangPowerTools/ClangPowerToolsUnitTests/Settings Tests/TidySettingsTests.cs
  class TidySettingsTests (line 7) | [VsTestSettings(UIThread = true)]
    method TidySettings_NotNull (line 10) | [VsFact(Version = "2019-")]
    method FormatAfterTidy_ChangeValue_CompareViewToFile (line 23) | [VsFact(Version = "2019-")]
    method ClangTidyOnSave_ChangeValue_CompareViewToFile (line 41) | [VsFact(Version = "2019-")]
    method HeaderFilter_ChangeValue_CompareViewToFile (line 59) | [VsFact(Version = "2019-")]
    method ChecksFrom_ChangeValue_CompareViewToFile (line 77) | [VsFact(Version = "2019-")]
    method CustomExecutable_ChangeValue_CompareViewToFile (line 95) | [VsFact(Version = "2019-")]
    method PredefinedChecks_ChangeValue_CompareViewToFile (line 113) | [VsFact(Version = "2019-")]
    method CustomChecks_ChangeValue_CompareViewToFile (line 145) | [VsFact(Version = "2019-")]

FILE: ClangPowerTools/ClangPowerToolsUnitTests/VSVersionTests.cs
  class VsVersionTests (line 5) | [VsTestSettings(UIThread = true)]
    method RunVisualStudio2017 (line 16) | [VsFact(Version = "2017")]
    method RunVisualStudio2019 (line 22) | [VsFact(Version = "2019")]

FILE: ClangPowerTools/ClangPowerToolsUnitTests/VsServiceProviderTests.cs
  class VsServiceProviderTests (line 11) | [VsTestSettings(UIThread = true)]
    method DteService_SuccessfulRegistrationAsync (line 16) | [VsFact(Version = "2019")]
    method Dte2Service_SuccessfulRegistrationAsync (line 28) | [VsFact(Version = "2019")]
    method OutputWindowService_SuccessfulRegistrationAsync (line 40) | [VsFact(Version = "2019")]
    method VsStatusbarService_SuccessfulRegistrationAsync (line 53) | [VsFact(Version = "2019")]
    method RunningDocumentTableService_SuccessfulRegistrationAsync (line 66) | [VsFact(Version = "2019")]
    method FileChangeService_SuccessfulRegistrationAsync (line 78) | [VsFact(Version = "2019")]
    method SolutionService_SuccessfulRegistrationAsync (line 90) | [VsFact(Version = "2019")]
Condensed preview — 390 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,684K chars).
[
  {
    "path": ".gitattributes",
    "chars": 66,
    "preview": "# Auto detect text files and perform LF normalization\n* text=auto\n"
  },
  {
    "path": ".github/workflows/Build-ClangPowerTools.yml",
    "chars": 3359,
    "preview": "# This is a basic workflow to help you get started with Actions\n\nname: Build Clang Power Tools and generate vsix with Ad"
  },
  {
    "path": ".github/workflows/Run-ClangPowerTools-tests.yml",
    "chars": 935,
    "preview": "name: Run script tests\n\n# Controls when the workflow will run\non:\n  # Triggers the workflow on push or pull request even"
  },
  {
    "path": ".gitignore",
    "chars": 678,
    "preview": "## Ignore Visual Studio temporary files, build results, and\r\n## files generated by popular Visual Studio add-ons.\r\n\r\n# U"
  },
  {
    "path": "ClangPowerTools/Automation/full-llvm-update-instructions.md",
    "chars": 4752,
    "preview": "\n# Copilot recipe – Update clang-format & LLVM metadata\n\nWhen the user says something like:\n\n> Update clang-format and L"
  },
  {
    "path": "ClangPowerTools/Automation/get-tidy-checks-and-format.ps1",
    "chars": 2305,
    "preview": "param(\n    [string]$OutFile = \"input_checks.txt\",\n    [string]$Url     = \"https://clang.llvm.org/extra/clang-tidy/checks"
  },
  {
    "path": "ClangPowerTools/Automation/input_checks.txt",
    "chars": 18260,
    "preview": "abseil-cleanup-ctad\nabseil-duration-addition\nabseil-duration-comparison\nabseil-duration-conversion-cast\nabseil-duration"
  },
  {
    "path": "ClangPowerTools/Automation/update_clang-format.ps1",
    "chars": 4358,
    "preview": "<#\n.SYNOPSIS\n  Download and update clang-format.exe for a given LLVM version.\n\n.DESCRIPTION\n  - Downloads the official L"
  },
  {
    "path": "ClangPowerTools/CPTReleases/IncrementRevisionNumber.ps1",
    "chars": 1271,
    "preview": "param([Parameter(Mandatory=$true, HelpMessage=\"Increments revision number in manifest file\")][string] $loc)\n\n#Get versio"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/ClangPowerTools.csproj",
    "chars": 21522,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"17.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/ClangPowerTools.csproj.bak",
    "chars": 20635,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"17.0\" DefaultTargets=\"Build\" xmlns=\"http://schemas.micros"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/ClangPowerTools.vsct",
    "chars": 22114,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<CommandTable xmlns=\"http://schemas.microsoft.com/VisualStudio/2005-10-18/Comman"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/ClangPowerToolsPackage.cs",
    "chars": 4586,
    "preview": "using ClangPowerToolsShared.MVVM.Views.ToolWindows;\nusing Microsoft.VisualStudio;\nusing Microsoft.VisualStudio.Shell;\nus"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Properties/AssemblyInfo.cs",
    "chars": 1276,
    "preview": "using System.Reflection;\nusing System.Runtime.InteropServices;\n\n// General Information about an assembly is controlled "
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Properties/Resource.Designer.cs",
    "chars": 4713,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Properties/Resource.resx",
    "chars": 6379,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Tooling/v1/clang-build.ps1",
    "chars": 67930,
    "preview": "<#\n.SYNOPSIS\n    Compiles or tidies up code from Visual Studio .vcxproj project files.\n\n.DESCRIPTION\n    This PowerShel"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/get-header-references.ps1",
    "chars": 7235,
    "preview": "# line limit for scanning files for #include\n[int] $global:cpt_header_include_line_limit = 30\n\n# after the line limit, i"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/get-llvm-helper.ps1",
    "chars": 4535,
    "preview": "# This helper makes sure we have the LLVM tool we require present on disk.\n# If it's not available then we download it f"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/get-llvm.ps1",
    "chars": 989,
    "preview": "<#\n.SYNOPSIS\n    Downloads ready-to-use one or more LLVM binaries, if not already available on system.\n\n.DESCRIPTION\n   "
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/io.ps1",
    "chars": 13543,
    "preview": "#Console IO\n# ------------------------------------------------------------------------------------------------\nFunction "
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/itemdefinition-context.ps1",
    "chars": 2639,
    "preview": "# Powershell code for creating item definition group contexts\n\n[System.Collections.Hashtable] $global:itemProperties = @"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/jsondb-export.ps1",
    "chars": 1301,
    "preview": "function JsonDB-Init()\n{\n  [string] $outputPath = (EnsureTrailingSlash( Get-SourceDirectory ))\n  $outputPath += \"compile"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/msbuild-expression-eval.ps1",
    "chars": 8001,
    "preview": "# REQUIRES io.ps1 to be included\n\n[string[]] $buildUtilPaths = @(\n    ,\"${Env:ProgramFiles}\\Microsoft Visual Studio\\2022"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/msbuild-project-cache-repository.ps1",
    "chars": 8459,
    "preview": "Set-Variable -name kCptCacheRepo -value \"$env:APPDATA\\ClangPowerTools\\CacheRepository\" -option Constant\n\nFunction Is-Cac"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/msbuild-project-data.ps1",
    "chars": 15809,
    "preview": "#-------------------------------------------------------------------------------------------------\n# PlatformToolset con"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/msbuild-project-load.ps1",
    "chars": 22540,
    "preview": "#-------------------------------------------------------------------------------------------------\n# Global variables\n\n#"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/Tooling/v1/psClang/visualstudio-detection.ps1",
    "chars": 7412,
    "preview": "# ------------------------------------------------------------------------------------------------\n# Helpers for locatin"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/VSPackage.resx",
    "chars": 6624,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<!--\n    VS SDK Notes: This resx file contains the resources that will be consum"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/cpt.config",
    "chars": 1047,
    "preview": "<cpt-config>\n\n  <!--\n\n  Clang Power Tools configuration file (SAMPLE)\n\n  Using cpt.config you can specify configuration "
  },
  {
    "path": "ClangPowerTools/ClangPowerTools/source.extension.vsixmanifest",
    "chars": 2902,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<PackageManifest Version=\"2.0.0\" xmlns=\"http://schemas.microsoft.com/developer/v"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools.aip",
    "chars": 7500,
    "preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<DOCUMENT Type=\"Advanced Installer\" CreateVersion=\"19.1\" version"
  },
  {
    "path": "ClangPowerTools/ClangPowerTools.sln",
    "chars": 4932,
    "preview": "\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 17\nVisualStudioVersion = 17.0.0\nMi"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsLib16/ClangPowerToolsLib16.csproj",
    "chars": 4546,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsLib16/Properties/AssemblyInfo.cs",
    "chars": 1408,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsLib16/Properties/Resource.Designer.cs",
    "chars": 4713,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsLib16/Properties/Resource.resx",
    "chars": 6379,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsLib17/ClangPowerToolsLib17.csproj",
    "chars": 4269,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbui"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsLib17/Properties/AssemblyInfo.cs",
    "chars": 1408,
    "preview": "using System.Reflection;\nusing System.Runtime.CompilerServices;\nusing System.Runtime.InteropServices;\n\n// General Infor"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsLib17/Properties/Resource.Designer.cs",
    "chars": 4713,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsLib17/Properties/Resource.resx",
    "chars": 6379,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Attributes/ClangCheckAttribute.cs",
    "chars": 273,
    "preview": "using System;\n\nnamespace ClangPowerTools\n{\n  [AttributeUsage(AttributeTargets.Property)]\n  public class ClangCheckAttri"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Attributes/ClangFormatPathAttribute.cs",
    "chars": 284,
    "preview": "using System;\n\nnamespace ClangPowerTools\n{\n  [AttributeUsage(AttributeTargets.Property)]\n  public class ClangFormatPath"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Attributes/ClangTidyPathAttribute.cs",
    "chars": 280,
    "preview": "using System;\n\nnamespace ClangPowerTools\n{\n  [AttributeUsage(AttributeTargets.Property)]\n  public class ClangTidyPathAt"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Builder/IAsyncBuilder.cs",
    "chars": 162,
    "preview": "using System.Threading.Tasks;\n\nnamespace ClangPowerTools.Builder\n{\n  public interface IBuilderAsync<T>\n  {\n    Task Bui"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Builder/IBuilder.cs",
    "chars": 115,
    "preview": "namespace ClangPowerTools.Builder\n{\n  public interface IBuilder<T>\n  {\n    void Build();\n    T GetResult();\n  }\n}\n"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/CMake/CMakeBuilder.cs",
    "chars": 3220,
    "preview": "using ClangPowerTools.Helpers;\nusing System.IO;\n\nnamespace ClangPowerTools.CMake\n{\n  public class CMakeBuilder\n  {\n    "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/ClangPowerToolsPackage.cs",
    "chars": 20358,
    "preview": "using ClangPowerTools.Commands;\nusing ClangPowerTools.Helpers;\nusing ClangPowerTools.MVVM.Views;\nusing ClangPowerTools."
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/ClangPowerToolsPackageImpl.cs",
    "chars": 19110,
    "preview": "using ClangPowerTools.Commands;\nusing ClangPowerTools.Helpers;\nusing ClangPowerTools.MVVM.Views;\nusing ClangPowerTools.O"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/ClangPowerToolsShared.projitems",
    "chars": 31260,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Propert"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/ClangPowerToolsShared.projitems.bak",
    "chars": 28696,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <Propert"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/ClangPowerToolsShared.shproj",
    "chars": 1046,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/BackgroundTidy/BackgroundTidy.cs",
    "chars": 3180,
    "preview": "using ClangPowerTools.CMake;\nusing ClangPowerTools.Helpers;\nusing ClangPowerTools.Services;\nusing EnvDTE;\nusing EnvDTE8"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/BackgroundTidy/DataProcessor.cs",
    "chars": 3058,
    "preview": "using ClangPowerTools.Builder;\nusing ClangPowerTools.Error;\nusing ClangPowerTools.Output;\nusing Microsoft.VisualStudio."
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/BackgroundTidy/PowerShellWrapperBackground.cs",
    "chars": 2849,
    "preview": "using System;\nusing System.Diagnostics;\nusing System.Linq;\n\nnamespace ClangPowerTools.Commands.BackgroundTidy\n{\n  publi"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/BasicCommand.cs",
    "chars": 736,
    "preview": "using System;\nusing Microsoft.VisualStudio.Shell;\n\nnamespace ClangPowerTools\n{\n  public abstract class BasicCommand\n  {"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/ClangCommand.cs",
    "chars": 17338,
    "preview": "using ClangPowerTools.CMake;\nusing ClangPowerTools.Commands;\nusing ClangPowerTools.Events;\nusing ClangPowerTools.Helper"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/CommandController.cs",
    "chars": 32034,
    "preview": "using ClangPowerTools.CMake;\nusing ClangPowerTools.Commands;\nusing ClangPowerTools.Commands.BackgroundTidy;\nusing Clang"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/CommandControllerInstance.cs",
    "chars": 301,
    "preview": "namespace ClangPowerTools\n{\n  public class CommandControllerInstance\n  {\n    public static CommandControllerInstance In"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/CommandIds.cs",
    "chars": 2061,
    "preview": "using System.Collections.Generic;\n\nnamespace ClangPowerTools\n{\n  public class CommandIds\n  {\n    #region Constants\n\n   "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/CommandUILocation.cs",
    "chars": 124,
    "preview": "namespace ClangPowerTools.Commands\n{\n  public enum CommandUILocation\n  {\n    Toolbar,\n    ContextMenu,\n    ViewMenu\n  }"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/CompileCommand.cs",
    "chars": 2916,
    "preview": "using Microsoft.VisualStudio.Shell;\nusing Microsoft.VisualStudio.Shell.Interop;\nusing System;\nusing System.ComponentMod"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/DocumentationHtmlCommand.cs",
    "chars": 2649,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.Commands;\nusing ClangPowerTools.Events;\nusing ClangPowerToolsShared.Helper"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/DocumentationMdCommand.cs",
    "chars": 2612,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.Commands;\nusing ClangPowerTools.Events;\nusing ClangPowerToolsShared.Helper"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/DocumentationYamlCommand.cs",
    "chars": 2816,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.Commands;\nusing ClangPowerTools.Events;\nusing ClangPowerToolsShared.Helper"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/FindCommand.cs",
    "chars": 3591,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.Commands;\nusing ClangPowerToolsShared.MVVM.Views.ToolWindows;\nusing Micros"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/FindCommandIds.cs",
    "chars": 229,
    "preview": "using System.Collections.Generic;\nusing System.Linq;\n\nnamespace ClangPowerToolsShared.Commands\n{\n  public static class "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/FindViewMenuCommand.cs",
    "chars": 2615,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.Commands;\nusing ClangPowerToolsShared.MVVM.Views.ToolWindows;\nusing Micros"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/FormatCommand.cs",
    "chars": 11924,
    "preview": "using ClangPowerTools.Events;\nusing ClangPowerTools.Helpers;\nusing ClangPowerTools.IgnoreActions;\nusing EnvDTE;\nusing M"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/IgnoreCommand.cs",
    "chars": 1781,
    "preview": "using ClangPowerTools.Helpers;\nusing Microsoft.VisualStudio.Shell;\nusing System;\nusing System.Collections.Generic;\nusin"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/IgnoreCompileCommand.cs",
    "chars": 3360,
    "preview": "using Microsoft.VisualStudio.Shell;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel.Design;"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/IgnoreFormatCommand.cs",
    "chars": 3105,
    "preview": "using Microsoft.VisualStudio.Shell;\nusing System;\nusing System.Collections.Generic;\nusing System.ComponentModel.Design;"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/JsonCompilationDatabaseCommand.cs",
    "chars": 3194,
    "preview": "using ClangPowerTools.Events;\nusing Microsoft.VisualStudio.Shell;\nusing System;\nusing System.ComponentModel.Design;\nusi"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/LookInMenu.cs",
    "chars": 408,
    "preview": "namespace ClangPowerToolsShared.Commands\n{\n  public enum LookInMenu\n  {\n    EntireSolution,\n    CurrentProject,\n    Cur"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/Models/CacheProjectsItemsModel.cs",
    "chars": 1600,
    "preview": "using ClangPowerTools;\nusing EnvDTE;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace ClangPowerToolsSha"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/OptimizeIncludesCommand.cs",
    "chars": 2790,
    "preview": "using Microsoft.VisualStudio.Shell;\nusing System.ComponentModel.Design;\nusing System;\nusing Task = System.Threading.Tas"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/RunController.cs",
    "chars": 581,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Text;"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/SettingsCommand.cs",
    "chars": 2593,
    "preview": "using ClangPowerTools.Commands.BackgroundTidy;\nusing ClangPowerTools.MVVM.LicenseValidation;\nusing ClangPowerTools.View"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/StopCommand.cs",
    "chars": 3747,
    "preview": "using ClangPowerTools.Helpers;\nusing ClangPowerTools.Services;\nusing ClangPowerToolsShared.Commands;\nusing EnvDTE;\nusin"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/TidyCommand.cs",
    "chars": 6411,
    "preview": "using ClangPowerTools.Events;\nusing ClangPowerTools.Helpers;\nusing ClangPowerTools.Services;\nusing ClangPowerTools.Sile"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Commands/VsCommands.cs",
    "chars": 318,
    "preview": "using System.Collections.Generic;\n\nnamespace ClangPowerTools.Commands\n{\n  public static class VsCommands\n  {\n    public"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Convertors/BooleanToGridLengthConverter.cs",
    "chars": 689,
    "preview": "using System;\nusing System.Globalization;\nusing System.Windows;\nusing System.Windows.Data;\n\nnamespace ClangPowerTools.C"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Convertors/BooleanToVisibilityConverter.cs",
    "chars": 751,
    "preview": "using System;\nusing System.Globalization;\nusing System.Windows;\nusing System.Windows.Data;\n\nnamespace ClangPowerTools.C"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Convertors/ClangFormatFallbackStyleConverter.cs",
    "chars": 1108,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Windows.Data;\n\nnamespace Clang"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Convertors/ClangFormatStyleConverter.cs",
    "chars": 965,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Windows.Data;\n\nnamespace Clang"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Convertors/ClangGeneralAdditionalIncludesConvertor.cs",
    "chars": 1856,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Windows.Data;\n\nnamespace Clang"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Convertors/ClangTidyHeaderFiltersConvertor.cs",
    "chars": 1848,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Windows.Data;\n\nnamespace Clang"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Convertors/ClangTidyUseChecksFromConvertor.cs",
    "chars": 1874,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\nusing System.Windows.Data;\n\nnamespace Clang"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Error/ErrorDetector.cs",
    "chars": 667,
    "preview": "using ClangPowerTools.MVVM.Constants;\nusing ClangPowerTools.Properties;\nusing ClangPowerTools.TextOperationsInterfaces;"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Error/ErrorFormatter.cs",
    "chars": 428,
    "preview": "using ClangPowerTools.TextOperationsInterfaces;\nusing System.Text.RegularExpressions;\n\nnamespace ClangPowerTools.Error\n"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Error/ErrorParserConstants.cs",
    "chars": 1246,
    "preview": "namespace ClangPowerTools\n{\n  public class ErrorParserConstants\n  {\n    #region Constants\n\n    public const string kCla"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Error/ErrorWindowController.cs",
    "chars": 2815,
    "preview": "using ClangPowerTools.Error;\nusing ClangPowerTools.Events;\nusing ClangPowerTools.Handlers;\nusing ClangPowerToolsShared."
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Error/TaskErrorModel.cs",
    "chars": 598,
    "preview": "using Microsoft.VisualStudio.Shell;\n\nnamespace ClangPowerTools\n{\n  public class TaskErrorModel : ErrorTask\n  {\n    #reg"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Error/TaskErrorModelBuilder.cs",
    "chars": 4095,
    "preview": "using ClangPowerTools.Builder;\nusing Microsoft.VisualStudio.Shell;\nusing Microsoft.VisualStudio.Shell.Interop;\nusing Sy"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Error/TaskErrorViewModel.cs",
    "chars": 351,
    "preview": "using System.Collections.Generic;\n\nnamespace ClangPowerTools.Error\n{\n  public static class TaskErrorViewModel\n  {\n    p"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Events/ActiveDocumentEventArgs.cs",
    "chars": 246,
    "preview": "namespace ClangPowerTools.Events\n{\n  public class ActiveDocumentEventArgs\n  {\n    public bool IsActiveDocument { get; s"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Events/BoolEventArgs.cs",
    "chars": 195,
    "preview": "using System;\n\nnamespace ClangPowerTools.Events\n{\n  public class BoolEventArgs : EventArgs\n  {\n    public bool Value { "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Events/ClangCommandEventArgs.cs",
    "chars": 346,
    "preview": "using System;\n\nnamespace ClangPowerTools.Events\n{\n  public class ClangCommandMessageEventArgs : EventArgs\n  {\n    publi"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Events/CleanErrorListEventArgs.cs",
    "chars": 135,
    "preview": "using System;\n\nnamespace ClangPowerTools.Events\n{\n  public class ClearEventArgs : EventArgs\n  {\n    public ClearEventAr"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Events/CloseDataConnectionEventArgs.cs",
    "chars": 136,
    "preview": "namespace ClangPowerTools.Events\n{\n  public class CloseDataConnectionEventArgs\n  {\n    public CloseDataConnectionEventA"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Events/CloseDataStreamingEventArgs.cs",
    "chars": 226,
    "preview": "namespace ClangPowerTools.Events\n{\n  public class CloseDataStreamingEventArgs\n  {\n    public bool IsStopped { get; set;"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Events/ErrorDetectedEventArgs.cs",
    "chars": 299,
    "preview": "using System.Collections.Generic;\n\nnamespace ClangPowerTools.Events\n{\n  public class ErrorDetectedEventArgs\n  {\n    pub"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Events/FormatCommandEventArgs.cs",
    "chars": 406,
    "preview": "using System;\n\nnamespace ClangPowerTools.Events\n{\n  public class FormatCommandEventArgs : EventArgs\n  {\n    public bool"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Events/HasEncodingErrorEventArgs.cs",
    "chars": 265,
    "preview": "using ClangPowerTools.Output;\n\nnamespace ClangPowerTools.Events\n{\n  public class HasEncodingErrorEventArgs\n  {\n    publ"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Events/JsonFilePathArgs.cs",
    "chars": 196,
    "preview": "namespace ClangPowerTools.Events\n{\n  public class JsonFilePathArgs\n  {\n    public string FilePath { get; set; }\n\n    pu"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Events/VsHierarchyDetectedEventArgs.cs",
    "chars": 292,
    "preview": "using Microsoft.VisualStudio.Shell.Interop;\n\nnamespace ClangPowerTools.Events\n{\n  public class VsHierarchyDetectedEvent"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Export Config/TidyConfigFile.cs",
    "chars": 5277,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\n\nnamespace ClangPowerTools\n{\n  pu"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Extensions/IntExtension.cs",
    "chars": 371,
    "preview": "namespace ClangPowerTools\n{\n  public static class IntExtension\n  {\n    public static int ForceInRange(this int number, "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Extensions/ObjectExtension.cs",
    "chars": 246,
    "preview": "using Newtonsoft.Json;\n\nnamespace ClangPowerTools.Extensions\n{\n  public static class ObjectExtension\n  {\n    public sta"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Extensions/StringExtension.cs",
    "chars": 2450,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Globalization;\n\nnamespace ClangPowerTools\n{\n  public stati"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Extensions/TaskExtensions.cs",
    "chars": 1624,
    "preview": "using System;\nusing System.Threading.Tasks;\n\nnamespace ClangPowerTools\n{\n  /// <summary>\n  /// Extension methods for Sy"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Files Operations/FileChangerWatcher.cs",
    "chars": 1786,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\n\nnamespace ClangPowerTools\n{\n  public class FileChange"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Files Operations/FileOpener.cs",
    "chars": 497,
    "preview": "using System.IO;\n\nnamespace ClangPowerTools\n{\n  public class FileOpener\n  {\n    #region Members\n\n    //private static r"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Files Operations/FilePathCollector.cs",
    "chars": 498,
    "preview": "using EnvDTE;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace ClangPowerTools\n{\n  public class FilePath"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/ActiveWindowProperties.cs",
    "chars": 502,
    "preview": "using ClangPowerTools.Services;\nusing EnvDTE;\nusing EnvDTE80;\n\nnamespace ClangPowerTools\n{\n  public static class Active"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/ApiUtility.cs",
    "chars": 473,
    "preview": "using System.Net.Http;\nusing System.Net.Http.Headers;\n\nnamespace ClangPowerTools\n{\n  public static class ApiUtility\n  {"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/AutomationUtil.cs",
    "chars": 3449,
    "preview": "using EnvDTE;\nusing Microsoft.VisualStudio;\nusing Microsoft.VisualStudio.Shell.Interop;\nusing System.Collections.Generi"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/ClangTidyCleaner.cs",
    "chars": 1778,
    "preview": "using System.Collections.Generic;\nusing System.IO;\n\nnamespace ClangPowerTools.Helpers\n{\n  public class ClangTidyCleaner"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/DocumentHandler.cs",
    "chars": 2502,
    "preview": "using ClangPowerTools.Services;\nusing EnvDTE;\nusing EnvDTE80;\nusing System.Collections.Generic;\nusing System.Linq;\nusin"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/FileSystem.cs",
    "chars": 3556,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.IO;\nusing System.Text;\nusing System.Windows.Forms;\n\nnamesp"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/FormatEditorUtility.cs",
    "chars": 976,
    "preview": "using System;\nusing System.Diagnostics;\nusing System.IO;\nusing System.Linq;\nusing System.Windows;\n\nnamespace ClangPower"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/GenerateDocumentation.cs",
    "chars": 2690,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.Commands;\nusing Microsoft.VisualStudio.Shell;\nusing System;\nusing System.C"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/JoinUtility.cs",
    "chars": 542,
    "preview": "using ClangPowerToolsShared.MVVM.Models.ToolWindowModels;\nusing EnvDTE;\n\nnamespace ClangPowerTools.Helpers\n{\n  public s"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/LaunchCompilationDbProgrammatically.cs",
    "chars": 2750,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.Commands;\nusing ClangPowerToolsShared.Commands;\nusing ClangPowerToolsShare"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/ManageEncoding.cs",
    "chars": 562,
    "preview": "using System.IO;\nusing System.Text;\n\nnamespace ClangPowerToolsShared.Helpers\n{\n  public class ManageEncoding\n  {\n    //"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/NetworkUtility.cs",
    "chars": 489,
    "preview": "using System;\nusing System.Net.Http;\nusing System.Threading.Tasks;\n\nnamespace ClangPowerTools.Helpers\n{\n  public class "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/PCHCleaner.cs",
    "chars": 694,
    "preview": "using System.IO;\n\nnamespace ClangPowerTools\n{\n  public class PCHCleaner\n  {\n    #region Members\n\n    private const stri"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/PackageUtility.cs",
    "chars": 814,
    "preview": "using System.IO;\nusing System.Linq;\nusing System.Reflection;\nusing System.Xml;\n\nnamespace ClangPowerTools.Helpers\n{\n  p"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/ProjectConfigurationHandler.cs",
    "chars": 1112,
    "preview": "using EnvDTE;\n\nnamespace ClangPowerTools\n{\n  public class ProjectConfigurationHandler\n  {\n    #region Public Methods\n\n "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/PropertyHandler.cs",
    "chars": 1249,
    "preview": "using System;\nusing System.Reflection;\n\nnamespace ClangPowerTools.Helpers\n{\n  public static class PropertyHandler\n  {\n "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/RegistryUtility.cs",
    "chars": 1842,
    "preview": "using System;\n\nnamespace ClangPowerTools.Helpers\n{\n  public class RegistryUtility\n  {\n    #region MyRegion\n\n    private"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/RunningDocTableEvents.cs",
    "chars": 3696,
    "preview": "using ClangPowerTools.Services;\nusing EnvDTE;\nusing EnvDTE80;\nusing Microsoft.VisualStudio;\nusing Microsoft.VisualStudi"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/ScriptGenerator.cs",
    "chars": 3791,
    "preview": "using ClangPowerTools.Builder;\nusing ClangPowerTools.Script;\nusing ClangPowerToolsShared.Commands.Models;\nusing System."
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/SettingsApi.cs",
    "chars": 3285,
    "preview": "using ClangPowerTools.Helpers;\nusing ClangPowerTools.MVVM.LicenseValidation;\nusing ClangPowerTools.MVVM.WebApi;\nusing S"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/SettingsPathBuilder.cs",
    "chars": 1923,
    "preview": "using System;\nusing System.IO;\n\nnamespace ClangPowerTools\n{\n  public class SettingsPathBuilder\n  {\n    #region Constant"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/SolutionInfo.cs",
    "chars": 4391,
    "preview": "using ClangPowerTools.Services;\nusing EnvDTE;\nusing EnvDTE80;\nusing Microsoft.VisualStudio.Shell.Interop;\nusing System."
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/StatusBarHandler.cs",
    "chars": 1945,
    "preview": "using ClangPowerTools.Handlers;\nusing ClangPowerTools.Services;\nusing EnvDTE;\nusing Microsoft.VisualStudio;\nusing Micro"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/UIUpdater.cs",
    "chars": 491,
    "preview": "using Microsoft.VisualStudio.Shell;\nusing System;\nusing Task = System.Threading.Tasks.Task;\n\nnamespace ClangPowerTools."
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/VsWindowController.cs",
    "chars": 978,
    "preview": "using EnvDTE;\n\nnamespace ClangPowerTools.Helpers\n{\n  /// <summary>\n  /// Contains the logic of managing Visual Studio w"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Helpers/Vsix.cs",
    "chars": 3016,
    "preview": "using EnvDTE;\nusing Microsoft.VisualStudio.Editor;\nusing Microsoft.VisualStudio.Shell;\nusing Microsoft.VisualStudio.She"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/IgnoreActions/IgnoreItem.cs",
    "chars": 3449,
    "preview": "using EnvDTE;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace ClangPowerTools.IgnoreActio"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Items/CurrentDocument.cs",
    "chars": 533,
    "preview": "using EnvDTE;\n\nnamespace ClangPowerTools.Items\n{\n  public class CurrentDocument : IItem\n  {\n    #region Members\n\n    pr"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Items/CurrentProject.cs",
    "chars": 578,
    "preview": "using EnvDTE;\n\nnamespace ClangPowerTools\n{\n  public class CurrentProject : IItem\n  {\n    #region Members\n\n    private P"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Items/CurrentProjectItem.cs",
    "chars": 592,
    "preview": "using EnvDTE;\n\nnamespace ClangPowerTools\n{\n  public class CurrentProjectItem : IItem\n  {\n    #region Members\n\n    priva"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Items/CurrentSolution.cs",
    "chars": 674,
    "preview": "using EnvDTE;\n\nnamespace ClangPowerTools\n{\n  class CurrentSolution : IItem\n  {\n    #region Members\n\n    private readonl"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Items/IItem.cs",
    "chars": 152,
    "preview": "namespace ClangPowerTools\n{\n  public interface IItem\n  {\n    string GetName();\n\n    string GetPath();\n\n    object GetOb"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/Items/ItemsCollector.cs",
    "chars": 9550,
    "preview": "using ClangPowerTools.Helpers;\nusing ClangPowerTools.Items;\nusing ClangPowerTools.Services;\nusing ClangPowerToolsShared."
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/.clang-format",
    "chars": 219,
    "preview": "# Format Style Options - Created with Clang Power Tools\n---\nBasedOnStyle: WebKit\nAccessModifierOffset: -1\nBreakBeforeBra"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/AutoCompleteHistory/ASTMatchers.cs",
    "chars": 17572,
    "preview": "using ClangPowerToolsShared.MVVM.ViewModels;\nusing System;\nusing System.Collections.Generic;\n\nnamespace ClangPowerTools"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/AutoCompleteHistory/AutoCompleteBehavior.cs",
    "chars": 9121,
    "preview": "using ClangPowerToolsShared.MVVM.Models.ToolWindowModels;\nusing System;\nusing System.Collections.Generic;\nusing System."
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/CollectionElementsCounter.cs",
    "chars": 2165,
    "preview": "using ClangPowerTools.Events;\nusing System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace ClangPowerT"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Command/RelayCommand.cs",
    "chars": 825,
    "preview": "using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusi"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Commands/FileCommand.cs",
    "chars": 3927,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.MVVM.Models;\nusing ClangPowerTools.Services;\nusing EnvDTE80;\nusing System;"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Commands/RelayCommand.cs",
    "chars": 838,
    "preview": "using System;\nusing System.Windows.Input;\n\nnamespace ClangPowerTools.MVVM.Commands\n{\n  public class RelayCommand : ICom"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Commands/TidyDiffCommand.cs",
    "chars": 2351,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.Services;\nusing EnvDTE80;\nusing System;\nusing System.Collections.Generic;\n"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Commands/VSThemeCommand.cs",
    "chars": 3023,
    "preview": "using ClangPowerToolsShared.MVVM.Constants;\nusing Microsoft.VisualStudio.Shell;\nusing System.Linq;\n\nnamespace ClangPowe"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/CommonSettingsFunctionality.cs",
    "chars": 4294,
    "preview": "using ClangPowerTools.Helpers;\nusing ClangPowerTools.MVVM.Models;\nusing Microsoft.Win32;\nusing System.Collections.Generi"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/CPPKeywords.cs",
    "chars": 1367,
    "preview": "using System.Collections.Generic;\n\nnamespace ClangPowerTools.MVVM.Constants\n{\n  public static class CPPKeywords\n  {\n   "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/ComboBoxConstants.cs",
    "chars": 2984,
    "preview": "using Newtonsoft.Json;\nusing Newtonsoft.Json.Converters;\nusing System;\nusing System.ComponentModel;\nusing System.Runtim"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/EncodingConstants.cs",
    "chars": 286,
    "preview": "namespace ClangPowerTools.MVVM.Constants\n{\n  public static class EncodingConstants\n  {\n    public const string InstallE"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/FormatEditorConstants.cs",
    "chars": 1001,
    "preview": "using System;\nusing System.IO;\n\nnamespace ClangPowerTools\n{\n  public static class FormatEditorConstants\n  {\n    public "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/IconResourceConstants.cs",
    "chars": 2605,
    "preview": "using System.IO;\n\nnamespace ClangPowerToolsShared.MVVM.Constants\n{\n  public static class IconResourceConstants\n  {\n    "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/LLVMVersionsAlternate.cs",
    "chars": 481,
    "preview": "using System.Collections.Generic;\n\nnamespace ClangPowerTools\n{\n  public static class LlvmVersionsAlternate\n  {\n    publ"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/LlvmConstants.cs",
    "chars": 807,
    "preview": "namespace ClangPowerTools.MVVM.Constants\n{\n  public static class LlvmConstants\n  {\n    public const string InstallExePa"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/LlvmVersions.cs",
    "chars": 461,
    "preview": "using System.Collections.Generic;\n\nnamespace ClangPowerTools\n{\n  public static class LlvmVersions\n  {\n    public static"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/MatchConstants.cs",
    "chars": 747,
    "preview": "using ClangPowerTools.Helpers;\nusing System.Collections.Generic;\n\nnamespace ClangPowerToolsShared.MVVM.Constants\n{\n  //"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/PathConstants.cs",
    "chars": 1669,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.Services;\nusing EnvDTE;\nusing EnvDTE80;\nusing System;\nusing System.IO;\n\nna"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/PsUpdaterConstants.cs",
    "chars": 563,
    "preview": "using System.Collections.Generic;\n\nnamespace ClangPowerTools.MVVM.Constants\n{\n  public static class PsUpdaterConstants\n"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/ResourceConstants.cs",
    "chars": 289,
    "preview": "namespace ClangPowerTools.MVVM.Constants\n{\n  public static class ResourceConstants\n  {\n    public const string Deselect"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/ThemeConstants.cs",
    "chars": 103,
    "preview": "namespace ClangPowerToolsShared.MVVM.Constants\n{\n  public enum VsThemes\n  {\n    Dark,\n    Light\n  }\n}\n"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/TidyConstants.cs",
    "chars": 722,
    "preview": "using System;\nusing System.IO;\n\nnamespace ClangPowerTools\n{\n  public static class TidyConstants\n  {\n\n    public static "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Constants/UIElementsConstants.cs",
    "chars": 309,
    "preview": "namespace ClangPowerToolsShared.MVVM.Constants\n{\n  public static class UIElementsConstants\n  {\n    public static string"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/AccountController.cs",
    "chars": 2054,
    "preview": "using ClangPowerTools.MVVM.WebApi;\nusing Newtonsoft.Json;\nusing System;\nusing System.IO;\nusing System.Net.Http;\nusing S"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/FindController.cs",
    "chars": 7233,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.Views;\nusing ClangPowerToolsShared.Commands;\nusing ClangPowerToolsShared.M"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/FormatEditorController.cs",
    "chars": 2504,
    "preview": "using ClangPowerTools.Helpers;\nusing System;\nusing System.ComponentModel.Design;\nusing System.Diagnostics;\nusing System"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/FreeTrialController.cs",
    "chars": 1976,
    "preview": "using ClangPowerTools.Helpers;\nusing System;\n\nnamespace ClangPowerTools.MVVM.Controllers\n{\n  public class FreeTrialCont"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/LicenseController.cs",
    "chars": 717,
    "preview": "using ClangPowerTools.MVVM.LicenseValidation;\nusing System.Threading.Tasks;\n\nnamespace ClangPowerTools.MVVM.Controllers"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/LlvmController.cs",
    "chars": 8093,
    "preview": "using ClangPowerTools.Helpers;\nusing ClangPowerTools.MVVM.Constants;\nusing ClangPowerTools.MVVM.Interfaces;\nusing Syste"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/LookInMenuController.cs",
    "chars": 756,
    "preview": "using System.Collections.Generic;\n\nnamespace ClangPowerToolsShared.Commands\n{\n  public static class LookInMenuControlle"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Controllers/TidyToolWindowController.cs",
    "chars": 12889,
    "preview": "using ClangPowerTools;\nusing ClangPowerTools.Commands;\nusing ClangPowerTools.Helpers;\nusing ClangPowerTools.MVVM.Models"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/FindToolWindowHandler.cs",
    "chars": 2389,
    "preview": "using ClangPowerTools;\nusing ClangPowerToolsShared.MVVM.Provider;\nusing ClangPowerToolsShared.MVVM.ViewModels;\nusing Ne"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Interfaces/IAccountValidator.cs",
    "chars": 95,
    "preview": "namespace ClangPowerTools.MVVM.Interfaces\n{\n  interface IAccountValidator: ILicense\n  {\n  }\n}\n"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Interfaces/IDownload.cs",
    "chars": 337,
    "preview": "using System.ComponentModel;\nusing System.Net;\n\nnamespace ClangPowerTools.MVVM.Interfaces\n{\n  public interface IDownloa"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Interfaces/IInstall.cs",
    "chars": 260,
    "preview": "using System;\n\nnamespace ClangPowerTools.MVVM.Interfaces\n{\n  public interface IInstall\n  {\n    void Install(string path"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Interfaces/ILicense.cs",
    "chars": 402,
    "preview": "using System.Threading.Tasks;\n\nnamespace ClangPowerTools.MVVM.Interfaces\n{\n  /// <summary>\n  /// Contains license valid"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Interfaces/IView.cs",
    "chars": 102,
    "preview": "namespace ClangPowerTools.MVVM.Interfaces\n{\n  interface IView\n  {\n    public void ResetView();\n  }\n}\n"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Interfaces/IViewMatche.cs",
    "chars": 231,
    "preview": "namespace ClangPowerToolsShared.MVVM.Interfaces\n{\n  public interface IViewMatcher\n  {\n    string Name { get; }\n    int "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/LicenseValidation/CommercialLicenseValidator.cs",
    "chars": 2197,
    "preview": "using ClangPowerTools.MVVM.Models;\nusing Newtonsoft.Json;\nusing System;\nusing System.Collections.Generic;\nusing System."
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/LicenseValidation/LicenseType.cs",
    "chars": 530,
    "preview": "using Newtonsoft.Json;\nusing Newtonsoft.Json.Converters;\nusing System;\nusing System.Runtime.Serialization;\n\nnamespace C"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/LicenseValidation/LocalLicenseValidator.cs",
    "chars": 542,
    "preview": "using ClangPowerTools.MVVM.Interfaces;\nusing System.Threading.Tasks;\n\nnamespace ClangPowerTools.MVVM.LicenseValidation\n"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/LicenseValidation/PersonalLicenseValidator.cs",
    "chars": 1541,
    "preview": "using ClangPowerTools.MVVM.Interfaces;\nusing ClangPowerTools.MVVM.WebApi;\nusing System;\nusing System.Collections.Generi"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/LicenseValidation/Token.cs",
    "chars": 1286,
    "preview": "using System.IO;\n\nnamespace ClangPowerTools.MVVM.LicenseValidation\n{\n  public class Token\n  {\n    #region Members\n\n    "
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/LlvmUri.cs",
    "chars": 697,
    "preview": "using ClangPowerTools.MVVM.Constants;\nusing System;\n\nnamespace ClangPowerTools.MVVM\n{\n  public class LlvmUri\n  {\n    pu"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Models/AccountApiModel.cs",
    "chars": 293,
    "preview": "namespace ClangPowerTools.MVVM.Models\n{\n  public class AccountApiModel\n  {\n    #region Properties\n\n    public string fi"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Models/AccountModel.cs",
    "chars": 417,
    "preview": "using ClangPowerTools.MVVM.LicenseValidation;\n\nnamespace ClangPowerTools.MVVM.Models\n{\n  public class AccountModel\n  {\n"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Models/CompilerSettingsModel.cs",
    "chars": 1580,
    "preview": "using System.ComponentModel;\nusing System.Windows.Forms;\n\nnamespace ClangPowerTools\n{\n  public class CompilerSettingsMo"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Models/FileModel.cs",
    "chars": 5235,
    "preview": "using ClangPowerToolsShared.MVVM.Commands;\nusing ClangPowerToolsShared.MVVM.Constants;\nusing ClangPowerToolsShared.MVVM"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Models/FormatSettingsModel.cs",
    "chars": 586,
    "preview": "namespace ClangPowerTools\n{\n  public class FormatSettingsModel\n  {\n    public string FileExtensions { get; set; } = Def"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Models/GeneralSettingsModel.cs",
    "chars": 131,
    "preview": "namespace ClangPowerTools\n{\n  public class GeneralSettingsModel\n  {\n    public string Version { get; set; } = string.Em"
  },
  {
    "path": "ClangPowerTools/ClangPowerToolsShared/MVVM/Models/InputDataModel.cs",
    "chars": 891,
    "preview": "using System.ComponentModel;\n\nnamespace ClangPowerTools.MVVM.Models\n{\n  public class InputDataModel : INotifyPropertyCh"
  }
]

// ... and 190 more files (download for full content)

About this extraction

This page contains the full source code of the Caphyon/clang-power-tools GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 390 files (1.5 MB), approximately 385.1k tokens, and a symbol index with 1374 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!